, m_assureVisibleCurrentIndex(false)
, m_isFolderWritable(true)
, m_dragging(false)
+ , m_selectNextItem(false)
, m_url(url)
, m_viewPropertiesContext()
, m_mode(DolphinView::IconsView)
, m_view(nullptr)
, m_container(nullptr)
, m_toolTipManager(nullptr)
- , m_selectNextItem(false)
, m_selectionChangedTimer(nullptr)
, m_currentItemUrl()
, m_scrollToCurrentItem(false)
connect(m_view, &DolphinItemListView::sortRoleChanged, this, &DolphinView::slotSortRoleChangedByHeader);
connect(m_view, &DolphinItemListView::visibleRolesChanged, this, &DolphinView::slotVisibleRolesChangedByHeader);
connect(m_view, &DolphinItemListView::roleEditingCanceled, this, &DolphinView::slotRoleEditingCanceled);
+
+ connect(m_view, &DolphinItemListView::columnHovered, this, [this](int roleIndex) {
+ m_hoveredColumnHearderRoleIndex = roleIndex;
+ });
+ connect(m_view, &DolphinItemListView::columnUnHovered, this, [this](int roleIndex) {
+ Q_UNUSED(roleIndex)
+ m_hoveredColumnHearderRoleIndex = std::nullopt;
+ });
connect(m_view->header(), &KItemListHeader::columnWidthChangeFinished, this, &DolphinView::slotHeaderColumnWidthChangeFinished);
connect(m_view->header(), &KItemListHeader::sidePaddingChanged, this, &DolphinView::slotSidePaddingWidthChanged);
}
}
break;
+ case QEvent::KeyRelease:
+ if (static_cast<QKeyEvent *>(event)->key() == Qt::Key_Control) {
+ m_controlWheelAccumulatedDelta = 0;
+ }
+ break;
case QEvent::FocusIn:
if (watched == m_container) {
setActive(true);
}
break;
- case QEvent::ToolTip:
- tryShowNameToolTip(static_cast<QHelpEvent *>(event));
+ case QEvent::ToolTip: {
+ const auto helpEvent = static_cast<QHelpEvent *>(event);
+ if (tryShowNameToolTip(helpEvent)) {
+ return true;
+ } else if (m_hoveredColumnHearderRoleIndex) {
+ const auto roleInfo = KFileItemModel::rolesInformation().at(*m_hoveredColumnHearderRoleIndex);
+ QToolTip::showText(helpEvent->globalPos(), roleInfo.tooltip, this);
+ return true;
+ }
+ break;
+ }
default:
break;
}
void DolphinView::wheelEvent(QWheelEvent *event)
{
if (event->modifiers().testFlag(Qt::ControlModifier)) {
- const QPoint numDegrees = event->angleDelta() / 8;
- const QPoint numSteps = numDegrees / 15;
+ m_controlWheelAccumulatedDelta += event->angleDelta().y();
+
+ if (m_controlWheelAccumulatedDelta <= -QWheelEvent::DefaultDeltasPerStep) {
+ slotDecreaseZoom();
+ m_controlWheelAccumulatedDelta += QWheelEvent::DefaultDeltasPerStep;
+ } else if (m_controlWheelAccumulatedDelta >= QWheelEvent::DefaultDeltasPerStep) {
+ slotIncreaseZoom();
+ m_controlWheelAccumulatedDelta -= QWheelEvent::DefaultDeltasPerStep;
+ }
- setZoomLevel(zoomLevel() + numSteps.y());
event->accept();
} else {
event->ignore();
action->setCheckable(true);
action->setChecked(visibleRolesSet.contains(info.role));
action->setData(info.role);
+ action->setToolTip(info.tooltip);
const bool enable = (!info.requiresBaloo && !info.requiresIndexer) || (info.requiresBaloo) || (info.requiresIndexer && indexingEnabled);
action->setEnabled(enable);
void DolphinView::selectNextItem()
{
if (m_active && m_selectNextItem) {
- KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager();
+ KItemListSelectionManager *selectionManager = m_container->controller()->selectionManager();
if (selectedItems().isEmpty()) {
Q_ASSERT_X(false, "DolphinView", "Selecting the next item failed.");
return;
newUrl.setPath(newUrl.path() + KIO::encodeFileName(newName));
#ifndef Q_OS_WIN
- //Confirm hiding file/directory by renaming inline
+ // Confirm hiding file/directory by renaming inline
if (!hiddenFilesShown() && newName.startsWith(QLatin1Char('.')) && !oldItem.name().startsWith(QLatin1Char('.'))) {
KGuiItem yesGuiItem(i18nc("@action:button", "Rename and Hide"), QStringLiteral("view-hidden"));
m_placeholderLabel->setVisible(true);
}
-void DolphinView::tryShowNameToolTip(QHelpEvent *event)
+bool DolphinView::tryShowNameToolTip(QHelpEvent *event)
{
if (!GeneralSettings::showToolTips() && m_mode == DolphinView::IconsView) {
const std::optional<int> index = m_view->itemAt(event->pos());
if (!index.has_value()) {
- return;
+ return false;
}
// Check whether the filename has been elided
const QString text = item.text();
const QPoint pos = mapToGlobal(event->pos());
QToolTip::showText(pos, text);
+ return true;
}
}
+ return false;
}