[Bf-blender-cvs] [fe07839d01b] blender2.8: UI: Right-click menu entry to flip properties Tab Bar left/right
Julian Eisel
noreply at git.blender.org
Wed Oct 31 00:53:43 CET 2018
Commit: fe07839d01b12456523fda4a4fff6f46c6c16157
Author: Julian Eisel
Date: Wed Oct 31 00:41:03 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBfe07839d01b12456523fda4a4fff6f46c6c16157
UI: Right-click menu entry to flip properties Tab Bar left/right
===================================================================
M source/blender/editors/include/ED_screen.h
M source/blender/editors/interface/interface_context_menu.c
M source/blender/editors/screen/screen_ops.c
M source/blender/editors/space_buttons/buttons_ops.c
===================================================================
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index faa9233bff1..7c05bfd829d 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -195,6 +195,7 @@ void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa);
void ED_screen_full_restore(struct bContext *C, ScrArea *sa);
struct ScrArea *ED_screen_state_toggle(struct bContext *C, struct wmWindow *win, struct ScrArea *sa, const short state);
void ED_screens_header_tools_menu_create(struct bContext *C, struct uiLayout *layout, void *arg);
+void ED_screens_navigation_bar_tools_menu_create(struct bContext *C, struct uiLayout *layout, void *arg);
bool ED_screen_stereo3d_required(const struct bScreen *screen, const struct Scene *scene);
Scene *ED_screen_scene_find(const struct bScreen *screen, const struct wmWindowManager *wm);
Scene *ED_screen_scene_find_with_window(const struct bScreen *screen, const struct wmWindowManager *wm, struct wmWindow **r_window);
diff --git a/source/blender/editors/interface/interface_context_menu.c b/source/blender/editors/interface/interface_context_menu.c
index 253de3d3d5a..03d941c2387 100644
--- a/source/blender/editors/interface/interface_context_menu.c
+++ b/source/blender/editors/interface/interface_context_menu.c
@@ -766,10 +766,17 @@ bool ui_popup_context_menu_for_button(bContext *C, uiBut *but)
/* Show header tools for header buttons. */
if (ui_block_is_popup_any(but->block) == false) {
- ARegion *ar = CTX_wm_region(C);
- if (ar && (ar->regiontype == RGN_TYPE_HEADER)) {
+ const ARegion *ar = CTX_wm_region(C);
+
+ if (!ar) {
+ /* skip */
+ }
+ else if (ar->regiontype == RGN_TYPE_HEADER) {
uiItemMenuF(layout, IFACE_("Header"), ICON_NONE, ED_screens_header_tools_menu_create, NULL);
}
+ else if (ar->regiontype == RGN_TYPE_NAV_BAR) {
+ uiItemMenuF(layout, IFACE_("Navigation Bar"), ICON_NONE, ED_screens_navigation_bar_tools_menu_create, NULL);
+ }
}
MenuType *mt = WM_menutype_find("WM_MT_button_context", true);
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 7a447bb41d4..5377ccb5a44 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -3756,6 +3756,23 @@ static void SCREEN_OT_header_context_menu(wmOperatorType *ot)
/** \} */
+/* -------------------------------------------------------------------- */
+/** \name Navigation Bar Tools Menu
+ * \{ */
+
+void ED_screens_navigation_bar_tools_menu_create(bContext *C, uiLayout *layout, void *UNUSED(arg))
+{
+ const ARegion *ar = CTX_wm_region(C);
+ const char *but_flip_str = (ar->alignment == RGN_ALIGN_LEFT) ? IFACE_("Flip to Right") : IFACE_("Flip to Left");
+
+ /* default is WM_OP_INVOKE_REGION_WIN, which we don't want here. */
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_DEFAULT);
+
+ uiItemO(layout, but_flip_str, ICON_NONE, "SCREEN_OT_region_flip");
+}
+
+/** \} */
+
/* -------------------------------------------------------------------- */
/** \name Animation Step Operator
*
diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c
index fb2907983c8..473deb35aac 100644
--- a/source/blender/editors/space_buttons/buttons_ops.c
+++ b/source/blender/editors/space_buttons/buttons_ops.c
@@ -64,9 +64,15 @@
static int context_menu_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *UNUSED(event))
{
+ const ARegion *ar = CTX_wm_region(C);
uiPopupMenu *pup = UI_popup_menu_begin(C, IFACE_("Context Menu"), ICON_NONE);
uiLayout *layout = UI_popup_menu_layout(pup);
+
uiItemM(layout, "INFO_MT_area", NULL, ICON_NONE);
+ if (ar->regiontype == RGN_TYPE_NAV_BAR) {
+ ED_screens_navigation_bar_tools_menu_create(C, layout, NULL);
+ }
+
UI_popup_menu_end(C, pup);
return OPERATOR_INTERFACE;
More information about the Bf-blender-cvs
mailing list