Commit ba92917a authored by Piotr Henryk Dabrowski's avatar Piotr Henryk Dabrowski Committed by Elvis Angelaccio
Browse files

[Dolphin] Hide tooltip instantly on key press

Summary:
Instantly hide tooltip shown over an element when a key is pressed.

Currently, when pressing an alphanum key to select a different file,
the tooltip continues to cover much of the window - often hiding that newly selected file from view.

Reviewers: #dolphin, ngraham, elvisangelaccio

Reviewed By: #dolphin, elvisangelaccio

Subscribers: broulik, elvisangelaccio, kfm-devel, pdabrowski

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D22512
parent 89239912
......@@ -128,8 +128,8 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
m_container = new KItemListContainer(controller, this);
m_container->installEventFilter(this);
setFocusProxy(m_container);
connect(m_container->horizontalScrollBar(), &QScrollBar::valueChanged, this, &DolphinView::hideToolTip);
connect(m_container->verticalScrollBar(), &QScrollBar::valueChanged, this, &DolphinView::hideToolTip);
connect(m_container->horizontalScrollBar(), &QScrollBar::valueChanged, this, [=] { hideToolTip(); });
connect(m_container->verticalScrollBar(), &QScrollBar::valueChanged, this, [=] { hideToolTip(); });
controller->setSelectionBehavior(KItemListController::MultiSelection);
connect(controller, &KItemListController::itemActivated, this, &DolphinView::slotItemActivated);
......@@ -744,6 +744,7 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event)
break;
case QEvent::KeyPress:
hideToolTip(ToolTipManager::HideBehavior::Instantly);
if (GeneralSettings::useTabForSwitchingSplitView()) {
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Tab && keyEvent->modifiers() == Qt::NoModifier) {
......@@ -1414,11 +1415,11 @@ void DolphinView::updateViewState()
}
}
void DolphinView::hideToolTip()
void DolphinView::hideToolTip(const ToolTipManager::HideBehavior behavior)
{
#ifdef HAVE_BALOO
if (GeneralSettings::showToolTips()) {
m_toolTipManager->hideToolTip();
m_toolTipManager->hideToolTip(behavior);
}
#endif
}
......
......@@ -23,6 +23,7 @@
#include "dolphintabwidget.h"
#include "dolphin_export.h"
#include "tooltips/tooltipmanager.h"
#include <KFileItem>
#include <KIO/Job>
......@@ -697,8 +698,6 @@ private slots:
*/
void updateViewState();
void hideToolTip();
/**
* Calculates the number of currently shown files into
* \a fileCount and the number of folders into \a folderCount.
......@@ -733,6 +732,11 @@ private:
*/
void applyModeToView();
/**
* Hides tooltip displayed over element.
*/
void hideToolTip(const ToolTipManager::HideBehavior behavior = ToolTipManager::HideBehavior::Later);
/**
* Helper method for DolphinView::paste() and DolphinView::pasteIntoFolder().
* Pastes the clipboard data into the URL \a url.
......
......@@ -104,7 +104,7 @@ void ToolTipManager::showToolTip(const KFileItem& item, const QRectF& itemRect,
Q_ASSERT(!m_metaDataRequested);
}
void ToolTipManager::hideToolTip()
void ToolTipManager::hideToolTip(const HideBehavior behavior)
{
if (m_appliedWaitCursor) {
QApplication::restoreOverrideCursor();
......@@ -116,7 +116,14 @@ void ToolTipManager::hideToolTip()
m_showToolTipTimer->stop();
m_contentRetrievalTimer->stop();
if (m_tooltipWidget) {
m_tooltipWidget->hideLater();
switch (behavior) {
case HideBehavior::Instantly:
m_tooltipWidget->hide();
break;
case HideBehavior::Later:
m_tooltipWidget->hideLater();
break;
}
}
}
......
......@@ -42,6 +42,11 @@ class ToolTipManager : public QObject
Q_OBJECT
public:
enum class HideBehavior {
Instantly,
Later
};
explicit ToolTipManager(QWidget* parent);
~ToolTipManager() override;
......@@ -56,7 +61,7 @@ public:
/**
* Hides the currently shown tooltip.
*/
void hideToolTip();
void hideToolTip(const HideBehavior behavior = HideBehavior::Later);
signals:
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment