tooltipwindow: Stop using the ::size-allocate signal

Instead of connecting to ::size-allocate, call
gtk_native_set_tooltip and rely on the native
to allocate the tooltip window.
This commit is contained in:
Matthias Clasen 2020-05-05 22:11:55 -04:00
parent 3872da535f
commit 64b673853b

View File

@ -355,22 +355,13 @@ gtk_tooltip_window_hide (GtkWidget *widget)
gtk_widget_unmap (widget);
}
static void size_changed (GtkWidget *widget,
int width,
int height,
int baseline,
GtkTooltipWindow *window);
static void
gtk_tooltip_window_dispose (GObject *object)
{
GtkTooltipWindow *window = GTK_TOOLTIP_WINDOW (object);
if (window->relative_to)
{
g_signal_handlers_disconnect_by_func (window->relative_to, size_changed, window);
gtk_widget_unparent (GTK_WIDGET (window));
}
gtk_widget_unparent (GTK_WIDGET (window));
g_clear_pointer (&window->box, gtk_widget_unparent);
@ -523,16 +514,6 @@ gtk_tooltip_window_set_custom_widget (GtkTooltipWindow *window,
}
}
static void
size_changed (GtkWidget *widget,
int width,
int height,
int baseline,
GtkTooltipWindow *window)
{
gtk_native_check_resize (GTK_NATIVE (window));
}
void
gtk_tooltip_window_set_relative_to (GtkTooltipWindow *window,
GtkWidget *relative_to)
@ -545,20 +526,12 @@ gtk_tooltip_window_set_relative_to (GtkTooltipWindow *window,
g_object_ref (window);
if (window->relative_to)
{
g_signal_handlers_disconnect_by_func (window->relative_to, size_changed, window);
gtk_widget_unparent (GTK_WIDGET (window));
}
gtk_widget_unparent (GTK_WIDGET (window));
window->relative_to = relative_to;
if (window->relative_to)
{
g_signal_connect (window->relative_to, "size-allocate", G_CALLBACK (size_changed), window);
gtk_css_node_set_parent (gtk_widget_get_css_node (GTK_WIDGET (window)),
gtk_widget_get_css_node (relative_to));
gtk_widget_set_parent (GTK_WIDGET (window), relative_to);
}
gtk_widget_set_parent (GTK_WIDGET (window), relative_to);
g_object_unref (window);
}