[pitivi] [medialibrary] : Allow unselection of paths.



commit c9b8f17299c9ce63d28e16245e4243caa14906ce
Author: Mathieu Duponchelle <mathieu duponchelle epitech eu>
Date:   Sun Aug 26 22:25:19 2012 +0200

    [medialibrary] : Allow unselection of paths.

 pitivi/medialibrary.py |   31 ++++++++++++++++++++++++-------
 1 files changed, 24 insertions(+), 7 deletions(-)
---
diff --git a/pitivi/medialibrary.py b/pitivi/medialibrary.py
index e0073c8..30716bc 100644
--- a/pitivi/medialibrary.py
+++ b/pitivi/medialibrary.py
@@ -338,6 +338,7 @@ class MediaLibraryWidget(gtk.VBox, Loggable):
         self.treeview = gtk.TreeView(self.modelFilter)
         self.treeview_scrollwin.add(self.treeview)
         self.treeview.connect("button-press-event", self._treeViewButtonPressEventCb)
+        self.treeview.connect("button-release-event", self._treeViewButtonReleaseEventCb)
         self.treeview.connect("focus-in-event", self._disableKeyboardShortcutsCb)
         self.treeview.connect("focus-out-event", self._enableKeyboardShortcutsCb)
         self.treeview.connect("row-activated", self._itemOrRowActivatedCb)
@@ -380,6 +381,7 @@ class MediaLibraryWidget(gtk.VBox, Loggable):
         self.iconview = gtk.IconView(self.modelFilter)
         self.iconview_scrollwin.add(self.iconview)
         self.iconview.connect("button-press-event", self._iconViewButtonPressEventCb)
+        self.iconview.connect("button-release-event", self._iconViewButtonReleaseEventCb)
         self.iconview.connect("focus-in-event", self._disableKeyboardShortcutsCb)
         self.iconview.connect("focus-out-event", self._enableKeyboardShortcutsCb)
         self.iconview.connect("item-activated", self._itemOrRowActivatedCb)
@@ -1151,6 +1153,8 @@ class MediaLibraryWidget(gtk.VBox, Loggable):
         elif not event.state & (gtk.gdk.CONTROL_MASK | gtk.gdk.SHIFT_MASK):
             chain_up = not self._rowUnderMouseSelected(treeview, event)
 
+        self.clickedPath = self.getSelectedPaths()
+
         if not chain_up:
             self._draggedPaths = self.getSelectedPaths()
         else:
@@ -1160,14 +1164,22 @@ class MediaLibraryWidget(gtk.VBox, Loggable):
 
         ts = self.treeview.get_selection()
 
-        if (self._draggedPaths):
+        if self._draggedPaths:
             for path in self._draggedPaths:
                 ts.select_path(path)
 
-        self._ignoreRelease = chain_up
-
         return True
 
+    def _treeViewButtonReleaseEventCb(self, treeview, event):
+        ts = self.treeview.get_selection()
+        state = event.state & (gtk.gdk.CONTROL_MASK | gtk.gdk.SHIFT_MASK)
+        path = self.treeview.get_path_at_pos(event.x, event.y)
+
+        if not state and not self.dragged:
+            ts.unselect_all()
+            if path:
+                ts.select_path(path[0])
+
     def _viewSelectionChangedCb(self, unused):
         if self._viewHasSelection():
             self.selection_actions.set_sensitive(True)
@@ -1211,6 +1223,15 @@ class MediaLibraryWidget(gtk.VBox, Loggable):
 
         return True
 
+    def _iconViewButtonReleaseEventCb(self, iconview, event):
+        state = event.state & (gtk.gdk.CONTROL_MASK | gtk.gdk.SHIFT_MASK)
+        path = self.iconview.get_path_at_pos(event.x, event.y)
+
+        if not state and not self.dragged:
+            iconview.unselect_all()
+            if path:
+                iconview.select_path(path)
+
     def _newProjectCreatedCb(self, app, project):
         if not self._project is project:
             self._project = project
@@ -1265,10 +1286,6 @@ class MediaLibraryWidget(gtk.VBox, Loggable):
         self.info("tree drag_begin")
         self.dragged = True
         paths = self.getSelectedPaths()
-        ts = self.treeview.get_selection()
-
-        for path in self._draggedPaths:
-            ts.select_path(path)
 
         if len(paths) < 1:
             context.drag_abort(int(time.time()))



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