}
break;
+ case Qt::Key_Enter:
+ case Qt::Key_Return:
+ emit itemActivated(index);
+ break;
+
case Qt::Key_Space:
if (controlPressed) {
m_selectionManager->endAnchoredSelection();
const int currentIndex = m_selectionManager->currentItem();
int index;
if (searchFromNextItem) {
- index = m_model->indexForKeyboardSearch(text, (currentIndex + 1) % m_model->count());
+ index = m_model->indexForKeyboardSearch(text, (currentIndex + 1) % m_model->count());
}
else {
index = m_model->indexForKeyboardSearch(text, currentIndex);
m_selectionManager->setSelectedItems(QSet<int>() << index);
}
- bool emitItemClicked = true;
if (event->button() & Qt::LeftButton) {
+ bool emitItemActivated = true;
if (m_view->isAboveExpansionToggle(index, pos)) {
emit itemExpansionToggleClicked(index);
- emitItemClicked = false;
- } else if (shiftOrControlPressed || !KGlobalSettings::singleClick()) {
- emitItemClicked = false;
+ emitItemActivated = false;
+ } else if (shiftOrControlPressed) {
+ // The mouse click should only update the selection, not trigger the item
+ emitItemActivated = false;
+ } else if (!KGlobalSettings::singleClick()) {
+ emitItemActivated = false;
}
- }
-
- if (emitItemClicked) {
- emit itemClicked(index, event->button());
+ if (emitItemActivated) {
+ emit itemActivated(index);
+ }
+ } else if (event->button() & Qt::MidButton) {
+ emit itemMiddleClicked(index);
+ } else if (event->button() & Qt::RightButton) {
+ emit contextMenuRequested(index, QPointF(event->pos()));
}
} else if (clearSelection) {
m_selectionManager->clearSelection();
const QPointF pos = transform.map(event->pos());
const int index = m_view->itemAt(pos);
- bool emitItemClicked = !KGlobalSettings::singleClick() &&
+ bool emitItemActivated = !KGlobalSettings::singleClick() &&
(event->button() & Qt::LeftButton) &&
index >= 0 && index < m_model->count();
- if (emitItemClicked) {
- emit itemClicked(index, event->button());
+ if (emitItemActivated) {
+ emit itemActivated(index);
}
return false;
}
KItemListController* controller = m_container->controller();
controller->setSelectionBehavior(KItemListController::MultiSelection);
- connect(controller, SIGNAL(itemClicked(int,Qt::MouseButton)),
- this, SLOT(slotItemClicked(int,Qt::MouseButton)));
+ connect(controller, SIGNAL(itemActivated(int)),
+ this, SLOT(slotItemActivated(int)));
+ connect(controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int)));
+ connect(controller, SIGNAL(contextMenuRequested(int,QPointF)), this, SLOT(slotContextMenuRequested(int,QPointF)));
connect(controller, SIGNAL(itemExpansionToggleClicked(int)), this, SLOT(slotItemExpansionToggleClicked(int)));
connect(controller, SIGNAL(itemHovered(int)), this, SLOT(slotItemHovered(int)));
connect(controller, SIGNAL(itemUnhovered(int)), this, SLOT(slotItemUnhovered(int)));
const KItemListView* view = m_container->controller()->view();
if (view->itemAt(pos) < 0) {
// Only open the context-menu if the cursor is above the viewport
- // (the context-menu for items is handled in slotItemClicked())
+ // (the context-menu for items is handled in slotContextMenuRequested())
requestContextMenu(KFileItem(), url(), QList<QAction*>());
}
}
setActive(true);
}
-void DolphinView::slotItemClicked(int index, Qt::MouseButton button)
+void DolphinView::slotItemActivated(int index)
+{
+ const QSet<int> selectedItems = m_container->controller()->selectionManager()->selectedItems();
+ if (selectedItems.isEmpty())
+ return;
+ if (selectedItems.count() == 1) {
+ emit itemTriggered(fileItemModel()->fileItem(index)); // caught by DolphinViewContainer or DolphinPart
+ }
+ else {
+ foreach (int i, selectedItems) {
+ const KFileItem fileItem;
+ fileItem = fileItemModel()->fileItem(i);
+ if (fileItem.isDir()) {
+ emit tabRequested(fileItem.url());
+ } else {
+ emit itemTriggered(fileItem);
+ }
+ }
+ }
+}
+
+void DolphinView::slotItemMiddleClicked(int index)
{
const KFileItem item = fileItemModel()->fileItem(index);
+ if (item.isDir() || isTabsForFilesEnabled()) {
+ emit tabRequested(item.url());
+ }
+}
- if (button & Qt::LeftButton) {
- emit itemTriggered(item); // caught by DolphinViewContainer or DolphinPart
- } else if (button & Qt::MidButton) {
- if (item.isDir() || isTabsForFilesEnabled()) {
- emit tabRequested(item.url());
- }
- } else if (button & Qt::RightButton) {
- if (GeneralSettings::showToolTips()) {
- m_toolTipManager->hideToolTip();
- }
- emit requestContextMenu(item, url(), QList<QAction*>());
+void DolphinView::slotContextMenuRequested(int index, const QPointF& pos)
+{
+ if (GeneralSettings::showToolTips()) {
+ m_toolTipManager->hideToolTip();
}
+ const KFileItem item = fileItemModel()->fileItem(index);
+ emit requestContextMenu(item, url(), QList<QAction*>());
}
void DolphinView::slotItemExpansionToggleClicked(int index)