summaryrefslogtreecommitdiff
path: root/gtk/gtktooltip.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtktooltip.c')
-rw-r--r--gtk/gtktooltip.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c
index 2b70204172..dd36da4b13 100644
--- a/gtk/gtktooltip.c
+++ b/gtk/gtktooltip.c
@@ -830,8 +830,20 @@ find_topmost_widget_coords_from_event (GdkEvent *event,
/* Make sure the pointer can actually be on the widget returned. */
gtk_widget_get_allocation (tmp, &allocation);
- if (tx < 0 || tx >= allocation.width ||
- ty < 0 || ty >= allocation.height)
+ allocation.x = 0;
+ allocation.y = 0;
+ if (GTK_IS_WINDOW (tmp))
+ {
+ GtkBorder border;
+ _gtk_window_get_shadow_width (GTK_WINDOW (tmp), &border);
+ allocation.x = border.left;
+ allocation.y = border.top;
+ allocation.width -= border.left + border.right;
+ allocation.height -= border.top + border.bottom;
+ }
+
+ if (tx < allocation.x || tx >= allocation.width ||
+ ty < allocation.y || ty >= allocation.height)
return NULL;
if (x)
@@ -938,6 +950,7 @@ get_bounding_box (GtkWidget *widget,
GdkRectangle *bounds)
{
GtkAllocation allocation;
+ GtkBorder border = { 0, };
GdkWindow *window;
gint x, y;
gint w, h;
@@ -951,10 +964,12 @@ get_bounding_box (GtkWidget *widget,
window = gtk_widget_get_window (widget);
gtk_widget_get_allocation (widget, &allocation);
- x = allocation.x;
- y = allocation.y;
- w = allocation.width;
- h = allocation.height;
+ if (GTK_IS_WINDOW (widget))
+ _gtk_window_get_shadow_width (GTK_WINDOW (widget), &border);
+ x = allocation.x + border.left;
+ y = allocation.y + border.right;
+ w = allocation.width - border.left - border.right;
+ h = allocation.height - border.top - border.bottom;
gdk_window_get_root_coords (window, x, y, &x1, &y1);
gdk_window_get_root_coords (window, x + w, y, &x2, &y2);
@@ -1532,13 +1547,17 @@ _gtk_tooltip_handle_event (GdkEvent *event)
#ifdef DEBUG_TOOLTIP
if (has_tooltip_widget)
+ {
+ GtkAllocation allocation;
+ gtk_widget_get_allocation (has_tooltip_widget, &allocation);
g_print ("%p (%s) at (%d, %d) %dx%d pointer: (%d, %d)\n",
has_tooltip_widget, gtk_widget_get_name (has_tooltip_widget),
- has_tooltip_widget->allocation.x,
- has_tooltip_widget->allocation.y,
- has_tooltip_widget->allocation.width,
- has_tooltip_widget->allocation.height,
+ allocation.x,
+ allocation.y,
+ allocation.width,
+ allocation.height,
x, y);
+ }
#endif /* DEBUG_TOOLTIP */
/* Always poll for a next motion event */