Commit: 66776bd2f71fe50fe09b43d3e16f30f63ef2c4a2
Author: Julian Eisel
Date:   Thu Jan 5 19:30:20 2017 +0100
Branches: workspaces
https://developer.blender.org/rB66776bd2f71fe50fe09b43d3e16f30f63ef2c4a2

Cleanup: Screen/workspace change functions, comments, naming, etc

===================================================================

M       source/blender/editors/include/ED_screen.h
M       source/blender/editors/screen/screen_edit.c
M       source/blender/editors/screen/screen_intern.h
M       source/blender/editors/screen/workspace_edit.c
M       source/blender/editors/screen/workspace_layout_edit.c
M       source/blender/makesdna/DNA_screen_types.h
M       source/blender/makesdna/dna_workspace_types.h
M       source/blender/windowmanager/intern/wm_event_system.c
M       source/blender/windowmanager/intern/wm_window.c

===================================================================

diff --git a/source/blender/editors/include/ED_screen.h 
b/source/blender/editors/include/ED_screen.h
index 2482c15..3b73c38 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -106,7 +106,7 @@ void    ED_screens_initialize(struct wmWindowManager *wm);
 void    ED_screen_draw(struct wmWindow *win);
 void    ED_screen_refresh(struct wmWindowManager *wm, struct wmWindow *win);
 void    ED_screen_do_listen(struct bContext *C, struct wmNotifier *note);
-bool    ED_screen_set(struct bContext *C, struct bScreen *sc);
+bool    ED_screen_change(struct bContext *C, struct bScreen *sc);
 void    ED_screen_update_after_scene_change(const struct bScreen *screen, 
struct Scene *scene_new);
 void    ED_screen_set_subwinactive(struct bContext *C, struct wmEvent *event);
 void    ED_screen_exit(struct bContext *C, struct wmWindow *window, struct 
bScreen *screen);
diff --git a/source/blender/editors/screen/screen_edit.c 
b/source/blender/editors/screen/screen_edit.c
index 7550f35..720da7f 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -533,13 +533,29 @@ void screen_data_copy(bScreen *to, bScreen *from)
 /**
  * Prepare a newly created screen for initializing it as active screen.
  */
-void screen_new_activate_refresh(const wmWindow *win, bScreen *screen_new)
+void screen_new_activate_prepare(const wmWindow *win, bScreen *screen_new)
 {
        screen_new->winid = win->winid;
        screen_new->do_refresh = true;
        screen_new->do_draw = true;
 }
 
+void screen_changed_update(bContext *C, wmWindow *win, bScreen *sc)
+{
+       Scene *scene = WM_window_get_active_scene(win);
+
+       CTX_wm_window_set(C, win);  /* stores C->wm.screen... hrmf */
+
+       ED_screen_refresh(CTX_wm_manager(C), win);
+
+       BKE_screen_view3d_scene_sync(sc, scene); /* sync new screen with scene 
data */
+       WM_event_add_notifier(C, NC_WINDOW, NULL);
+       WM_event_add_notifier(C, NC_WORKSPACE | ND_SCREENSET, sc);
+
+       /* makes button hilites work */
+       WM_event_add_mousemove(C);
+}
+
 
 /* with sa as center, sb is located at: 0=W, 1=N, 2=E, 3=S */
 /* -1 = not valid check */
@@ -946,6 +962,8 @@ void ED_screen_refresh(wmWindowManager *wm, wmWindow *win)
                printf("%s: set screen\n", __func__);
        }
        screen->do_refresh = false;
+       /* prevent multiwin errors */
+       screen->winid = win->winid;
 
        screen->context = ed_screen_context;
 }
@@ -1191,7 +1209,7 @@ int ED_screen_area_active(const bContext *C)
 /* -------------------------------------------------------------------- */
 /* Screen Activation (screen_set_xxx) */
 
