summaryrefslogtreecommitdiffstats
path: root/libgroupview/src/kcategorizedview.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-03-25 17:39:52 +0100
committerPetr Mrázek <peterix@gmail.com>2013-03-25 17:39:52 +0100
commit65dc5d44f147fa70710b651f1d6cab8d09fad3c4 (patch)
treea8595243e462e047196aaca89e5def8f75372df8 /libgroupview/src/kcategorizedview.cpp
parentaf046ff6fcc566f909522d7932d932ddfd322cc3 (diff)
downloadMultiMC-65dc5d44f147fa70710b651f1d6cab8d09fad3c4.tar
MultiMC-65dc5d44f147fa70710b651f1d6cab8d09fad3c4.tar.gz
MultiMC-65dc5d44f147fa70710b651f1d6cab8d09fad3c4.tar.lz
MultiMC-65dc5d44f147fa70710b651f1d6cab8d09fad3c4.tar.xz
MultiMC-65dc5d44f147fa70710b651f1d6cab8d09fad3c4.zip
Add instance view up/down keyboard navigation, fix some layout glitches (not all)
Diffstat (limited to 'libgroupview/src/kcategorizedview.cpp')
-rw-r--r--libgroupview/src/kcategorizedview.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/libgroupview/src/kcategorizedview.cpp b/libgroupview/src/kcategorizedview.cpp
index 5b7c8d42..fdf6bc77 100644
--- a/libgroupview/src/kcategorizedview.cpp
+++ b/libgroupview/src/kcategorizedview.cpp
@@ -115,6 +115,7 @@ KCategorizedView::Private::Private ( KCategorizedView *q )
, hoveredIndex ( QModelIndex() )
, pressedPosition ( QPoint() )
, rubberBandRect ( QRect() )
+ , constantItemWidth( 0 )
{
}
@@ -447,7 +448,7 @@ void KCategorizedView::Private::leftToRightVisualRect ( const QModelIndex &index
}
else
{
- if ( q->uniformItemSizes() )
+ if ( q->uniformItemSizes() /*|| q->uniformItemWidths()*/ )
{
const int relativeRow = index.row() - firstIndexRow;
const QSize itemSize = q->sizeHintForIndex ( index );
@@ -622,6 +623,18 @@ void KCategorizedView::setModel ( QAbstractItemModel *model )
}
}
+
+void KCategorizedView::setUniformItemWidths(bool enable)
+{
+ d->constantItemWidth = enable;
+}
+
+
+bool KCategorizedView::uniformItemWidths() const
+{
+ return d->constantItemWidth;
+}
+
void KCategorizedView::setGridSize ( const QSize &size )
{
setGridSizeOwn ( size );
@@ -1294,13 +1307,13 @@ QModelIndex KCategorizedView::moveCursor ( CursorAction cursorAction,
}
case MoveDown:
{
- if ( d->hasGrid() || uniformItemSizes() )
+ if ( d->hasGrid() || uniformItemSizes() || uniformItemWidths() )
{
const QModelIndex current = currentIndex();
const QSize itemSize = d->hasGrid() ? gridSize()
: sizeHintForIndex ( current );
const Private::Block &block = d->blocks[d->categoryForIndex ( current )];
- const int maxItemsPerRow = qMax ( d->viewportWidth() / itemSize.width(), 1 );
+ const int maxItemsPerRow = qMax ( ( d->viewportWidth() - spacing() ) / ( itemSize.width() + spacing() ), 1 );
const bool canMove = current.row() + maxItemsPerRow < block.firstIndex.row() +
block.items.count();
@@ -1334,13 +1347,13 @@ QModelIndex KCategorizedView::moveCursor ( CursorAction cursorAction,
}
case MoveUp:
{
- if ( d->hasGrid() || uniformItemSizes() )
+ if ( d->hasGrid() || uniformItemSizes() || uniformItemWidths() )
{
const QModelIndex current = currentIndex();
const QSize itemSize = d->hasGrid() ? gridSize()
: sizeHintForIndex ( current );
const Private::Block &block = d->blocks[d->categoryForIndex ( current )];
- const int maxItemsPerRow = qMax ( d->viewportWidth() / itemSize.width(), 1 );
+ const int maxItemsPerRow = qMax ( ( d->viewportWidth() - spacing() ) / ( itemSize.width() + spacing() ), 1 );
const bool canMove = current.row() - maxItemsPerRow >= block.firstIndex.row();
if ( canMove )