2010-08-02 Jan Djärv <jan.h.d@swipnet.se>
+ * 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.
+
* sysdep.c (child_setup_tty): Enable ICANON in lflags and set VEOF
to Control-D (Bug#6771).
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,
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;
UNBLOCK_INPUT;
return 1;
+#endif /* USE_GTK_TOOLTIP */
}
/* Show the tooltip at ROOT_X and ROOT_Y.
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)
{
gtk_widget_show_all (GTK_WIDGET (x->ttip_window));
UNBLOCK_INPUT;
}
+#endif
}
/* Hide tooltip if shown. Do nothing if not shown.
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;
ret = 1;
}
-
+#endif
return ret;
}
style->bg_pixmap_name[GTK_STATE_NORMAL] = g_strdup ("<none>");
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;
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
}
}
#define XSync(d, b) do { gdk_window_process_all_updates (); \
XSync (d, b); } while (0)
+/* The GtkTooltip API came in 2.12, but gtk-enable-tooltips in 2.14. */
+#if GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION > 13
+#define USE_GTK_TOOLTIP
+#endif
#endif /* USE_GTK */
GdkGeometry size_hints;
long hint_flags;
+#ifdef USE_GTK_TOOLTIP
GtkTooltip *ttip_widget;
GtkWidget *ttip_lbl;
GtkWindow *ttip_window;
-#endif
+#endif /* USE_GTK_TOOLTIP */
+
+#endif /* USE_GTK */
/* If >=0, a bitmap index. The indicated bitmap is used for the
icon. */