bool PropertyEditor::handleKeyPress(QKeyEvent* ev) { const int k = ev->key(); const Qt::ButtonState s = ev->state(); //selection moving QListViewItem *item = 0; if ((s == NoButton && k == Key_Up) || k == Key_BackTab) { //find prev visible item = selectedItem() ? selectedItem()->itemAbove() : 0; while (item && (!item->isSelectable() || !item->isVisible())) item = item->itemAbove(); if (!item) return true; } else if (s == NoButton && (k == Key_Down || k == Key_Tab)) { //find next visible item = selectedItem() ? selectedItem()->itemBelow() : 0; while (item && (!item->isSelectable() || !item->isVisible())) item = item->itemBelow(); if (!item) return true; } else if (s == NoButton && k == Key_Home) { if (m_currentEditor && m_currentEditor->hasFocus()) return false; //find 1st visible item = firstChild(); while (item && (!item->isSelectable() || !item->isVisible())) item = item->itemBelow(); } else if (s == NoButton && k == Key_End) { if (m_currentEditor && m_currentEditor->hasFocus()) return false; //find last visible item = selectedItem(); QListViewItem *lastVisible = item; while (item) { // && (!item->isSelectable() || !item->isVisible())) item = item->itemBelow(); if (item && item->isSelectable() && item->isVisible()) lastVisible = item; } item = lastVisible; } if (item) { ev->accept(); ensureItemVisible(item); setSelected(item, true); return true; } return false; }
void KonqSidebarTree::contentsDragMoveEvent( QDragMoveEvent *e ) { QListViewItem *item = itemAt( contentsToViewport( e->pos() ) ); // Accept drops on the background, if URLs if ( !item && m_lstDropFormats.contains("text/uri-list") ) { m_dropItem = 0; e->acceptAction(); if (selectedItem()) setSelected( selectedItem(), false ); // no item selected return; } if (item && static_cast<KonqSidebarTreeItem*>(item)->acceptsDrops( m_lstDropFormats )) { d->m_dropMode = SidebarTreeMode; if ( !item->isSelectable() ) { m_dropItem = 0; m_autoOpenTimer->stop(); e->ignore(); return; } e->acceptAction(); setSelected( item, true ); if ( item != m_dropItem ) { m_autoOpenTimer->stop(); m_dropItem = item; m_autoOpenTimer->start( autoOpenTimeout ); } } else { d->m_dropMode = KListViewMode; KListView::contentsDragMoveEvent(e); } }