[libgda] GdaBrowser: improved query editor tooltip



commit 2eff57b7b482ea97b987d482d48eba91b99d019d
Author: Vivien Malerba <malerba gnome-db org>
Date:   Tue Jul 12 20:39:35 2011 +0200

    GdaBrowser: improved query editor tooltip

 tools/browser/query-exec/query-editor.c |   32 ++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 3 deletions(-)
---
diff --git a/tools/browser/query-exec/query-editor.c b/tools/browser/query-exec/query-editor.c
index 7ca7248..d45e93d 100644
--- a/tools/browser/query-exec/query-editor.c
+++ b/tools/browser/query-exec/query-editor.c
@@ -37,6 +37,7 @@
 #include "../browser-window.h"
 #include <libgda-ui/internal/popup-container.h>
 #include "../support.h"
+#include "../common/widget-overlay.h"
 
 #define QUERY_EDITOR_LANGUAGE_SQL "gda-sql"
 #define COLOR_ALTER_FACTOR 1.8
@@ -91,6 +92,10 @@ struct _QueryEditorPrivate {
 	GtkTreeView *completion_treeview;
 	GtkCellRenderer *completion_renderer;
 	GtkWidget *completion_sw;
+
+	/* tooltip */
+	GtkWidget *ovl;
+	GtkWidget *tooltip_widget;
 };
 
 static void query_editor_class_init (QueryEditorClass *klass);
@@ -658,6 +663,7 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
 	int tab = 8;
 	gboolean highlight = TRUE;
 	gboolean showlinesno = FALSE;
+	GtkWidget *ovl, *wid;
 
 	g_return_if_fail (QUERY_IS_EDITOR (editor));
 
@@ -677,12 +683,31 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
 	editor->priv->completion_popup = NULL;
 
 	/* set up widgets */
+	ovl = widget_overlay_new ();
+	editor->priv->ovl = ovl;
+	gtk_box_pack_start (GTK_BOX (editor), ovl, TRUE, TRUE, 2);
+
 	editor->priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
         gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window),
 					     GTK_SHADOW_ETCHED_OUT);
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window),
 					GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-	gtk_box_pack_start (GTK_BOX (editor), editor->priv->scrolled_window, TRUE, TRUE, 2);
+	gtk_container_add (GTK_CONTAINER (ovl), editor->priv->scrolled_window);
+	widget_overlay_set_child_props (WIDGET_OVERLAY (ovl), editor->priv->scrolled_window,
+					WIDGET_OVERLAY_CHILD_HALIGN, WIDGET_OVERLAY_ALIGN_FILL,
+					WIDGET_OVERLAY_CHILD_VALIGN, WIDGET_OVERLAY_ALIGN_FILL,
+					-1);
+
+	wid = gtk_label_new ("");
+	editor->priv->tooltip_widget = wid;
+	gtk_label_set_markup (GTK_LABEL (wid), QUERY_EDITOR_TOOLTIP);
+	gtk_container_add (GTK_CONTAINER (ovl), wid);
+	widget_overlay_set_child_props (WIDGET_OVERLAY (ovl), wid,
+					WIDGET_OVERLAY_CHILD_HALIGN, WIDGET_OVERLAY_ALIGN_CENTER,
+					WIDGET_OVERLAY_CHILD_VALIGN, WIDGET_OVERLAY_ALIGN_CENTER,
+					WIDGET_OVERLAY_CHILD_ALPHA, .8,
+					WIDGET_OVERLAY_CHILD_TOOLTIP, TRUE,
+					-1);
 
 #ifdef HAVE_GTKSOURCEVIEW
 	editor->priv->text = gtk_source_view_new ();
@@ -695,7 +720,6 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
 #endif
 
 	gtk_container_add (GTK_CONTAINER (editor->priv->scrolled_window), editor->priv->text);
-	gtk_widget_set_tooltip_markup (editor->priv->text, QUERY_EDITOR_TOOLTIP);
 	g_signal_connect (editor->priv->text, "event", 
 			  G_CALLBACK (event), editor);
 	g_signal_connect (gtk_text_view_get_buffer (GTK_TEXT_VIEW (editor->priv->text)), "changed", 
@@ -732,7 +756,7 @@ query_editor_init (QueryEditor *editor, G_GNUC_UNUSED QueryEditorClass *klass)
 
 	create_tags_for_sql (editor, QUERY_EDITOR_LANGUAGE_SQL);
 
-	gtk_widget_show_all (editor->priv->scrolled_window);
+	gtk_widget_show_all (ovl);
 
 	/* timeout function to update timestamps */
 	editor->priv->ts_timeout_id = 0;
@@ -928,6 +952,8 @@ query_editor_set_mode (QueryEditor *editor, QueryEditorMode mode)
 		gtk_widget_set_tooltip_markup (editor->priv->text, NULL);
 		gtk_text_view_set_editable (GTK_TEXT_VIEW (editor->priv->text), FALSE);
 		gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (editor->priv->text), FALSE);
+		gtk_widget_destroy (editor->priv->tooltip_widget);
+		editor->priv->tooltip_widget = NULL;
 		break;
 	default:
 		g_assert_not_reached ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]