forked from bartvdbraak/blender
UI: use regular size icons for toolbar popup
Test this since the popup feels disruptive/flashing when its too large when set smaller it looks closer to a menu w/ key-accelerators which is the intention in this case. It's also more likely the active tool can be placed under the cursor.
This commit is contained in:
parent
c1a880bc5e
commit
1889eec918
@ -2394,7 +2394,7 @@ class WM_OT_toolbar(Operator):
|
|||||||
|
|
||||||
def draw_menu(popover, context):
|
def draw_menu(popover, context):
|
||||||
layout = popover.layout
|
layout = popover.layout
|
||||||
cls.draw_cls(layout, context, detect_layout=False)
|
cls.draw_cls(layout, context, detect_layout=False, scale_y=1.0)
|
||||||
|
|
||||||
wm.popover(draw_menu, keymap=keymap)
|
wm.popover(draw_menu, keymap=keymap)
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
@ -339,9 +339,7 @@ class ToolSelectPanelHelper:
|
|||||||
# - None: Signal to finish (complete any final operations, e.g. add padding).
|
# - None: Signal to finish (complete any final operations, e.g. add padding).
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _layout_generator_single_column(layout):
|
def _layout_generator_single_column(layout, scale_y):
|
||||||
scale_y = 2.0
|
|
||||||
|
|
||||||
col = layout.column(align=True)
|
col = layout.column(align=True)
|
||||||
col.scale_y = scale_y
|
col.scale_y = scale_y
|
||||||
is_sep = False
|
is_sep = False
|
||||||
@ -355,9 +353,8 @@ class ToolSelectPanelHelper:
|
|||||||
is_sep = yield col
|
is_sep = yield col
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _layout_generator_multi_columns(layout, column_count):
|
def _layout_generator_multi_columns(layout, column_count, scale_y):
|
||||||
scale_y = 2.0
|
scale_x = scale_y * 1.1
|
||||||
scale_x = 2.2
|
|
||||||
column_last = column_count - 1
|
column_last = column_count - 1
|
||||||
|
|
||||||
col = layout.column(align=True)
|
col = layout.column(align=True)
|
||||||
@ -394,7 +391,7 @@ class ToolSelectPanelHelper:
|
|||||||
column_index += 1
|
column_index += 1
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _layout_generator_detect_from_region(layout, region):
|
def _layout_generator_detect_from_region(layout, region, scale_y):
|
||||||
"""
|
"""
|
||||||
Choose an appropriate layout for the toolbar.
|
Choose an appropriate layout for the toolbar.
|
||||||
"""
|
"""
|
||||||
@ -421,14 +418,14 @@ class ToolSelectPanelHelper:
|
|||||||
column_count = 1
|
column_count = 1
|
||||||
|
|
||||||
if column_count == 1:
|
if column_count == 1:
|
||||||
ui_gen = ToolSelectPanelHelper._layout_generator_single_column(layout)
|
ui_gen = ToolSelectPanelHelper._layout_generator_single_column(layout, scale_y=scale_y)
|
||||||
else:
|
else:
|
||||||
ui_gen = ToolSelectPanelHelper._layout_generator_multi_columns(layout, column_count=column_count)
|
ui_gen = ToolSelectPanelHelper._layout_generator_multi_columns(layout, column_count=column_count, scale_y=scale_y)
|
||||||
|
|
||||||
return ui_gen, show_text
|
return ui_gen, show_text
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def draw_cls(cls, layout, context, detect_layout=True):
|
def draw_cls(cls, layout, context, detect_layout=True, scale_y=2.0):
|
||||||
# Use a classmethod so it can be called outside of a panel context.
|
# Use a classmethod so it can be called outside of a panel context.
|
||||||
|
|
||||||
# XXX, this UI isn't very nice.
|
# XXX, this UI isn't very nice.
|
||||||
@ -444,9 +441,9 @@ class ToolSelectPanelHelper:
|
|||||||
)
|
)
|
||||||
|
|
||||||
if detect_layout:
|
if detect_layout:
|
||||||
ui_gen, show_text = cls._layout_generator_detect_from_region(layout, context.region)
|
ui_gen, show_text = cls._layout_generator_detect_from_region(layout, context.region, scale_y)
|
||||||
else:
|
else:
|
||||||
ui_gen = ToolSelectPanelHelper._layout_generator_single_column(layout)
|
ui_gen = ToolSelectPanelHelper._layout_generator_single_column(layout, scale_y)
|
||||||
show_text = True
|
show_text = True
|
||||||
|
|
||||||
# Start iteration
|
# Start iteration
|
||||||
|
@ -2008,6 +2008,15 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
|
|||||||
else if (but->flag & UI_HAS_ICON || show_menu_icon) {
|
else if (but->flag & UI_HAS_ICON || show_menu_icon) {
|
||||||
const bool is_tool = UI_but_is_tool(but);
|
const bool is_tool = UI_but_is_tool(but);
|
||||||
|
|
||||||
|
/* XXX add way to draw icons at a different size!
|
||||||
|
* Use small icons for popup. */
|
||||||
|
#ifdef USE_TOOLBAR_HACK
|
||||||
|
const float aspect_orig = but->block->aspect;
|
||||||
|
if (is_tool && (but->block->flag & UI_BLOCK_POPOVER)) {
|
||||||
|
but->block->aspect *= 2.0f;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
const BIFIconID icon = (but->flag & UI_HAS_ICON) ? but->icon + but->iconadd : ICON_NONE;
|
const BIFIconID icon = (but->flag & UI_HAS_ICON) ? but->icon + but->iconadd : ICON_NONE;
|
||||||
int icon_size_init = is_tool ? ICON_DEFAULT_HEIGHT_TOOLBAR : ICON_DEFAULT_HEIGHT;
|
int icon_size_init = is_tool ? ICON_DEFAULT_HEIGHT_TOOLBAR : ICON_DEFAULT_HEIGHT;
|
||||||
const float icon_size = icon_size_init / (but->block->aspect / UI_DPI_FAC);
|
const float icon_size = icon_size_init / (but->block->aspect / UI_DPI_FAC);
|
||||||
@ -2034,6 +2043,10 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
|
|||||||
|
|
||||||
widget_draw_icon(but, icon, alpha, rect, show_menu_icon);
|
widget_draw_icon(but, icon, alpha, rect, show_menu_icon);
|
||||||
|
|
||||||
|
#ifdef USE_TOOLBAR_HACK
|
||||||
|
but->block->aspect = aspect_orig;
|
||||||
|
#endif
|
||||||
|
|
||||||
rect->xmin += icon_size;
|
rect->xmin += icon_size;
|
||||||
/* without this menu keybindings will overlap the arrow icon [#38083] */
|
/* without this menu keybindings will overlap the arrow icon [#38083] */
|
||||||
if (show_menu_icon) {
|
if (show_menu_icon) {
|
||||||
|
Loading…
Reference in New Issue
Block a user