Add utility to make it easier to get editors/regions to redraw after changing visibil...
authorJoshua Leung <aligorith@gmail.com>
Fri, 20 Apr 2018 10:14:07 +0000 (12:14 +0200)
committerJoshua Leung <aligorith@gmail.com>
Fri, 20 Apr 2018 16:54:41 +0000 (18:54 +0200)
Previously, there was only an API method to toggle and update, but sometimes you
want to explicitly hide instead of just toggling.

source/blender/editors/include/ED_screen.h
source/blender/editors/screen/area.c

index 8d7b6c86aa11a146f06ad4bf47846c84e573ab42..cfe4ddd1ddc2e1161815b088fda85132ec3eb1bf 100644 (file)
@@ -83,6 +83,7 @@ void    ED_region_header_init(struct ARegion *ar);
 void    ED_region_header(const struct bContext *C, struct ARegion *ar);
 void    ED_region_cursor_set(struct wmWindow *win, struct ScrArea *sa, struct ARegion *ar);
 void    ED_region_toggle_hidden(struct bContext *C, struct ARegion *ar);
+void    ED_region_visibility_change_update(struct bContext *C, struct ARegion *ar);
 void    ED_region_info_draw(struct ARegion *ar, const char *text, float fill_color[4], const bool full_redraw);
 void    ED_region_info_draw_multiline(ARegion *ar, const char *text_array[], float fill_color[4], const bool full_redraw);
 void    ED_region_image_metadata_draw(int x, int y, struct ImBuf *ibuf, const rctf *frame, float zoomx, float zoomy);
index b6e2d2c57d4e857b4347c6b9e6f4fc141ef0c970..f81d3edc5ba07ddc7aeaf65526e63860778fcdf1 100644 (file)
@@ -1643,6 +1643,18 @@ void ED_region_cursor_set(wmWindow *win, ScrArea *sa, ARegion *ar)
        }
 }
 
+/* for use after changing visiblity of regions */
+void ED_region_visibility_change_update(bContext *C, ARegion *ar)
+{
+       ScrArea *sa = CTX_wm_area(C);
+       
+       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);
+}
+
 /* for quick toggle, can skip fades */
 void region_toggle_hidden(bContext *C, ARegion *ar, const bool do_fade)
 {
@@ -1655,11 +1667,7 @@ void region_toggle_hidden(bContext *C, ARegion *ar, const bool do_fade)
                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);
+               ED_region_visibility_change_update(C, ar);
        }
 }