UI: scale region hide threshold by zoom level
authorCampbell Barton <ideasman42@gmail.com>
Fri, 3 Jan 2020 05:40:10 +0000 (16:40 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 3 Jan 2020 05:40:10 +0000 (16:40 +1100)
Resolves issue were it wasn't possible to have a single column toolbar
when zoomed out.

source/blender/editors/screen/area_utils.c
source/blender/editors/screen/screen_ops.c

index a9fdaf52ee55c2c0afe49a9c71130b323ff0a5c0..12de1ddb795b062b8f817e8c9a5029abaef5ba90 100644 (file)
@@ -70,7 +70,6 @@ int ED_region_generic_tools_region_snap_size(const ARegion *ar, int size, int ax
     const float column = 1.25f * icon_size;
     const float margin = 0.5f * icon_size;
     const float snap_units[] = {
-        0, /* Without this we can't hide the toolbar. */
         column + margin,
         (2.0f * column) + margin,
         (2.7f * column) + margin,
index f5ce026e6d6e36f3f812827a84ad2ed3f652fc34..dd09def2df6781918f8cbdf5d60dcb5364223fb5 100644 (file)
@@ -2666,7 +2666,8 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
         /* region sizes now get multiplied */
         delta /= UI_DPI_FAC;
 
-        rmd->ar->sizex = rmd->origval + delta;
+        const int size_no_snap = rmd->origval + delta;
+        rmd->ar->sizex = size_no_snap;
 
         if (rmd->ar->type->snap_size) {
           short sizex_test = rmd->ar->type->snap_size(rmd->ar, rmd->ar->sizex, 0);
@@ -2676,7 +2677,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
         }
         CLAMP(rmd->ar->sizex, 0, rmd->maxsize);
 
-        if (rmd->ar->sizex < UI_UNIT_X) {
+        if (size_no_snap < UI_UNIT_X / aspect) {
           rmd->ar->sizex = rmd->origval;
           if (!(rmd->ar->flag & RGN_FLAG_HIDDEN)) {
             region_scale_toggle_hidden(C, rmd);
@@ -2698,7 +2699,8 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
         /* region sizes now get multiplied */
         delta /= UI_DPI_FAC;
 
-        rmd->ar->sizey = rmd->origval + delta;
+        const int size_no_snap = rmd->origval + delta;
+        rmd->ar->sizey = size_no_snap;
 
         if (rmd->ar->type->snap_size) {
           short sizey_test = rmd->ar->type->snap_size(rmd->ar, rmd->ar->sizey, 1);
@@ -2711,7 +2713,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
         /* note, 'UI_UNIT_Y/4' means you need to drag the footer and execute region
          * almost all the way down for it to become hidden, this is done
          * otherwise its too easy to do this by accident */
-        if (rmd->ar->sizey < UI_UNIT_Y / 4) {
+        if (size_no_snap < (UI_UNIT_Y / 4) / aspect) {
           rmd->ar->sizey = rmd->origval;
           if (!(rmd->ar->flag & RGN_FLAG_HIDDEN)) {
             region_scale_toggle_hidden(C, rmd);