[gnumeric] hide gee tooltip on move of window (and some other window actions)
- From: Andreas J. Guelzow <guelzow src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] hide gee tooltip on move of window (and some other window actions)
- Date: Mon, 14 Jun 2010 20:39:20 +0000 (UTC)
commit 898d8b0b13b2e0ee0b90600d119f4187fb8464be
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date: Mon Jun 14 14:35:31 2010 -0600
hide gee tooltip on move of window (and some other window actions)
2010-06-14 Andreas J. Guelzow <aguelzow pyrshep ca>
* gnumeric-expr-entry.c (_GnmExprEntry): add field
(gee_init): initalize new field
(gee_delete_tooltip): disconnect handler
(cb_gee_configure_event): new
(gee_create_tooltip): connect handler
src/widgets/ChangeLog | 8 ++++++++
src/widgets/gnumeric-expr-entry.c | 23 +++++++++++++++++++++++
2 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/src/widgets/ChangeLog b/src/widgets/ChangeLog
index 680c65f..5a037ff 100644
--- a/src/widgets/ChangeLog
+++ b/src/widgets/ChangeLog
@@ -1,5 +1,13 @@
2010-06-14 Andreas J. Guelzow <aguelzow pyrshep ca>
+ * gnumeric-expr-entry.c (_GnmExprEntry): add field
+ (gee_init): initalize new field
+ (gee_delete_tooltip): disconnect handler
+ (cb_gee_configure_event): new
+ (gee_create_tooltip): connect handler
+
+2010-06-14 Andreas J. Guelzow <aguelzow pyrshep ca>
+
* gnumeric-expr-entry.c (_GnmExprEntry): new fields
(gee_delete_tooltip): delete our tooltip window
(gee_create_tooltip): new
diff --git a/src/widgets/gnumeric-expr-entry.c b/src/widgets/gnumeric-expr-entry.c
index 03fa3f7..7566b29 100644
--- a/src/widgets/gnumeric-expr-entry.c
+++ b/src/widgets/gnumeric-expr-entry.c
@@ -74,6 +74,7 @@ struct _GnmExprEntry {
struct {
GtkWidget *tooltip;
GnmFunc *fd;
+ guint handlerid;
} tooltip;
GOFormat const *constant_format;
@@ -590,6 +591,21 @@ gee_delete_tooltip (GnmExprEntry *gee)
gnm_func_unref (gee->tooltip.fd);
gee->tooltip.fd = NULL;
}
+ if (gee->tooltip.handlerid != 0) {
+ g_signal_handler_disconnect (gtk_widget_get_toplevel
+ (GTK_WIDGET (gee->entry)),
+ gee->tooltip.handlerid);
+ gee->tooltip.handlerid = 0;
+ }
+}
+
+static gboolean
+cb_gee_configure_event (GtkWidget *widget,
+ GdkEventConfigure *event,
+ gpointer user_data)
+{
+ gee_delete_tooltip (user_data);
+ return FALSE;
}
static GtkWidget *
@@ -605,6 +621,12 @@ gee_create_tooltip (GnmExprEntry *gee, gchar const *str)
toplevel = GTK_WINDOW (gtk_widget_get_toplevel
(GTK_WIDGET (gee->entry)));
+ gtk_widget_add_events(GTK_WIDGET(toplevel), GDK_CONFIGURE);
+ if (gee->tooltip.handlerid == 0)
+ gee->tooltip.handlerid = g_signal_connect
+ (G_OBJECT (toplevel), "configure-event",
+ G_CALLBACK (cb_gee_configure_event), gee);
+
screen = gtk_window_get_screen (toplevel);
gtk_widget_size_request (GTK_WIDGET (gee->entry), &requisition);
@@ -954,6 +976,7 @@ gee_init (GnmExprEntry *gee)
gee->feedback_disabled = FALSE;
gee->tooltip.tooltip = NULL;
gee->tooltip.fd = NULL;
+ gee->tooltip.handlerid = 0;
gee_rangesel_reset (gee);
gee->entry = GTK_ENTRY (gtk_entry_new ());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]