diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-07-14 11:16:09 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-07-14 11:16:09 +0000 |
| commit | 73cc156717ff95676b3a4b21501c9ec48a104c9e (patch) | |
| tree | a90ffa8c673a2e3e7be6cffc588f955612b79204 /src/plugins/Ui/skinned | |
| parent | 4beb7f075d0cc4001d40406823b415602aeef2f5 (diff) | |
| download | qmmp-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/skinned')
| -rw-r--r-- | src/plugins/Ui/skinned/keyboardmanager.cpp | 37 |
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); + } } |
