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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-05-13 19:23:21 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-05-13 19:24:13 +0300
commitc40c2b5ab7ed9b8ecc5421130a844706bd6ff311 (patch)
tree487e5eb53c053b8fad2a05328586d9d2bde4bcc1 /source/blender/editors/interface/interface_widgets.c
parent680bdef12adc2be4c8b62628e55bbf46903edbe7 (diff)
UI: fix popovers not properly working with scroll arrows for long menus.
Diffstat (limited to 'source/blender/editors/interface/interface_widgets.c')
-rw-r--r--source/blender/editors/interface/interface_widgets.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 6c558bcc961..7053f2833c3 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -4621,16 +4621,8 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct
}
}
-void ui_draw_menu_back(uiStyle *UNUSED(style), uiBlock *block, rcti *rect)
+static void ui_draw_clip_tri(uiBlock *block, rcti *rect, uiWidgetType *wt)
{
- uiWidgetType *wt = widget_type(UI_WTYPE_MENU_BACK);
-
- wt->state(wt, 0);
- if (block)
- wt->draw(&wt->wcol, rect, block->flag, block->direction);
- else
- wt->draw(&wt->wcol, rect, 0, 0);
-
if (block) {
float draw_color[4];
unsigned char *color = (unsigned char *)wt->wcol.text;
@@ -4651,6 +4643,19 @@ void ui_draw_menu_back(uiStyle *UNUSED(style), uiBlock *block, rcti *rect)
}
}
+void ui_draw_menu_back(uiStyle *UNUSED(style), uiBlock *block, rcti *rect)
+{
+ uiWidgetType *wt = widget_type(UI_WTYPE_MENU_BACK);
+
+ wt->state(wt, 0);
+ if (block)
+ wt->draw(&wt->wcol, rect, block->flag, block->direction);
+ else
+ wt->draw(&wt->wcol, rect, 0, 0);
+
+ ui_draw_clip_tri(block, rect, wt);
+}
+
/**
* Similar to 'widget_menu_back', however we can't use the widget preset system
* because we need to pass in the original location so we know where to show the arrow.
@@ -4708,17 +4713,19 @@ static void ui_draw_popover_back_impl(
void ui_draw_popover_back(ARegion *ar, uiStyle *UNUSED(style), uiBlock *block, rcti *rect)
{
+ uiWidgetType *wt = widget_type(UI_WTYPE_MENU_BACK);
+
if (block) {
float mval_origin[2] = {block->mx, block->my};
ui_window_to_block_fl(ar, block, &mval_origin[0], &mval_origin[1]);
ui_draw_popover_back_impl(&wcol_menu_back, rect, block->direction, mval_origin);
}
else {
- uiWidgetType *wt = widget_type(UI_WTYPE_MENU_BACK);
-
wt->state(wt, 0);
wt->draw(&wt->wcol, rect, 0, 0);
}
+
+ ui_draw_clip_tri(block, rect, wt);
}
static void draw_disk_shaded(