diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-05-25 13:19:04 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-05-25 13:55:22 +0300 |
commit | e9908134e87e4c69698d73ff144f3f8771a51be5 (patch) | |
tree | 9e3a2500fdabdfcc7f38f1f094e25087880154dc /source/blender/editors/interface | |
parent | fbc65c6b28fb4cec4ad67ba0345cd045914af20e (diff) |
UI: Move UI_paneltype_draw into layout code
No functional changes, needed for persistent popovers.
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r-- | source/blender/editors/interface/interface_layout.c | 40 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_region_popover.c | 32 |
2 files changed, 36 insertions, 36 deletions
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 3a4d35296f7..24e2d94538c 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -1851,16 +1851,7 @@ static void ui_item_menutype_func(bContext *C, uiLayout *layout, void *arg_mt) static void ui_item_paneltype_func(bContext *C, uiLayout *layout, void *arg_pt) { PanelType *pt = (PanelType *)arg_pt; - - if (layout->context) { - CTX_store_set(C, layout->context); - } - - UI_popover_panel_from_type(C, layout, pt); - - if (layout->context) { - CTX_store_set(C, NULL); - } + UI_paneltype_draw(C, pt, layout); } static uiBut *ui_item_menu( @@ -3740,3 +3731,32 @@ void UI_menutype_draw(bContext *C, MenuType *mt, struct uiLayout *layout) CTX_store_set(C, NULL); } } + +/** + * Used for popup panels only. + */ +void UI_paneltype_draw(bContext *C, PanelType *pt, uiLayout *layout) +{ + Panel *panel = MEM_callocN(sizeof(Panel), "popover panel"); + panel->type = pt; + + if (layout->context) { + CTX_store_set(C, layout->context); + } + + if (pt->draw_header) { + panel->layout = uiLayoutRow(layout, false); + pt->draw_header(C, panel); + panel->layout = NULL; + } + + panel->layout = layout; + pt->draw(C, panel); + panel->layout = NULL; + + if (layout->context) { + CTX_store_set(C, NULL); + } + + MEM_freeN(panel); +} diff --git a/source/blender/editors/interface/interface_region_popover.c b/source/blender/editors/interface/interface_region_popover.c index b6248d3daa1..169b3d43e80 100644 --- a/source/blender/editors/interface/interface_region_popover.c +++ b/source/blender/editors/interface/interface_region_popover.c @@ -257,25 +257,6 @@ uiPopupBlockHandle *ui_popover_panel_create( * \{ */ -void UI_popover_panel_from_type(bContext *C, uiLayout *layout, PanelType *pt) -{ - /* TODO: move into UI_paneltype_draw */ - Panel *panel = MEM_callocN(sizeof(Panel), "popover panel"); - panel->type = pt; - - - if (pt->draw_header) { - panel->layout = uiLayoutRow(layout, false); - pt->draw_header(C, panel); - panel->layout = NULL; - } - - panel->layout = layout; - pt->draw(C, panel); - panel->layout = NULL; - - MEM_freeN(panel); -} int UI_popover_panel_invoke( bContext *C, int space_id, int region_id, const char *idname, @@ -296,13 +277,12 @@ int UI_popover_panel_invoke( return (OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH); } - uiPopover *pup = UI_popover_begin(C); - - layout = UI_popover_layout(pup); - - UI_popover_panel_from_type(C, layout, pt); - - UI_popover_end(C, pup, NULL); + { + uiPopover *pup = UI_popover_begin(C); + layout = UI_popover_layout(pup); + UI_paneltype_draw(C, pt, layout); + UI_popover_end(C, pup, NULL); + } return OPERATOR_INTERFACE; } |