gnome-utils r8261 - trunk/logview



Author: cosimoc
Date: Tue Dec 23 13:26:27 2008
New Revision: 8261
URL: http://svn.gnome.org/viewvc/gnome-utils?rev=8261&view=rev

Log:
First implementation of focus handling for the LogviewFindbar.

Modified:
   trunk/logview/logview-findbar.c
   trunk/logview/logview-findbar.h
   trunk/logview/logview.c

Modified: trunk/logview/logview-findbar.c
==============================================================================
--- trunk/logview/logview-findbar.c	(original)
+++ trunk/logview/logview-findbar.c	Tue Dec 23 13:26:27 2008
@@ -19,6 +19,7 @@
 
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
 
 #include "logview-findbar.h"
 
@@ -97,6 +98,21 @@
   g_signal_emit (findbar, signals[TEXT_CHANGED], 0, findbar->priv->string, NULL);
 }
 
+static gboolean
+entry_key_press_event_cb (GtkWidget *entry,
+                          GdkEventKey *event,
+                          gpointer user_data)
+{
+  LogviewFindbar *findbar = user_data;
+
+  if (event->keyval == GDK_Escape) {
+    gtk_widget_hide (GTK_WIDGET (findbar));
+    return TRUE;
+  }
+
+  return FALSE;
+}
+
 static void 
 logview_findbar_init (LogviewFindbar *findbar)
 {
@@ -168,6 +184,16 @@
                     G_CALLBACK (entry_activate_cb), findbar);
   g_signal_connect (priv->entry, "changed",
                     G_CALLBACK (entry_changed_cb), findbar);
+  g_signal_connect (priv->entry, "key-press-event",
+                    G_CALLBACK (entry_key_press_event_cb), findbar);
+}
+
+static void
+do_grab_focus (GtkWidget *widget)
+{
+  LogviewFindbar *findbar = LOGVIEW_FINDBAR (widget);
+
+  gtk_widget_grab_focus (findbar->priv->entry);
 }
 
 static void
@@ -184,9 +210,12 @@
 logview_findbar_class_init (LogviewFindbarClass *klass)
 {
   GObjectClass *oclass = G_OBJECT_CLASS (klass);
+  GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass);
 
   oclass->finalize = do_finalize;
 
+  wclass->grab_focus = do_grab_focus;
+
   signals[PREVIOUS] = g_signal_new ("previous",
                                     G_OBJECT_CLASS_TYPE (oclass),
                                     G_SIGNAL_RUN_FIRST,
@@ -222,3 +251,12 @@
   widget = g_object_new (LOGVIEW_TYPE_FINDBAR, NULL);
   return widget;
 }
+
+void
+logview_findbar_open (LogviewFindbar *findbar)
+{
+  g_assert (LOGVIEW_IS_FINDBAR (findbar));
+
+  gtk_widget_show (GTK_WIDGET (findbar));
+  gtk_widget_grab_focus (GTK_WIDGET (findbar));
+}

Modified: trunk/logview/logview-findbar.h
==============================================================================
--- trunk/logview/logview-findbar.h	(original)
+++ trunk/logview/logview-findbar.h	Tue Dec 23 13:26:27 2008
@@ -61,6 +61,7 @@
 
 /* public methods */
 GtkWidget *  logview_findbar_new (void);
+void         logview_findbar_open (LogviewFindbar *findbar);
 const char * logview_findbar_get_text (LogviewFindbar *findbar);
 
 G_END_DECLS

Modified: trunk/logview/logview.c
==============================================================================
--- trunk/logview/logview.c	(original)
+++ trunk/logview/logview.c	Tue Dec 23 13:26:27 2008
@@ -449,8 +449,7 @@
 {
   g_assert (LOGVIEW_IS_WINDOW (logview));
 
-  gtk_widget_show (logview->priv->find_bar);
-//  logview_findbar_grab_focus (LOGVIEW_FINDBAR (logview->priv->find_bar));
+  logview_findbar_open (LOGVIEW_FINDBAR (logview->priv->find_bar));
 }
 
 void



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