Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Eisel <eiseljulian@gmail.com>2018-10-30 00:55:54 +0300
committerJulian Eisel <eiseljulian@gmail.com>2018-10-30 00:59:57 +0300
commita0d40c6a8c42c774d9286b5de0d80167c1d55fde (patch)
tree9f5bfb8c74e789a277a0ed1fea031728d9702a4c /source/blender/editors/space_buttons
parent39a1d4527950fe32b9a421ce366b012a5fe1fa79 (diff)
UI: Move Properties editor context path into header
This will probably be a temporary solution to fill empty space, for until we have a search button there. Hence, I made this optional using a compile flag.
Diffstat (limited to 'source/blender/editors/space_buttons')
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c24
-rw-r--r--source/blender/editors/space_buttons/buttons_intern.h3
-rw-r--r--source/blender/editors/space_buttons/space_buttons.c19
3 files changed, 42 insertions, 4 deletions
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index 04948fd6984..abc2ed6ca3c 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -1049,19 +1049,38 @@ void buttons_context_draw(const bContext *C, uiLayout *layout)
}
}
+#ifdef USE_HEADER_CONTEXT_PATH
+static bool buttons_header_context_poll(const bContext *C, HeaderType *UNUSED(ht))
+#else
static bool buttons_panel_context_poll(const bContext *C, PanelType *UNUSED(pt))
+#endif
{
SpaceButs *sbuts = CTX_wm_space_buts(C);
return (sbuts->mainb != BCONTEXT_TOOL);
}
-static void buttons_panel_context_draw(const bContext *C, Panel *pa)
+#ifdef USE_HEADER_CONTEXT_PATH
+static void buttons_header_context_draw(const bContext *C, Header *ptr)
+#else
+static void buttons_panel_context_draw(const bContext *C, Panel *ptr)
+#endif
{
- buttons_context_draw(C, pa->layout);
+ buttons_context_draw(C, ptr->layout);
}
void buttons_context_register(ARegionType *art)
{
+#ifdef USE_HEADER_CONTEXT_PATH
+ HeaderType *ht;
+
+ ht = MEM_callocN(sizeof(HeaderType), "spacetype buttons context header");
+ strcpy(ht->idname, "BUTTONS_HT_context");
+ ht->space_type = SPACE_BUTS;
+ ht->region_type = art->regionid;
+ ht->poll = buttons_header_context_poll;
+ ht->draw = buttons_header_context_draw;
+ BLI_addtail(&art->headertypes, ht);
+#else
PanelType *pt;
pt = MEM_callocN(sizeof(PanelType), "spacetype buttons panel context");
@@ -1072,6 +1091,7 @@ void buttons_context_register(ARegionType *art)
pt->draw = buttons_panel_context_draw;
pt->flag = PNL_NO_HEADER;
BLI_addtail(&art->paneltypes, pt);
+#endif
}
ID *buttons_context_id_path(const bContext *C)
diff --git a/source/blender/editors/space_buttons/buttons_intern.h b/source/blender/editors/space_buttons/buttons_intern.h
index aab7b39484d..65bcf7ef1c8 100644
--- a/source/blender/editors/space_buttons/buttons_intern.h
+++ b/source/blender/editors/space_buttons/buttons_intern.h
@@ -45,6 +45,9 @@ struct bNodeTree;
struct uiLayout;
struct wmOperatorType;
+/* Display the context path in the header instead of the main window */
+#define USE_HEADER_CONTEXT_PATH
+
/* context data */
typedef struct ButsContextPath {
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index 50018b212a6..413d0ab376a 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -358,6 +358,13 @@ static void buttons_keymap(struct wmKeyConfig *keyconf)
/* add handlers, stuff you only do once or on area/region changes */
static void buttons_header_region_init(wmWindowManager *UNUSED(wm), ARegion *ar)
{
+#ifdef USE_HEADER_CONTEXT_PATH
+ /* Reinsert context buttons header-type at the end of the list so it's drawn last. */
+ HeaderType *context_ht = BLI_findstring(&ar->type->headertypes, "BUTTONS_HT_context", offsetof(HeaderType, idname));
+ BLI_remlink(&ar->type->headertypes, context_ht);
+ BLI_addtail(&ar->type->headertypes, context_ht);
+#endif
+
ED_region_header_init(ar);
}
@@ -395,6 +402,10 @@ static void buttons_header_region_message_subscribe(
if (sbuts->mainb == BCONTEXT_TOOL) {
WM_msg_subscribe_rna_anon_prop(mbus, WorkSpace, tools, &msg_sub_value_region_tag_redraw);
}
+
+#ifdef USE_HEADER_CONTEXT_PATH
+ WM_msg_subscribe_rna_anon_prop(mbus, SpaceProperties, context, &msg_sub_value_region_tag_redraw);
+#endif
}
static void buttons_navigation_bar_region_init(wmWindowManager *wm, ARegion *ar)
@@ -687,9 +698,10 @@ void ED_spacetype_buttons(void)
art->draw = ED_region_panels_draw;
art->listener = buttons_main_region_listener;
art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES;
- BLI_addhead(&st->regiontypes, art);
-
+#ifndef USE_HEADER_CONTEXT_PATH
buttons_context_register(art);
+#endif
+ BLI_addhead(&st->regiontypes, art);
/* regions: header */
art = MEM_callocN(sizeof(ARegionType), "spacetype buttons region");
@@ -700,6 +712,9 @@ void ED_spacetype_buttons(void)
art->init = buttons_header_region_init;
art->draw = buttons_header_region_draw;
art->message_subscribe = buttons_header_region_message_subscribe;
+#ifdef USE_HEADER_CONTEXT_PATH
+ buttons_context_register(art);
+#endif
BLI_addhead(&st->regiontypes, art);
/* regions: navigation bar */