[POS-commit] r6422 - in kiwi/trunk: . kiwi/ui

Johan Dahlin jdahlin at async.com.br
Wed Apr 25 10:43:14 BRT 2007


Author: jdahlin
Date: Wed Apr 25 10:43:14 2007
New Revision: 6422

Modified:
   kiwi/trunk/ChangeLog
   kiwi/trunk/kiwi/ui/objectlist.py

Log:
2007-04-25  Ali Afshar <aafshar at gmail.com>

    reviewed by: Johan Dahlin  <jdahlin at async.com.br>

    * kiwi/ui/objectlist.py (ObjectList.grab_focus): 
    Add, fixes #3326



Modified: kiwi/trunk/ChangeLog
==============================================================================
--- kiwi/trunk/ChangeLog	(original)
+++ kiwi/trunk/ChangeLog	Wed Apr 25 10:43:14 2007
@@ -1,3 +1,10 @@
+2007-04-25  Ali Afshar <aafshar at gmail.com>
+
+	reviewed by: Johan Dahlin  <jdahlin at async.com.br>
+
+	* kiwi/ui/objectlist.py (ObjectList.grab_focus): 
+	Add, fixes #3326
+
 2007-04-20  Johan Dahlin  <jdahlin at async.com.br>
 
 	* examples/search.py: Add an example.

Modified: kiwi/trunk/kiwi/ui/objectlist.py
==============================================================================
--- kiwi/trunk/kiwi/ui/objectlist.py	(original)
+++ kiwi/trunk/kiwi/ui/objectlist.py	Wed Apr 25 10:43:14 2007
@@ -483,7 +483,10 @@
     gsignal('double-click', object)
 
     # row right-clicked
-    gsignal('right-click', object)
+    gsignal('right-click', object, gtk.gdk.Event)
+
+    # row middle-clicked
+    gsignal('middle-click', object, gtk.gdk.Event)
 
     # edited object, attribute name
     gsignal('cell-edited', object, str)
@@ -1082,26 +1085,38 @@
         item = row[COL_MODEL]
         self.emit('row-activated', item)
 
-    def _on_treeview__button_press_event(self, treeview, event):
-        "Generic button-press-event handler to be able to catch double clicks"
-
+    def _get_selection_or_selected_rows(self):
         selection = self._treeview.get_selection()
         mode = selection.get_mode()
         if mode == gtk.SELECTION_MULTIPLE:
             item = self.get_selected_rows()
         else:
             item = self.get_selected()
+        return item
 
-        if not item:
-            return
+    def _emit_button_press_signal(self, signal_name, event):
+        item = self._get_selection_or_selected_rows()
+        if item:
+            self.emit(signal_name, item, event)
 
-        # Double left click
-        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
-            self.emit('double-click', item)
+    def _on_treeview__button_press_event(self, treeview, event):
+        "Generic button-press-event handler to be able to catch double clicks"
 
-        # Right click
-        if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
-            self.emit('right-click', item)
+        # Right and Middle click
+        if event.type == gtk.gdk.BUTTON_PRESS:
+            if event.button == 3:
+                signal_name = 'right-click'
+            elif event.button == 2:
+                signal_name = 'middle-click'
+            else:
+                return
+            gobject.idle_add(self._emit_button_press_signal, signal_name,
+                             event.copy())
+        # Double left click
+        elif event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
+            item = self._get_selection_or_selected_rows()
+            if item:
+                self.emit('double-click', item)
 
     # CellRenderers
     def _cell_data_text_func(self, tree_column, renderer, model, treeiter,
@@ -1313,6 +1328,12 @@
         tree_columns = self._treeview.get_columns()
         return tree_columns[index]
 
+    def grab_focus(self):
+        """
+        Grabs the focus of the ObjectList
+        """
+        self._treeview.grab_focus()
+
     def _clear_columns(self):
         # Reset the sort function for all model columns
         model = self._model


More information about the POS-commit mailing list