aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-07-14 11:16:09 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-07-14 11:16:09 +0000
commit73cc156717ff95676b3a4b21501c9ec48a104c9e (patch)
treea90ffa8c673a2e3e7be6cffc588f955612b79204 /src/plugins/Ui
parent4beb7f075d0cc4001d40406823b415602aeef2f5 (diff)
downloadqmmp-73cc156717ff95676b3a4b21501c9ec48a104c9e.tar.gz
qmmp-73cc156717ff95676b3a4b21501c9ec48a104c9e.tar.bz2
qmmp-73cc156717ff95676b3a4b21501c9ec48a104c9e.zip
skinned: fixed track selection behaviour when pressing
PgUp/Down/Home/End keys git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4360 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui')
-rw-r--r--src/plugins/Ui/skinned/keyboardmanager.cpp37
1 files changed, 33 insertions, 4 deletions
diff --git a/src/plugins/Ui/skinned/keyboardmanager.cpp b/src/plugins/Ui/skinned/keyboardmanager.cpp
index b86c04753..9d015074c 100644
--- a/src/plugins/Ui/skinned/keyboardmanager.cpp
+++ b/src/plugins/Ui/skinned/keyboardmanager.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2013 by Ilya Kotov *
+ * Copyright (C) 2006-2014 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -201,16 +201,33 @@ void KeyboardManager::keyDown (QKeyEvent * ke)
void KeyboardManager::keyPgUp (QKeyEvent *)
{
int page_size = m_listWidget->visibleRows();
- int offset= (m_listWidget->firstVisibleIndex()-page_size >= 0) ?m_listWidget->firstVisibleIndex()-page_size:0;
+ int first = m_listWidget->firstVisibleIndex();
+ int offset = (first - page_size >= 0) ? first - page_size:0;
m_listWidget->scroll (offset);
+
+ m_listWidget->model()->clearSelection();
+ if(m_listWidget->firstVisibleIndex() == first)
+ m_listWidget->setAnchorIndex(0);
+ else
+ m_listWidget->setAnchorIndex(m_listWidget->firstVisibleIndex() + page_size/2);
+ m_listWidget->model()->setSelected(m_listWidget->anchorIndex(), true);
}
void KeyboardManager::keyPgDown (QKeyEvent *)
{
int page_size = m_listWidget->visibleRows();
- int offset = (m_listWidget->firstVisibleIndex() +page_size < m_listWidget->model()->count()) ?
- m_listWidget->firstVisibleIndex() +page_size:m_listWidget->model()->count() - 1;
+ int first = m_listWidget->firstVisibleIndex();
+ int offset = (first + page_size < m_listWidget->model()->count()) ?
+ first + page_size : m_listWidget->model()->count() - 1;
+
m_listWidget->scroll (offset);
+
+ m_listWidget->model()->clearSelection();
+ if(m_listWidget->firstVisibleIndex() == first)
+ m_listWidget->setAnchorIndex(m_listWidget->model()->count() - 1);
+ else
+ m_listWidget->setAnchorIndex(m_listWidget->firstVisibleIndex() + page_size/2);
+ m_listWidget->model()->setSelected(m_listWidget->anchorIndex(), true);
}
void KeyboardManager::keyEnter (QKeyEvent *)
@@ -233,6 +250,12 @@ void KeyboardManager::keyHome(QKeyEvent *ke)
for(int i = 0; i <= m_listWidget->anchorIndex(); ++i)
m_listWidget->model()->setSelected (i, true);
}
+ else if(m_listWidget->model()->count() != 0)
+ {
+ m_listWidget->model()->clearSelection();
+ m_listWidget->setAnchorIndex(0);
+ m_listWidget->model()->setSelected(0, true);
+ }
}
void KeyboardManager::keyEnd(QKeyEvent *ke)
@@ -246,4 +269,10 @@ void KeyboardManager::keyEnd(QKeyEvent *ke)
for(int i = m_listWidget->anchorIndex(); i < m_listWidget->model()->count(); ++i)
m_listWidget->model()->setSelected (i, true);
}
+ else if(m_listWidget->model()->count() > 0)
+ {
+ m_listWidget->model()->clearSelection();
+ m_listWidget->setAnchorIndex(m_listWidget->model()->count() - 1);
+ m_listWidget->model()->setSelected(m_listWidget->anchorIndex(), true);
+ }
}