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:
authorCampbell Barton <ideasman42@gmail.com>2018-05-25 13:19:04 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-05-25 13:55:22 +0300
commite9908134e87e4c69698d73ff144f3f8771a51be5 (patch)
tree9e3a2500fdabdfcc7f38f1f094e25087880154dc /source/blender/editors/interface
parentfbc65c6b28fb4cec4ad67ba0345cd045914af20e (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.c40
-rw-r--r--source/blender/editors/interface/interface_region_popover.c32
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;
}