- tooltip->window = g_object_ref (gtk_window_new (GTK_WINDOW_POPUP));
- gtk_window_set_type_hint (GTK_WINDOW (tooltip->window),
- GDK_WINDOW_TYPE_HINT_TOOLTIP);
- gtk_widget_set_app_paintable (tooltip->window, TRUE);
- gtk_window_set_resizable (GTK_WINDOW (tooltip->window), FALSE);
- gtk_widget_set_name (tooltip->window, "gtk-tooltip");
- g_signal_connect (tooltip->window, "hide",
- G_CALLBACK (gtk_tooltip_window_hide), tooltip);
-
- style = gtk_widget_get_style (tooltip->window);
-
- tooltip->alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
- gtk_alignment_set_padding (GTK_ALIGNMENT (tooltip->alignment),
- style->ythickness, style->ythickness,
- style->xthickness, style->xthickness);
- gtk_container_add (GTK_CONTAINER (tooltip->window), tooltip->alignment);
- gtk_widget_show (tooltip->alignment);
-
- g_signal_connect_swapped (tooltip->window, "style-set",
- G_CALLBACK (gtk_tooltip_window_style_set), tooltip);
- g_signal_connect_swapped (tooltip->window, "draw",
- G_CALLBACK (gtk_tooltip_paint_window), tooltip);
-
- tooltip->box = gtk_hbox_new (FALSE, style->xthickness);
- gtk_container_add (GTK_CONTAINER (tooltip->alignment), tooltip->box);
- gtk_widget_show (tooltip->box);
-
- tooltip->image = gtk_image_new ();
- gtk_box_pack_start (GTK_BOX (tooltip->box), tooltip->image,
- FALSE, FALSE, 0);
-
- tooltip->label = gtk_label_new ("");
- gtk_label_set_line_wrap (GTK_LABEL (tooltip->label), TRUE);
- gtk_box_pack_start (GTK_BOX (tooltip->box), tooltip->label,
- FALSE, FALSE, 0);
-
+ window = gtk_window_new (GTK_WINDOW_POPUP);
+ screen = gtk_widget_get_screen (window);
+ visual = gdk_screen_get_rgba_visual (screen);
+
+ if (visual != NULL)
+ gtk_widget_set_visual (window, visual);
+
+ gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_TOOLTIP);
+ gtk_widget_set_app_paintable (window, TRUE);
+ gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
+ gtk_widget_set_name (window, "gtk-tooltip");
+ g_signal_connect (window, "hide",
+ G_CALLBACK (gtk_tooltip_window_hide), tooltip);
+
+ context = gtk_widget_get_style_context (window);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_TOOLTIP);
+
+ g_signal_connect_swapped (window, "draw",
+ G_CALLBACK (gtk_tooltip_paint_window), tooltip);
+ g_signal_connect_swapped (window, "realize",
+ G_CALLBACK (gtk_tooltip_realize_window), tooltip);
+ g_signal_connect_swapped (window, "composited-changed",
+ G_CALLBACK (gtk_tooltip_composited_changed), tooltip);
+
+ /* FIXME: don't hardcode the padding */
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+ gtk_widget_set_margin_left (box, 6);
+ gtk_widget_set_margin_right (box, 6);
+ gtk_widget_set_margin_top (box, 6);
+ gtk_widget_set_margin_bottom (box, 6);
+ gtk_container_add (GTK_CONTAINER (window), box);
+ gtk_widget_show (box);
+
+ image = gtk_image_new ();
+ gtk_box_pack_start (GTK_BOX (box), image, FALSE, FALSE, 0);
+
+ label = gtk_label_new ("");
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
+
+ tooltip->window = window;
+ tooltip->box = box;
+ tooltip->image = image;
+ tooltip->label = label;