UI: fix popovers not properly working with scroll arrows for long menus.
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user