+ if (m_content->cursorValid() && !m_content->currentCursorSelectable())
+ {
+ /* ok, our cursor position is valid (i.e. in list), but not selectable. */
+
+ /* when moving up, continue until we found a valid position. */
+ if ((dir == moveUp) || (dir == pageDown))
+ {
+ while (m_content->cursorGet())
+ {
+ m_content->cursorMove(-1);
+ if (m_content->currentCursorSelectable())
+ {
+ break;
+ }
+ }
+ } else
+ {
+ /* else move down */
+ while (m_content->cursorValid())
+ {
+ m_content->cursorMove(+1);
+ if (m_content->currentCursorSelectable())
+ {
+ break;
+ }
+ }
+
+ if (!m_content->cursorValid())
+ m_content->cursorMove(-1);
+ }
+
+ if (!m_content->currentCursorSelectable())
+ m_content->cursorSet(oldsel);
+ }
+