[maemo-commits] [maemo-commits] r14034 - in projects/haf/trunk/hildon-fm: . debian hildon-fm

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Sep 24 16:13:47 EEST 2007
Author: marivoll
Date: 2007-09-24 16:13:45 +0300 (Mon, 24 Sep 2007)
New Revision: 14034

Modified:
   projects/haf/trunk/hildon-fm/ChangeLog
   projects/haf/trunk/hildon-fm/debian/changelog
   projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c
Log:
	* hildon-fm/hildon-file-chooser-dialog.c (set_entry): Return a
	boolean indicating whether the entry has actually changed.
	(hildon_file_chooser_dialog_do_autonaming): Only select the entry
	text when it has changed.  Grab keyboard focus in that case as
	well (N68695).


Modified: projects/haf/trunk/hildon-fm/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-fm/ChangeLog	2007-09-24 13:13:41 UTC (rev 14033)
+++ projects/haf/trunk/hildon-fm/ChangeLog	2007-09-24 13:13:45 UTC (rev 14034)
@@ -1,3 +1,11 @@
+2007-09-24  Marius Vollmer  <marius.vollmer at nokia.com>
+
+	* hildon-fm/hildon-file-chooser-dialog.c (set_entry): Return a
+	boolean indicating whether the entry has actually changed.
+	(hildon_file_chooser_dialog_do_autonaming): Only select the entry
+	text when it has changed.  Grab keyboard focus in that case as
+	well (N68695).
+
 2007-09-24  Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>
 
 	* hildon-fm/hildon-file-system-model.c (dfa_run): Add a missing

Modified: projects/haf/trunk/hildon-fm/debian/changelog
===================================================================
--- projects/haf/trunk/hildon-fm/debian/changelog	2007-09-24 13:13:41 UTC (rev 14033)
+++ projects/haf/trunk/hildon-fm/debian/changelog	2007-09-24 13:13:45 UTC (rev 14034)
@@ -1,6 +1,6 @@
 libhildonfm (1:1.9.40~unreleased) unstable; urgency=low
 
-  * Fixes: NB#63339, NB#63171, NB#59490, NB#66361.
+  * Fixes: NB#63339, NB#63171, NB#59490, NB#66361, NB#68695.
 
  -- Marius Vollmer <marius.vollmer at nokia.com>  Mon, 17 Sep 2007 23:13:51 +0300
 

Modified: projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c
===================================================================
--- projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c	2007-09-24 13:13:41 UTC (rev 14033)
+++ projects/haf/trunk/hildon-fm/hildon-fm/hildon-file-chooser-dialog.c	2007-09-24 13:13:45 UTC (rev 14034)
@@ -364,12 +364,20 @@
   return text && strlen(text) > 0;
 }
 
-static void
+/* 
+   Sets content to name entry. 
+   Returns TRUE if content has changed, FALSE if not 
+*/ 
+static gboolean
 set_entry (GtkWidget *entry, const char *name, const char *ext)
 {
   if (name == NULL)
-    return;
+    return FALSE;
 
+  gchar *orig_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
+  const gchar *new_name;
+  gboolean retval;
+
   DBG ("SET ENTRY '%s' '%s'\n", name, ext);
 
   gtk_entry_set_text (GTK_ENTRY(entry), name);
@@ -385,6 +393,17 @@
                                 ext, strlen (ext),
                                 &position);
     }
+
+  new_name = gtk_entry_get_text (GTK_ENTRY (entry));
+
+  if (strcmp (new_name, orig_name) == 0)
+	retval = FALSE;
+  else
+    retval = TRUE;
+
+  g_free (orig_name);
+  return retval;
+
 }
 
 static gchar *
@@ -416,13 +435,13 @@
                                          priv)
 {
     g_assert(HILDON_IS_FILE_SELECTION(priv->filetree));
+	
+	gboolean changed;
 
     if (GTK_WIDGET_VISIBLE(priv->caption_control_name) &&
         priv->stub_name && priv->stub_name[0] && !priv->edited)
     {
         gchar *name = NULL;
-        gboolean selection;
-        gint pos;
 
         g_signal_handler_block(priv->entry_name, priv->changed_handler);
         if (priv->autonaming_enabled) {
@@ -439,31 +458,27 @@
             }
         }
 
-        pos = gtk_editable_get_position(GTK_EDITABLE(priv->entry_name));
-        selection =
-          gtk_editable_get_selection_bounds(GTK_EDITABLE(priv->entry_name),
-                                            NULL, NULL);
-
         if (name)
         {
-          gboolean edited = !selection &&
-                               (pos != g_utf8_strlen (gtk_entry_get_text(GTK_ENTRY(priv->entry_name)), -1));
-          set_entry (priv->entry_name, name, priv->ext_name);
+          changed = set_entry (priv->entry_name, name, priv->ext_name);
           g_free(name);
-          if (!edited)
-            gtk_editable_select_region(GTK_EDITABLE(priv->entry_name), 0, -1);
-          else
-            /* if the user has already started to edit the name,
-               try to preserve cursor position and don't autoselect */
-            gtk_editable_set_position(GTK_EDITABLE(priv->entry_name), pos);
-        }
+		}
         else
-          set_entry (priv->entry_name, priv->stub_name, priv->ext_name);
+          changed = set_entry (priv->entry_name, priv->stub_name, priv->ext_name);
 
         g_signal_handler_unblock(priv->entry_name, priv->changed_handler);
     }
     else
-      set_entry (priv->entry_name, priv->stub_name, priv->ext_name);
+      changed = set_entry (priv->entry_name, priv->stub_name, priv->ext_name);
+
+	if (changed) {
+    	gtk_editable_select_region(GTK_EDITABLE(priv->entry_name), 0, -1);
+		if (!gtk_widget_is_focus(GTK_WIDGET (priv->entry_name))) {
+			gtk_widget_grab_focus (GTK_WIDGET (priv->entry_name));
+		}
+	}
+
+    return;
 }
 
 /* Set PRIV->stub_name and PRIV->ext_name from NAME so that stub_name


More information about the maemo-commits mailing list