diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-04-25 08:52:40 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-04-25 08:55:50 +0300 |
commit | b00d971efe67799042577cf0391bb34e9f870835 (patch) | |
tree | 256b9796c0090c5ff2340bbe3b02d4b32ca65b12 /source/blender/editors/space_clip | |
parent | e944e215bf300cd1cea8698391679df1e3802a92 (diff) |
UI: Apply remove redo region
This was a disabled part of the top-bar merge (code by @Severin)
The only change made is to move to redo UI into a popover.
Diffstat (limited to 'source/blender/editors/space_clip')
-rw-r--r-- | source/blender/editors/space_clip/clip_toolbar.c | 104 | ||||
-rw-r--r-- | source/blender/editors/space_clip/space_clip.c | 63 |
2 files changed, 1 insertions, 166 deletions
diff --git a/source/blender/editors/space_clip/clip_toolbar.c b/source/blender/editors/space_clip/clip_toolbar.c index 3b1f423b5ef..61bd8df3dbf 100644 --- a/source/blender/editors/space_clip/clip_toolbar.c +++ b/source/blender/editors/space_clip/clip_toolbar.c @@ -120,27 +120,14 @@ void CLIP_OT_properties(wmOperatorType *ot) static ARegion *clip_has_tools_region(ScrArea *sa) { ARegion *ar, *artool = NULL, *arhead; -#ifndef WITH_REDO_REGION_REMOVAL - ARegion *arprops = NULL; -#endif for (ar = sa->regionbase.first; ar; ar = ar->next) { if (ar->regiontype == RGN_TYPE_TOOLS) artool = ar; - -#ifndef WITH_REDO_REGION_REMOVAL - if (ar->regiontype == RGN_TYPE_TOOL_PROPS) - arprops = ar; -#endif } /* tool region hide/unhide also hides props */ - if (artool -#ifndef WITH_REDO_REGION_REMOVAL - && arprops -#endif - ) - { + if (artool) { return artool; } @@ -161,17 +148,6 @@ static ARegion *clip_has_tools_region(ScrArea *sa) artool->flag = RGN_FLAG_HIDDEN; } -#ifndef WITH_REDO_REGION_REMOVAL - if (arprops == NULL) { - /* add extra subdivided region for tool properties */ - arprops = MEM_callocN(sizeof(ARegion), "tool props for clip"); - - BLI_insertlinkafter(&sa->regionbase, artool, arprops); - arprops->regiontype = RGN_TYPE_TOOL_PROPS; - arprops->alignment = RGN_ALIGN_BOTTOM | RGN_SPLIT_PREV; - } -#endif - return artool; } @@ -202,81 +178,3 @@ void CLIP_OT_tools(wmOperatorType *ot) ot->exec = tools_exec; ot->poll = tools_poll; } - -#ifndef WITH_REDO_REGION_REMOVAL - -/************************** redo panel ******************************/ - -static void clip_panel_operator_redo_buts(const bContext *C, Panel *pa, wmOperator *op) -{ - uiTemplateOperatorPropertyButs(C, pa->layout, op, NULL, UI_BUT_LABEL_ALIGN_COLUMN, 0); -} - -static void clip_panel_operator_redo_header(const bContext *C, Panel *pa) -{ - wmOperator *op = WM_operator_last_redo(C); - - if (op) - BLI_strncpy(pa->drawname, RNA_struct_ui_name(op->type->srna), sizeof(pa->drawname)); - else - BLI_strncpy(pa->drawname, IFACE_("Operator"), sizeof(pa->drawname)); -} - -static void clip_panel_operator_redo_operator(const bContext *C, Panel *pa, wmOperator *op) -{ - if (op->type->flag & OPTYPE_MACRO) { - for (op = op->macro.first; op; op = op->next) { - uiItemL(pa->layout, RNA_struct_ui_name(op->type->srna), ICON_NONE); - clip_panel_operator_redo_operator(C, pa, op); - } - } - else { - clip_panel_operator_redo_buts(C, pa, op); - } -} - -/* TODO de-duplicate redo panel functions - campbell */ -static void clip_panel_operator_redo(const bContext *C, Panel *pa) -{ - wmOperator *op = WM_operator_last_redo(C); - ARegion *ar; - ARegion *ar1; - - if (op == NULL) - return; - - /* keep in sync with logic in ED_undo_operator_repeat() */ - ar = CTX_wm_region(C); - ar1 = BKE_area_find_region_type(CTX_wm_area(C), RGN_TYPE_WINDOW); - if (ar1) - CTX_wm_region_set((bContext *)C, ar1); - - if (WM_operator_poll((bContext *)C, op->type)) { - uiBlock *block = uiLayoutGetBlock(pa->layout); - - if (!WM_operator_check_ui_enabled(C, op->type->name)) - uiLayoutSetEnabled(pa->layout, false); - - /* note, blockfunc is a default but->func, use Handle func to allow button callbacks too */ - UI_block_func_handle_set(block, ED_undo_operator_repeat_cb_evt, op); - - clip_panel_operator_redo_operator(C, pa, op); - } - - /* set region back */ - CTX_wm_region_set((bContext *)C, ar); -} - -void ED_clip_tool_props_register(ARegionType *art) -{ - PanelType *pt; - - pt = MEM_callocN(sizeof(PanelType), "spacetype clip panel last operator"); - strcpy(pt->idname, "CLIP_PT_last_operator"); - strcpy(pt->label, N_("Operator")); - strcpy(pt->translation_context, BLT_I18NCONTEXT_DEFAULT_BPYRNA); - pt->draw_header = clip_panel_operator_redo_header; - pt->draw = clip_panel_operator_redo; - BLI_addtail(&art->paneltypes, pt); -} -#endif diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c index f043280e43c..e416acf0e58 100644 --- a/source/blender/editors/space_clip/space_clip.c +++ b/source/blender/editors/space_clip/space_clip.c @@ -254,15 +254,6 @@ static SpaceLink *clip_new(const ScrArea *sa, const Scene *scene) ar->regiontype = RGN_TYPE_TOOLS; ar->alignment = RGN_ALIGN_LEFT; -#ifndef WITH_REDO_REGION_REMOVAL - /* tools view */ - ar = MEM_callocN(sizeof(ARegion), "tool properties for clip"); - - BLI_addtail(&sc->regionbase, ar); - ar->regiontype = RGN_TYPE_TOOL_PROPS; - ar->alignment = RGN_ALIGN_BOTTOM | RGN_SPLIT_PREV; -#endif - /* properties view */ ar = MEM_callocN(sizeof(ARegion), "properties for clip"); @@ -895,19 +886,12 @@ static void clip_refresh(const bContext *C, ScrArea *sa) bool main_visible = false, preview_visible = false, tools_visible = false; bool properties_visible = false, channels_visible = false; bool view_changed = false; -#ifndef WITH_REDO_REGION_REMOVAL - ARegion *ar_tool_props = BKE_area_find_region_type(sa, RGN_TYPE_TOOL_PROPS); - bool tool_props_visible = false; -#endif switch (sc->view) { case SC_VIEW_CLIP: main_visible = true; preview_visible = false; tools_visible = true; -#ifndef WITH_REDO_REGION_REMOVAL - tool_props_visible = true; -#endif properties_visible = true; channels_visible = false; break; @@ -915,9 +899,6 @@ static void clip_refresh(const bContext *C, ScrArea *sa) main_visible = false; preview_visible = true; tools_visible = false; -#ifndef WITH_REDO_REGION_REMOVAL - tool_props_visible = false; -#endif properties_visible = false; channels_visible = false; @@ -927,9 +908,6 @@ static void clip_refresh(const bContext *C, ScrArea *sa) main_visible = false; preview_visible = true; tools_visible = false; -#ifndef WITH_REDO_REGION_REMOVAL - tool_props_visible = false; -#endif properties_visible = false; channels_visible = true; @@ -1010,32 +988,6 @@ static void clip_refresh(const bContext *C, ScrArea *sa) } } -#ifndef WITH_REDO_REGION_REMOVAL - if (tool_props_visible) { - if (ar_tool_props && (ar_tool_props->flag & RGN_FLAG_HIDDEN)) { - ar_tool_props->flag &= ~RGN_FLAG_HIDDEN; - ar_tool_props->v2d.flag &= ~V2D_IS_INITIALISED; - view_changed = true; - } - if (ar_tool_props && (ar_tool_props->alignment != (RGN_ALIGN_BOTTOM | RGN_SPLIT_PREV))) { - ar_tool_props->alignment = RGN_ALIGN_BOTTOM | RGN_SPLIT_PREV; - view_changed = true; - } - } - else { - if (ar_tool_props && !(ar_tool_props->flag & RGN_FLAG_HIDDEN)) { - ar_tool_props->flag |= RGN_FLAG_HIDDEN; - ar_tool_props->v2d.flag &= ~V2D_IS_INITIALISED; - WM_event_remove_handlers((bContext *)C, &ar_tool_props->handlers); - view_changed = true; - } - if (ar_tool_props && ar_tool_props->alignment != RGN_ALIGN_NONE) { - ar_tool_props->alignment = RGN_ALIGN_NONE; - view_changed = true; - } - } -#endif - if (preview_visible) { if (ar_preview && (ar_preview->flag & RGN_FLAG_HIDDEN)) { ar_preview->flag &= ~RGN_FLAG_HIDDEN; @@ -1618,21 +1570,6 @@ void ED_spacetype_clip(void) BLI_addhead(&st->regiontypes, art); -#ifndef WITH_REDO_REGION_REMOVAL - /* tool properties */ - art = MEM_callocN(sizeof(ARegionType), "spacetype clip tool properties region"); - art->regionid = RGN_TYPE_TOOL_PROPS; - art->prefsizex = 0; - art->prefsizey = 120; - art->keymapflag = ED_KEYMAP_FRAMES | ED_KEYMAP_UI; - art->listener = clip_props_region_listener; - art->init = clip_tools_region_init; - art->draw = clip_tools_region_draw; - ED_clip_tool_props_register(art); - - BLI_addhead(&st->regiontypes, art); -#endif - /* regions: header */ art = MEM_callocN(sizeof(ARegionType), "spacetype clip region"); art->regionid = RGN_TYPE_HEADER; |