-bScreen *screen_set_find_associated_fullscreen(const Main *bmain, bScreen 
*screen)
+static bScreen *screen_find_associated_fullscreen(const Main *bmain, bScreen 
*screen)
 {
        for (bScreen *screen_iter = bmain->screen.first; screen_iter; 
screen_iter = screen_iter->id.next) {
                ScrArea *sa = screen_iter->areabase.first;
@@ -1204,33 +1222,10 @@ bScreen *screen_set_find_associated_fullscreen(const 
Main *bmain, bScreen *scree
 }
 
 /**
- * Refresh data and make screen ready for drawing *after* activating it.
- */
-void screen_set_refresh(bContext *C, wmWindow *win)
-{
-       Scene *scene = WM_window_get_active_scene(win);
-       bScreen *sc = WM_window_get_active_screen(win);
-
-       CTX_wm_window_set(C, win);  // stores C->wm.screen... hrmf
-
-       /* prevent multiwin errors */
-       sc->winid = win->winid;
-
-       BKE_screen_view3d_scene_sync(sc, scene); /* sync new screen with scene 
data */
-       ED_screen_refresh(CTX_wm_manager(C), CTX_wm_window(C));
-       WM_event_add_notifier(C, NC_WINDOW, NULL);
-       WM_event_add_notifier(C, NC_WORKSPACE | ND_SCREENSET, sc);
-
-       /* makes button hilites work */
-       WM_event_add_mousemove(C);
-}
-
-/**
- * Make sure the correct screen is used and that it's valid for display in \a 
win.
- * \return the screen to activate (might differ from \a screen_new in case
- *         of fullscreen) or NULL if no valid one found.
+ * \return the screen to activate.
+ * \warning The returned screen may not always equal \a screen_new!
  */
-bScreen *screen_set_ensure_valid(const Main *bmain, const wmWindow *win, 
bScreen *screen_new)
+bScreen *screen_change_prepare(bScreen *screen_old, bScreen *screen_new, Main 
*bmain, bContext *C, wmWindow *win)
 {
        /* validate screen, it's called with notifier reference */
        if (BLI_findindex(&bmain->screen, screen_new) == -1) {
@@ -1238,7 +1233,7 @@ bScreen *screen_set_ensure_valid(const Main *bmain, const 
wmWindow *win, bScreen
        }
 
        if (ELEM(screen_new->state, SCREENMAXIMIZED, SCREENFULL)) {
-               screen_new = screen_set_find_associated_fullscreen(bmain, 
screen_new);
+               screen_new = screen_find_associated_fullscreen(bmain, 
screen_new);
        }
 
        /* check for valid winid */
@@ -1246,56 +1241,55 @@ bScreen *screen_set_ensure_valid(const Main *bmain, 
const wmWindow *win, bScreen
                return NULL;
        }
 
-       return screen_new;
-}
+       if (screen_old != screen_new) {
+               wmTimer *wt = screen_old->animtimer;
 
-void screen_set_prepare(bContext *C, wmWindow *win, bScreen *screen_new, 
bScreen *screen_old)
-{
-       wmWindowManager *wm = CTX_wm_manager(C);
-       wmTimer *wt = screen_old->animtimer;
-       ScrArea *sa;
+               /* remove handlers referencing areas in old screen */
+               for (ScrArea *sa = screen_old->areabase.first; sa; sa = 
sa->next) {
+                       WM_event_remove_area_handler(&win->modalhandlers, sa);
+               }
 
-       /* remove handlers referencing areas in old screen */
-       for (sa = screen_old->areabase.first; sa; sa = sa->next) {
-               WM_event_remove_area_handler(&win->modalhandlers, sa);
-       }
+               /* we put timer to sleep, so screen_exit has to think there's 
no timer */
+               screen_old->animtimer = NULL;
+               if (wt) {
+                       WM_event_timer_sleep(CTX_wm_manager(C), win, wt, true);
+               }
+               ED_screen_exit(C, win, screen_old);
 
-       /* we put timer to sleep, so screen_exit has to think there's no timer 
*/
-       screen_old->animtimer = NULL;
-       if (wt) {
-               WM_event_timer_sleep(wm, win, wt, true);
-       }
-       ED_screen_exit(C, win, screen_old);
+               /* Same scene, "transfer" playback to new screen. */
+               if (wt) {
+                       screen_new->animtimer = wt;
+               }
 
-       /* Same scene, "transfer" playback to new screen. */
-       if (wt) {
-               screen_new->animtimer = wt;
+               return screen_new;
        }
+
+       return NULL;
 }
 
 /**
- * operator call, WM + Window + screen already existed before
+ * \brief Change the active screen.
+ *
+ * Operator call, WM + Window + screen already existed before
+ *
  * \warning Do NOT call in area/region queues!
- * \returns success.
+ * \returns if screen changing was successful.
  */
-bool ED_screen_set(bContext *C, bScreen *sc)
+bool ED_screen_change(bContext *C, bScreen *sc)
 {
        Main *bmain = CTX_data_main(C);
        wmWindow *win = CTX_wm_window(C);
        bScreen *screen_old = CTX_wm_screen(C);
-       bScreen *screen_new;
-
-       if (!(screen_new = screen_set_ensure_valid(bmain, win, sc))) {
-               return false;
-       }
+       bScreen *screen_new = screen_change_prepare(screen_old, sc, bmain, C, 
win);
 
-       if (screen_old != screen_new) {
-               screen_set_prepare(C, win, screen_new, screen_old);
+       if (screen_new) {
                WM_window_set_active_screen(win, sc);
-               screen_set_refresh(C, win);
+               screen_changed_update(C, win, screen_new);
+
+               return true;
        }
 
-       return true;
+       return false;
 }
 
 static void screen_set_3dview_camera(Scene *scene, ScrArea *sa, View3D *v3d)
@@ -1499,7 +1493,7 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow 
*win, ScrArea *sa, const s
                sc->animtimer = oldscreen->animtimer;
                oldscreen->animtimer = NULL;
 
-               ED_screen_set(C, sc);
+               ED_screen_change(C, sc);
 
                BKE_workspace_layout_remove(workspace, layout_old, 
CTX_data_main(C));
 
@@ -1577,7 +1571,7 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow 
*win, ScrArea *sa, const s
                        BLI_assert(false);
                }
 
-               ED_screen_set(C, sc);
+               ED_screen_change(C, sc);
        }
 
        /* XXX bad code: setscreen() ends with first area active. fullscreen 
render assumes this too */
diff --git a/source/blender/editors/screen/screen_intern.h 
b/source/blender/editors/screen/screen_intern.h
index d1b71c6..a420471 100644
--- a/source/blender/editors/screen/screen_intern.h
+++ b/source/blender/editors/screen/screen_intern.h
@@ -48,11 +48,9 @@ void        region_toggle_hidden(struct bContext *C, ARegion 
*ar, const bool do_
 /* screen_edit.c */
 bScreen    *screen_add(wmWindow *win, const char *name, const int winsize_x, 
const int winsize_y);
 void        screen_data_copy(bScreen *to, bScreen *from);
-void        screen_new_activate_refresh(const wmWindow *win, bScreen 
*screen_new);
-bScreen    *screen_set_find_associated_fullscreen(const struct Main *bmain, 
bScreen *screen);
-void        screen_set_refresh(struct bContext *C, wmWindow *win);
-bScreen    *screen_set_ensure_valid(const struct Main *bmain, const wmWindow 
*win, bScreen *screen_new);
-void        screen_set_prepare(struct bContext *C, wmWindow *win, bScreen 
*screen_new, bScreen *screen_old);
+void        screen_new_activate_prepare(const wmWindow *win, bScreen 
*screen_new);
+void        screen_changed_update(struct bContext *C, wmWindow *win, bScreen 
*sc);
+bScreen    *screen_change_prepare(bScreen *screen_old, bScreen *screen_new, 
struct Main *bmain, struct bContext *C, wmWindow *win);
 ScrEdge    *screen_findedge(bScreen *sc, ScrVert *v1, ScrVert *v2);
 ScrArea    *area_split(bScreen *sc, ScrArea *sa, char dir, float fac, int 
merge);
 int         screen_area_join(struct bContext *C, bScreen *scr, ScrArea *sa1, 
ScrArea *sa2);
diff --git a/source/blender/editors/screen/workspace_edit.c 
b/source/blender/editors/screen/workspace_edit.c
index 4557ccb..bc701c4 100644
--- a/source/blender/editors/screen/workspace_edit.c
+++ b/source/blender/editors/screen/workspace_edit.c
@@ -68,10 +68,10 @@ static void workspace_change_update_mode(const WorkSpace 
*workspace_old, const W
  * \brief Change the active workspace.
  *
  * Operator call, WM + Window + screen already existed before
- * Pretty similar to #ED_screen_set since changing workspace also changes 
screen.
+ * Pretty similar to #ED_screen_change since changing workspace also changes 
screen.
  *
  * \warning Do NOT call in area/region queues!
- * \returns success.
+ * \returns if workspace changing was successful.
  */
 bool ED_workspace_change(bContext *C, wmWindowManager *wm, wmWindow *win, 
WorkSpace *works

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to