# HG changeset patch # User Jan D. # Date 1280753193 -7200 # Node ID 09adf0d4c6d95a2013d1403ff614c94b396d7b45 # Parent e20f769083f943d1ce9ce9edfa2f0dd6487fb5ad Don't use Gtk+ tooltip unless Gtk+ version => 2.14. * gtkutil.c (hierarchy_ch_cb, qttip_cb): Do not define unless USE_GTK_TOOLTIP. (xg_prepare_tooltip): Return 0 unless USE_GTK_TOOLTIP (xg_show_tooltip, xg_hide_tooltip): Do nothing unless USE_GTK_TOOLTIP. (xg_create_frame_widgets): Surrond tooltip-related code with ifdef USE_GTK_TOOLTIP. (xg_free_frame_widgets): Don't delete ttip_* unless USE_GTK_TOOLTIP. * xterm.h (USE_GTK_TOOLTIP): New define. (struct x_output): Put ttip_* inside ifdef USE_GTK_TOOLTIP. diff -r e20f769083f9 -r 09adf0d4c6d9 src/gtkutil.c --- a/src/gtkutil.c Mon Aug 02 12:25:27 2010 +0200 +++ b/src/gtkutil.c Mon Aug 02 14:46:33 2010 +0200 @@ -514,6 +514,8 @@ We use that to pop down the tooltip. This happens if Gtk+ for some reason wants to change or hide the tooltip. */ +#ifdef USE_GTK_TOOLTIP + static void hierarchy_ch_cb (GtkWidget *widget, GtkWidget *previous_toplevel, @@ -562,15 +564,20 @@ return FALSE; } +#endif /* USE_GTK_TOOLTIP */ + /* Prepare a tooltip to be shown, i.e. calculate WIDTH and HEIGHT. Return zero if no system tooltip available, non-zero otherwise. */ int xg_prepare_tooltip (FRAME_PTR f, - Lisp_Object string, - int *width, + Lisp_Object string, + int *width, int *height) { +#ifndef USE_GTK_TOOLTIP + return 0; +#else struct x_output *x = f->output_data.x; GtkWidget *widget; GdkWindow *gwin; @@ -614,6 +621,7 @@ UNBLOCK_INPUT; return 1; +#endif /* USE_GTK_TOOLTIP */ } /* Show the tooltip at ROOT_X and ROOT_Y. @@ -622,6 +630,7 @@ void xg_show_tooltip (FRAME_PTR f, int root_x, int root_y) { +#ifdef USE_GTK_TOOLTIP struct x_output *x = f->output_data.x; if (x->ttip_window) { @@ -630,6 +639,7 @@ gtk_widget_show_all (GTK_WIDGET (x->ttip_window)); UNBLOCK_INPUT; } +#endif } /* Hide tooltip if shown. Do nothing if not shown. @@ -640,6 +650,7 @@ xg_hide_tooltip (FRAME_PTR f) { int ret = 0; +#ifdef USE_GTK_TOOLTIP if (f->output_data.x->ttip_window) { GtkWindow *win = f->output_data.x->ttip_window; @@ -657,7 +668,7 @@ ret = 1; } - +#endif return ret; } @@ -1002,12 +1013,14 @@ style->bg_pixmap_name[GTK_STATE_NORMAL] = g_strdup (""); gtk_widget_modify_style (wfixed, style); +#ifdef USE_GTK_TOOLTIP /* Steal a tool tip window we can move ourselves. */ f->output_data.x->ttip_widget = 0; f->output_data.x->ttip_lbl = 0; f->output_data.x->ttip_window = 0; gtk_widget_set_tooltip_text (wtop, "Dummy text"); g_signal_connect (wtop, "query-tooltip", G_CALLBACK (qttip_cb), f); +#endif UNBLOCK_INPUT; @@ -1023,10 +1036,12 @@ gtk_widget_destroy (FRAME_GTK_OUTER_WIDGET (f)); FRAME_X_WINDOW (f) = 0; /* Set to avoid XDestroyWindow in xterm.c */ FRAME_GTK_OUTER_WIDGET (f) = 0; +#ifdef USE_GTK_TOOLTIP if (x->ttip_lbl) gtk_widget_destroy (x->ttip_lbl); if (x->ttip_widget) g_object_unref (G_OBJECT (x->ttip_widget)); +#endif } }