gdm r6641 - in trunk: . gui/user-switch-applet



Author: mccann
Date: Wed Dec 17 02:26:05 2008
New Revision: 6641
URL: http://svn.gnome.org/viewvc/gdm?rev=6641&view=rev

Log:
2008-12-16  William Jon McCann  <jmccann redhat com>

	* gui/user-switch-applet/applet.c (on_menu_key_press_event):
	* gui/user-switch-applet/gdm-entry-menu-item.c (send_focus_change),
	(gdm_entry_menu_item_select), (gdm_entry_menu_item_deselect),
	(on_entry_move_focus), (gdm_entry_menu_item_init):
	Fix some of the focus issues.



Modified:
   trunk/ChangeLog
   trunk/gui/user-switch-applet/applet.c
   trunk/gui/user-switch-applet/gdm-entry-menu-item.c

Modified: trunk/gui/user-switch-applet/applet.c
==============================================================================
--- trunk/gui/user-switch-applet/applet.c	(original)
+++ trunk/gui/user-switch-applet/applet.c	Wed Dec 17 02:26:05 2008
@@ -881,9 +881,12 @@
 
         entry = gdm_entry_menu_item_get_entry (GDM_ENTRY_MENU_ITEM (adata->user_item));
 
-        gtk_widget_event (entry, (GdkEvent *)event);
-
-        return FALSE;
+        if (GTK_WIDGET_HAS_FOCUS (entry)) {
+                gtk_widget_event (entry, (GdkEvent *)event);
+                return TRUE;
+        } else {
+                return FALSE;
+        }
 }
 
 static void

Modified: trunk/gui/user-switch-applet/gdm-entry-menu-item.c
==============================================================================
--- trunk/gui/user-switch-applet/gdm-entry-menu-item.c	(original)
+++ trunk/gui/user-switch-applet/gdm-entry-menu-item.c	Wed Dec 17 02:26:05 2008
@@ -110,10 +110,11 @@
 
         g_object_ref (widget);
 
-        if (in)
+        if (in) {
                 GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
-        else
+        } else {
                 GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
+        }
 
         fevent->focus_change.type = GDK_FOCUS_CHANGE;
         fevent->focus_change.window = g_object_ref (widget->window);
@@ -156,14 +157,15 @@
 gdm_entry_menu_item_select (GtkItem *item)
 {
         g_return_if_fail (GDM_IS_ENTRY_MENU_ITEM (item));
-        /* We ignore it */
+        send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), TRUE);
 }
 
 static void
 gdm_entry_menu_item_deselect (GtkItem *item)
 {
         g_return_if_fail (GDM_IS_ENTRY_MENU_ITEM (item));
-        /* We ignore it */
+
+        send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), FALSE);
 }
 
 static void
@@ -214,6 +216,18 @@
 }
 
 static void
+on_entry_move_focus (GtkWidget        *widget,
+                     GtkDirectionType  direction,
+                     GdmEntryMenuItem *item)
+{
+        g_debug ("focus move");
+        send_focus_change (GTK_WIDGET (GDM_ENTRY_MENU_ITEM (item)->entry), FALSE);
+        g_signal_emit_by_name (item,
+                               "move-focus",
+                               GTK_DIR_TAB_FORWARD);
+}
+
+static void
 gdm_entry_menu_item_init (GdmEntryMenuItem *item)
 {
         PangoFontDescription *fontdesc;
@@ -230,12 +244,19 @@
         gtk_box_pack_start (GTK_BOX (item->hbox), item->image, FALSE, FALSE, 0);
 
         item->entry = gtk_text_view_new ();
+        gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (item->entry), FALSE);
+        gtk_text_view_set_editable (GTK_TEXT_VIEW (item->entry), TRUE);
         gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (item->entry),
                                      GTK_WRAP_WORD);
         g_signal_connect (item->entry,
                           "show",
                           G_CALLBACK (on_entry_show),
                           item);
+        g_signal_connect (item->entry,
+                          "move-focus",
+                          G_CALLBACK (on_entry_move_focus),
+                          item);
+
         buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (item->entry));
         gtk_text_buffer_set_text (buffer, _("Status"), 0);
         g_signal_connect (buffer,



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