Fix T44477: Overlapping tooltips in Outliner
Tooltips for buttons in the Outliner could overlap the Outliner's RMB menu in some cases (and there's no way to get rid of the tooltip again). This disables the button's tooltip before creating the menu (as we do it for the normal RMB menu)
This commit is contained in:
parent
1044dfd965
commit
18aaae101a
Notes:
blender-bot
2023-02-14 09:13:12 +01:00
Referenced by issue #44477, Color tool tip covering right click menu for the grease pencil in the outliner
|
@ -675,6 +675,7 @@ void UI_but_func_drawextra_set(
|
|||
void *arg1, void *arg2);
|
||||
|
||||
void UI_but_func_tooltip_set(uiBut *but, uiButToolTipFunc func, void *argN);
|
||||
void UI_but_tooltip_timer_remove(struct bContext *C, uiBut *but);
|
||||
|
||||
bool UI_textbutton_activate_rna(const struct bContext *C, struct ARegion *ar,
|
||||
const void *rna_poin_data, const char *rna_prop_id);
|
||||
|
|
|
@ -332,7 +332,6 @@ static void button_activate_exit(bContext *C, uiBut *but, uiHandleButtonData *da
|
|||
const bool mousemove, const bool onfree);
|
||||
static int ui_handler_region_menu(bContext *C, const wmEvent *event, void *userdata);
|
||||
static void ui_handle_button_activate(bContext *C, ARegion *ar, uiBut *but, uiButtonActivateType type);
|
||||
static void button_timers_tooltip_remove(bContext *C, uiBut *but);
|
||||
|
||||
#ifdef USE_DRAG_MULTINUM
|
||||
static void ui_multibut_restore(uiHandleButtonData *data, uiBlock *block);
|
||||
|
@ -5956,7 +5955,7 @@ static void menu_add_shortcut_cancel(struct bContext *C, void *arg1)
|
|||
static void popup_change_shortcut_func(bContext *C, void *arg1, void *UNUSED(arg2))
|
||||
{
|
||||
uiBut *but = (uiBut *)arg1;
|
||||
button_timers_tooltip_remove(C, but);
|
||||
UI_but_tooltip_timer_remove(C, but);
|
||||
UI_popup_block_invoke(C, menu_change_shortcut, but);
|
||||
}
|
||||
|
||||
|
@ -5977,7 +5976,7 @@ static void remove_shortcut_func(bContext *C, void *arg1, void *UNUSED(arg2))
|
|||
static void popup_add_shortcut_func(bContext *C, void *arg1, void *UNUSED(arg2))
|
||||
{
|
||||
uiBut *but = (uiBut *)arg1;
|
||||
button_timers_tooltip_remove(C, but);
|
||||
UI_but_tooltip_timer_remove(C, but);
|
||||
UI_popup_block_ex(C, menu_add_shortcut, NULL, menu_add_shortcut_cancel, but);
|
||||
}
|
||||
|
||||
|
@ -6026,7 +6025,7 @@ static bool ui_but_menu(bContext *C, uiBut *but)
|
|||
return false;
|
||||
}
|
||||
|
||||
button_timers_tooltip_remove(C, but);
|
||||
UI_but_tooltip_timer_remove(C, but);
|
||||
|
||||
/* highly unlikely getting the label ever fails */
|
||||
UI_but_string_info_get(C, but, &label, NULL);
|
||||
|
@ -6965,7 +6964,8 @@ static bool button_modal_state(uiHandleButtonState state)
|
|||
BUTTON_STATE_MENU_OPEN);
|
||||
}
|
||||
|
||||
static void button_timers_tooltip_remove(bContext *C, uiBut *but)
|
||||
/* removes tooltip timer from active but (meaning tooltip is disabled until it's reenabled again) */
|
||||
void UI_but_tooltip_timer_remove(bContext *C, uiBut *but)
|
||||
{
|
||||
uiHandleButtonData *data;
|
||||
|
||||
|
@ -7049,7 +7049,7 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s
|
|||
}
|
||||
else {
|
||||
but->flag |= UI_SELECT;
|
||||
button_timers_tooltip_remove(C, but);
|
||||
UI_but_tooltip_timer_remove(C, but);
|
||||
}
|
||||
|
||||
/* text editing */
|
||||
|
@ -7678,7 +7678,7 @@ static int ui_handle_button_event(bContext *C, const wmEvent *event, uiBut *but)
|
|||
case WHEELDOWNMOUSE:
|
||||
case MIDDLEMOUSE:
|
||||
case MOUSEPAN:
|
||||
button_timers_tooltip_remove(C, but);
|
||||
UI_but_tooltip_timer_remove(C, but);
|
||||
/* fall-through */
|
||||
default:
|
||||
/* handle button type specific events */
|
||||
|
@ -8653,7 +8653,7 @@ static int ui_handle_menu_event(
|
|||
{
|
||||
if (!but || !ui_but_contains_point_px(ar, but, event->x, event->y)) {
|
||||
if (but) {
|
||||
button_timers_tooltip_remove(C, but);
|
||||
UI_but_tooltip_timer_remove(C, but);
|
||||
}
|
||||
|
||||
menu->is_grab = true;
|
||||
|
|
|
@ -1654,9 +1654,14 @@ static int outliner_operation(bContext *C, wmOperator *UNUSED(op), const wmEvent
|
|||
Scene *scene = CTX_data_scene(C);
|
||||
ARegion *ar = CTX_wm_region(C);
|
||||
SpaceOops *soops = CTX_wm_space_outliner(C);
|
||||
uiBut *but = UI_context_active_but_get(C);
|
||||
TreeElement *te;
|
||||
float fmval[2];
|
||||
|
||||
if (but) {
|
||||
UI_but_tooltip_timer_remove(C, but);
|
||||
}
|
||||
|
||||
UI_view2d_region_to_view(&ar->v2d, event->mval[0], event->mval[1], &fmval[0], &fmval[1]);
|
||||
|
||||
for (te = soops->tree.first; te; te = te->next) {
|
||||
|
|
Loading…
Reference in New Issue