Bugfix [#33511]
authorTon Roosendaal <ton@blender.org>
Thu, 13 Dec 2012 12:17:57 +0000 (12:17 +0000)
committerTon Roosendaal <ton@blender.org>
Thu, 13 Dec 2012 12:17:57 +0000 (12:17 +0000)
Overlapping regions: when dragging the region to close them, it started the blending
timer - which of course is not meant to happen.

source/blender/editors/screen/area.c
source/blender/editors/screen/screen_intern.h
source/blender/editors/screen/screen_ops.c

index 80270116a13e910951ad8560d1505691780c0cfb..a0bcab118f5240cdb9a995bba7fc67bc49ff62ad 100644 (file)
@@ -1257,25 +1257,32 @@ void ED_region_init(bContext *C, ARegion *ar)
        glLoadIdentity();
 }
 
-void ED_region_toggle_hidden(bContext *C, ARegion *ar)
+/* for quick toggle, can skip fades */
+void region_toggle_hidden(bContext *C, ARegion *ar, int do_fade)
 {
        ScrArea *sa = CTX_wm_area(C);
-
+       
        ar->flag ^= RGN_FLAG_HIDDEN;
-
-       if (ar->overlap) {
+       
+       if (do_fade && ar->overlap) {
                /* starts a timer, and in end calls the stuff below itself (region_sblend_invoke()) */
                region_blend_start(C, sa, ar);
        }
        else {
                if (ar->flag & RGN_FLAG_HIDDEN)
                        WM_event_remove_handlers(C, &ar->handlers);
-
+               
                ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
                ED_area_tag_redraw(sa);
        }
 }
 
+/* exported to all editors, uses fading default */
+void ED_region_toggle_hidden(bContext *C, ARegion *ar)
+{
+       region_toggle_hidden(C, ar, 1);
+}
+
 /* sa2 to sa1, we swap spaces for fullscreen to keep all allocated data */
 /* area vertices were set */
 void area_copy_data(ScrArea *sa1, ScrArea *sa2, int swap_space)
index 2e2b53f57d6245adbcd5d360aafac17cffb0f2cb..b811fc461888a35d56de164506e8f8524257b221 100644 (file)
@@ -39,6 +39,7 @@ struct Scene;
 
 /* area.c */
 void        area_copy_data(ScrArea *sa1, ScrArea *sa2, int swap_space);
+void           region_toggle_hidden(bContext *C, ARegion *ar, int do_fade);
 
 /* screen_edit.c */
 ScrEdge    *screen_findedge(bScreen *sc, ScrVert *v1, ScrVert *v2);
index fef039bc196316e7206f6c5967ace8f2ca31e71b..807c5a4c45781117bee20f23403b5009ca3a6e1b 100644 (file)
@@ -1786,7 +1786,7 @@ static void region_scale_validate_size(RegionMoveData *rmd)
 
 static void region_scale_toggle_hidden(bContext *C, RegionMoveData *rmd)
 {
-       ED_region_toggle_hidden(C, rmd->ar);
+       region_toggle_hidden(C, rmd->ar, 0);
        region_scale_validate_size(rmd);
 }
 
@@ -3594,7 +3594,7 @@ typedef struct RegionAlphaInfo {
        int hidden;
 } RegionAlphaInfo;
 
-#define TIMEOUT                0.3f
+#define TIMEOUT                0.2f
 #define TIMESTEP       0.04f
 
 float ED_region_blend_factor(ARegion *ar)