GtkTooltip *tooltip,
gpointer data)
{
- GdkColor color = { 0, 0, 65535 };
+ GdkRGBA color = { 0, 0, 1, 1 };
GtkWindow *window = gtk_widget_get_tooltip_window (widget);
- gtk_widget_modify_bg (GTK_WIDGET (window), GTK_STATE_NORMAL, &color);
+ gtk_widget_override_background_color (GTK_WIDGET (window), 0, &color);
return TRUE;
}
GtkTextTag *tag = data;
GtkTextIter iter;
GtkTextView *text_view = GTK_TEXT_VIEW (widget);
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer (text_view);
if (keyboard_tip)
{
gint offset;
- g_object_get (text_view->buffer, "cursor-position", &offset, NULL);
- gtk_text_buffer_get_iter_at_offset (text_view->buffer, &iter, offset);
+ g_object_get (buffer, "cursor-position", &offset, NULL);
+ gtk_text_buffer_get_iter_at_offset (buffer, &iter, offset);
}
else
{
char buffer[512];
- if (keyboard_tip)
- {
- /* Keyboard mode */
- gtk_tree_view_get_cursor (tree_view, &path, NULL);
-
- if (!path)
- return FALSE;
- }
- else
- {
- gint bin_x, bin_y;
-
- gtk_tree_view_convert_widget_to_bin_window_coords (tree_view, x, y,
- &bin_x, &bin_y);
-
- /* Mouse mode */
- if (!gtk_tree_view_get_path_at_pos (tree_view, bin_x, bin_y,
- &path, NULL, NULL, NULL))
- return FALSE;
- }
-
if (!gtk_tree_view_get_tooltip_context (tree_view, &x, &y,
keyboard_tip,
&model, &path, &iter))
}
static gboolean
-drawing_area_expose (GtkWidget *drawing_area,
- GdkEventExpose *event,
- gpointer data)
+drawing_area_draw (GtkWidget *drawing_area,
+ cairo_t *cr,
+ gpointer data)
{
gint i;
- cairo_t *cr;
- gdk_window_get_pointer (drawing_area->window, NULL, NULL, NULL);
-
- cr = gdk_cairo_create (drawing_area->window);
-
- cairo_rectangle (cr, 0, 0,
- drawing_area->allocation.width,
- drawing_area->allocation.height);
cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
- cairo_fill (cr);
+ cairo_paint (cr);
for (i = 0; i < G_N_ELEMENTS (rectangles); i++)
{
cairo_fill (cr);
}
- cairo_destroy (cr);
-
return FALSE;
}
+static gboolean
+query_tooltip_label_cb (GtkWidget *widget,
+ gint x,
+ gint y,
+ gboolean keyboard_tip,
+ GtkTooltip *tooltip,
+ gpointer data)
+{
+ GtkWidget *custom = data;
+
+ gtk_tooltip_set_custom (tooltip, custom);
+
+ return TRUE;
+}
+
int
main (int argc, char *argv[])
{
GtkWidget *box;
GtkWidget *drawing_area;
GtkWidget *button;
+ GtkWidget *label;
GtkWidget *tooltip_window;
GtkWidget *tooltip_button;
g_signal_connect (window, "delete_event",
G_CALLBACK (gtk_main_quit), NULL);
- box = gtk_vbox_new (FALSE, 3);
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
gtk_container_add (GTK_CONTAINER (window), box);
/* A check button using the tooltip-markup property */
/* Set a tooltip on the column */
column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree_view), 0);
gtk_tree_view_column_set_clickable (column, TRUE);
- g_object_set (column->button, "tooltip-text", "Header", NULL);
+ g_object_set (gtk_tree_view_column_get_button (column), "tooltip-text", "Header", NULL);
gtk_box_pack_start (GTK_BOX (box), tree_view, FALSE, FALSE, 2);
drawing_area = gtk_drawing_area_new ();
gtk_widget_set_size_request (drawing_area, 320, 240);
g_object_set (drawing_area, "has-tooltip", TRUE, NULL);
- g_signal_connect (drawing_area, "expose_event",
- G_CALLBACK (drawing_area_expose), NULL);
+ g_signal_connect (drawing_area, "draw",
+ G_CALLBACK (drawing_area_draw), NULL);
g_signal_connect (drawing_area, "query-tooltip",
G_CALLBACK (query_tooltip_drawing_area_cb), NULL);
gtk_box_pack_start (GTK_BOX (box), drawing_area, FALSE, FALSE, 2);
+ button = gtk_label_new ("Custom tooltip I");
+ label = gtk_label_new ("See, custom");
+ g_object_ref_sink (label);
+ g_object_set (button, "has-tooltip", TRUE, NULL);
+ g_signal_connect (button, "query-tooltip",
+ G_CALLBACK (query_tooltip_label_cb), label);
+ gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
+
+ button = gtk_label_new ("Custom tooltip II");
+ label = gtk_label_new ("See, custom, too");
+ g_object_ref_sink (label);
+ g_object_set (button, "has-tooltip", TRUE, NULL);
+ gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 2);
+ g_signal_connect (button, "query-tooltip",
+ G_CALLBACK (query_tooltip_label_cb), label);
+
/* Done! */
gtk_widget_show_all (window);