[maemo-commits] [maemo-commits] r13237 - in projects/haf/trunk/gtk+: . gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Aug 16 14:06:53 EEST 2007
Author: kris
Date: 2007-08-16 14:06:48 +0300 (Thu, 16 Aug 2007)
New Revision: 13237

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/gtk/gtktreeprivate.h
   projects/haf/trunk/gtk+/gtk/gtktreeview.c
Log:
2007-08-16  Kristian Rietveld  <kris at imendio.com>

	Improve on "row-activate on single tap, but now until
	button-release", fixes MB#1481.

	* gtk/gtktreeprivate.h (GtkTreePrivate): add queued_shift_pressed and
	queued_ctrl_pressed fiels.

	* gtk/gtktreeview.c (gtk_tree_view_init): initialize those newly
	added fields,
	(gtk_tree_view_button_press): set queue_{shift,ctrl}_pressed,
	(gtk_tree_view_button_release): improve the delayed row-activation
	handling by correctly handling shift/ctrl+clicks.



Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2007-08-16 10:56:50 UTC (rev 13236)
+++ projects/haf/trunk/gtk+/ChangeLog	2007-08-16 11:06:48 UTC (rev 13237)
@@ -1,3 +1,17 @@
+2007-08-16  Kristian Rietveld  <kris at imendio.com>
+
+	Improve on "row-activate on single tap, but now until
+	button-release", fixes MB#1481.
+
+	* gtk/gtktreeprivate.h (GtkTreePrivate): add queued_shift_pressed and
+	queued_ctrl_pressed fiels.
+
+	* gtk/gtktreeview.c (gtk_tree_view_init): initialize those newly
+	added fields,
+	(gtk_tree_view_button_press): set queue_{shift,ctrl}_pressed,
+	(gtk_tree_view_button_release): improve the delayed row-activation
+	handling by correctly handling shift/ctrl+clicks.
+
 2007-08-15  Kristian Rietveld  <kris at imendio.com>
 
 	* gtk/gtktreeview.c (gtk_tree_view_button_press): only continue

Modified: projects/haf/trunk/gtk+/gtk/gtktreeprivate.h
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtktreeprivate.h	2007-08-16 10:56:50 UTC (rev 13236)
+++ projects/haf/trunk/gtk+/gtk/gtktreeprivate.h	2007-08-16 11:06:48 UTC (rev 13237)
@@ -273,6 +273,9 @@
   GtkTreeRowReference *queued_select_row;
   GtkTreeRowReference *queued_expand_row;
   GtkTreeRowReference *queued_activate_row;
+
+  guint queued_shift_pressed : 1;
+  guint queued_ctrl_pressed : 1;
 #endif /* MAEMO_CHANGES */
 };
 

Modified: projects/haf/trunk/gtk+/gtk/gtktreeview.c
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtktreeview.c	2007-08-16 10:56:50 UTC (rev 13236)
+++ projects/haf/trunk/gtk+/gtk/gtktreeview.c	2007-08-16 11:06:48 UTC (rev 13237)
@@ -1383,6 +1383,9 @@
   tree_view->priv->queued_select_row = NULL;
   tree_view->priv->queued_expand_row = NULL;
   tree_view->priv->queued_activate_row = NULL;
+
+  tree_view->priv->queued_ctrl_pressed = FALSE;
+  tree_view->priv->queued_shift_pressed = FALSE;
 #endif /* MAEMO_CHANGES */
 
 #ifdef MAEMO_CHANGES
@@ -2786,6 +2789,8 @@
 		      gtk_tree_path_free (old_cursor_path);
 		    }
 
+		  tree_view->priv->queued_ctrl_pressed = tree_view->priv->ctrl_pressed;
+		  tree_view->priv->queued_shift_pressed = tree_view->priv->shift_pressed;
 		  tree_view->priv->queued_select_row =
 		    gtk_tree_row_reference_new (tree_view->priv->model, path);
 		}
@@ -3109,11 +3114,27 @@
       GtkTreePath *path;
 
       path = gtk_tree_row_reference_get_path (tree_view->priv->queued_select_row);
-      gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
 
+      if (tree_view->priv->queued_ctrl_pressed)
+        {
+	  gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
+	  gtk_tree_view_real_toggle_cursor_row (tree_view);
+	  GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
+	}
+      else if (tree_view->priv->queued_shift_pressed)
+        {
+	  gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
+	  gtk_tree_view_real_select_cursor_row (tree_view, FALSE);
+	  GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
+	}
+      else
+	gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
+
       gtk_tree_path_free (path);
       gtk_tree_row_reference_free (tree_view->priv->queued_select_row);
       tree_view->priv->queued_select_row = NULL;
+      tree_view->priv->queued_ctrl_pressed = FALSE;
+      tree_view->priv->queued_shift_pressed = FALSE;
     }
 
   if (gtk_tree_row_reference_valid (tree_view->priv->queued_activate_row))


More information about the maemo-commits mailing list