}
static struct frame *
-haiku_mouse_or_wdesc_frame (void *window)
+haiku_mouse_or_wdesc_frame (void *window, bool accept_tooltip)
{
struct frame *lm_f = (gui_mouse_grabbed (x_display_list)
? x_display_list->last_mouse_frame
struct frame *w_f = haiku_window_to_frame (window);
/* Do not return a tooltip frame. */
- if (!w_f || FRAME_TOOLTIP_P (w_f))
+ if (!w_f || (FRAME_TOOLTIP_P (w_f) && !accept_tooltip))
return EQ (track_mouse, Qdropping) ? lm_f : NULL;
else
/* When dropping it would be probably nice to raise w_f
case MOUSE_MOTION:
{
struct haiku_mouse_motion_event *b = buf;
- struct frame *f = haiku_mouse_or_wdesc_frame (b->window);
+ struct frame *f = haiku_mouse_or_wdesc_frame (b->window, true);
Mouse_HLInfo *hlinfo = &x_display_list->mouse_highlight;
Lisp_Object frame;
if (any_help_event_p)
do_help = -1;
-
break;
}
case BUTTON_DOWN:
{
struct haiku_button_event *b = buf;
- struct frame *f = haiku_mouse_or_wdesc_frame (b->window);
+ struct frame *f = haiku_mouse_or_wdesc_frame (b->window, false);
Lisp_Object tab_bar_arg = Qnil;
int tab_bar_p = 0, tool_bar_p = 0;
bool up_okay_p = false;