[Bf-blender-cvs] [e1557b0d7aa] topbar: Fix crash when trying to make top-bar area full-screen

Julian Eisel noreply at git.blender.org
Thu Oct 26 19:49:45 CEST 2017


Commit: e1557b0d7aa524aa2e8f2db2bd7e03002f1bb55a
Author: Julian Eisel
Date:   Thu Oct 26 19:48:48 2017 +0200
Branches: topbar
https://developer.blender.org/rBe1557b0d7aa524aa2e8f2db2bd7e03002f1bb55a

Fix crash when trying to make top-bar area full-screen

Top-bar should never be full-screen, so disable operator.

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

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

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

diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 9a3d1da2375..43364e54b36 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -2461,6 +2461,13 @@ static int screen_maximize_area_exec(bContext *C, wmOperator *op)
 	return OPERATOR_FINISHED;
 }
 
+static int screen_maximize_area_poll(bContext *C)
+{
+	const bScreen *screen = CTX_wm_screen(C);
+	const ScrArea *area = CTX_wm_area(C);
+	return (screen->state != SCREENNORMAL) || (area->spacetype != SPACE_TOPBAR);
+}
+
 static void SCREEN_OT_screen_full_area(wmOperatorType *ot)
 {
 	PropertyRNA *prop;
@@ -2470,7 +2477,7 @@ static void SCREEN_OT_screen_full_area(wmOperatorType *ot)
 	ot->idname = "SCREEN_OT_screen_full_area";
 	
 	ot->exec = screen_maximize_area_exec;
-	ot->poll = ED_operator_areaactive;
+	ot->poll = screen_maximize_area_poll;
 	ot->flag = 0;
 
 	prop = RNA_def_boolean(ot->srna, "use_hide_panels", false, "Hide Panels", "Hide all the panels");
@@ -3301,12 +3308,11 @@ void ED_screens_header_tools_menu_create(bContext *C, uiLayout *layout, void *UN
 
 	uiItemS(layout);
 
-	/* file browser should be fullscreen all the time, but other regions can be maximized/restored... */
-	if (sa->spacetype != SPACE_FILE) {
-		if (sa->full) 
-			uiItemO(layout, IFACE_("Tile Area"), ICON_NONE, "SCREEN_OT_screen_full_area");
-		else
-			uiItemO(layout, IFACE_("Maximize Area"), ICON_NONE, "SCREEN_OT_screen_full_area");
+	/* file browser should be fullscreen all the time, topbar should
+	 * never be. But other regions can be maximized/restored... */
+	if (!ELEM(sa->spacetype, SPACE_FILE, SPACE_TOPBAR)) {
+		const char *but_str = sa->full ? IFACE_("Tile Area") : IFACE_("Maximize Area");
+		uiItemO(layout, but_str, ICON_NONE, "SCREEN_OT_screen_full_area");
 	}
 }



More information about the Bf-blender-cvs mailing list