Ignore:
Timestamp:
10/16/12 17:22:01 (18 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Improved keyboard control and styling in quick menu.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/gui/tooltree.py

    r11106 r11131  
    55""" 
    66 
    7 import sys 
    87import logging 
    98 
    109from PyQt4.QtGui import ( 
    1110    QTreeView, QWidget, QVBoxLayout, QSizePolicy, QStandardItemModel, 
    12     QAbstractProxyModel, QStyledItemDelegate, QAction, QIcon 
     11    QAbstractProxyModel, QStyledItemDelegate, QStyle, QAction, QIcon 
    1312) 
    1413 
    15 from PyQt4.QtCore import Qt, QModelIndex 
     14from PyQt4.QtCore import Qt, QEvent, QModelIndex 
    1615from PyQt4.QtCore import pyqtSignal as Signal, pyqtProperty as Property 
    1716 
     
    6463        view.entered.connect(self.__onEntered) 
    6564 
     65        view.installEventFilter(self) 
     66 
    6667        self.__view = view 
    67  
    68         if sys.platform == "darwin": 
    69             view.verticalScrollBar().setAttribute(Qt.WA_MacMiniSize, True) 
    7068 
    7169        layout.addWidget(view) 
     
    182180            action = self.__actionForIndex(index) 
    183181            if action is not None: 
     182                action.hover() 
    184183                self.hovered.emit(action) 
    185184 
     
    195194                    self.__view.setCurrentIndex(index) 
    196195                    break 
     196 
     197    def eventFilter(self, obj, event): 
     198        if obj is self.__view and event.type() == QEvent.KeyPress: 
     199            key = event.key() 
     200 
     201            space_activates = \ 
     202                self.style().styleHint( 
     203                        QStyle.SH_Menu_SpaceActivatesItem, 
     204                        None, None) 
     205 
     206            if key in [Qt.Key_Enter, Qt.Key_Return, Qt.Key_Select] or \ 
     207                    (key == Qt.Key_Space and space_activates): 
     208                index = self.__view.currentIndex() 
     209                if index.isValid() and index.flags() & Qt.ItemIsEnabled: 
     210                    # Emit activated on behalf of QTreeView. 
     211                    self.__view.activated.emit(index) 
     212                return True 
     213 
     214        return QWidget.eventFilter(self, obj, event) 
    197215 
    198216 
Note: See TracChangeset for help on using the changeset viewer.