Always draw categories correctly in completion

This commit is contained in:
Florian Bruhin 2014-04-22 21:38:06 +02:00
parent fb9ac1bc4c
commit 06ff2e00e9
2 changed files with 11 additions and 8 deletions

View File

@ -263,11 +263,12 @@ class CompletionModel(QAbstractItemModel):
""" """
if not index.isValid(): if not index.isValid():
return Qt.NoItemFlags return Qt.NoItemFlags
flags = Qt.ItemIsEnabled if index.parent().isValid():
if len(self._id_map[index.internalId()].children) > 0: # item
return flags return Qt.ItemIsEnabled | Qt.ItemIsSelectable
else: else:
return flags | Qt.ItemIsSelectable # category
return Qt.NoItemFlags
def index(self, row, column, parent=QModelIndex()): def index(self, row, column, parent=QModelIndex()):
"""Return the QModelIndex for row/column/parent. """Return the QModelIndex for row/column/parent.

View File

@ -79,17 +79,20 @@ class CompletionView(QTreeView):
{color[completion.bg]} {color[completion.bg]}
outline: 0; outline: 0;
}} }}
QTreeView::item {{
QTreeView::item:enabled {{
{color[completion.item.fg]} {color[completion.item.fg]}
{color[completion.item.bg]} {color[completion.item.bg]}
}} }}
QTreeView::item:has-children {{
QTreeView::item:disabled {{
{color[completion.category.fg]} {color[completion.category.fg]}
{color[completion.category.bg]} {color[completion.category.bg]}
border-top: 1px solid {color[completion.category.border.top]}; border-top: 1px solid {color[completion.category.border.top]};
border-bottom: 1px solid border-bottom: 1px solid
{color[completion.category.border.bottom]}; {color[completion.category.border.bottom]};
}} }}
QTreeView::item:selected {{ QTreeView::item:selected {{
border-top: 1px solid {color[completion.item.selected.border.top]}; border-top: 1px solid {color[completion.item.selected.border.top]};
border-bottom: 1px solid border-bottom: 1px solid
@ -98,8 +101,7 @@ class CompletionView(QTreeView):
{color[completion.item.selected.fg]} {color[completion.item.selected.fg]}
}} }}
""" """
# FIXME because we use :has-children, if a category is empty, it won't look
# like one anymore
change_completed_part = pyqtSignal(str) change_completed_part = pyqtSignal(str)
def __init__(self, parent=None): def __init__(self, parent=None):