From e1d88c4d69ba0fb38951954dceab937741528eab Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Thu, 5 Sep 2013 16:22:59 +0200 Subject: Fix Bug 296970 - split view wrong behavior with search tab Implemented setActive(bool active), isActive() and activated() signal for DolphinSearchBox - similar to the KUrlNavigator implementation. BUG: 296970 FIXED-IN: 4.11.2 REVIEW: 112534 --- src/search/dolphinsearchbox.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/search/dolphinsearchbox.cpp') diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp index ef9c2bfcf..cf1f0c8e5 100644 --- a/src/search/dolphinsearchbox.cpp +++ b/src/search/dolphinsearchbox.cpp @@ -58,6 +58,7 @@ DolphinSearchBox::DolphinSearchBox(QWidget* parent) : QWidget(parent), m_startedSearching(false), m_readOnly(false), + m_active(true), m_topLayout(0), m_searchLabel(0), m_searchInput(0), @@ -171,6 +172,22 @@ bool DolphinSearchBox::isReadOnly() const return m_readOnly; } +void DolphinSearchBox::setActive(bool active) +{ + if (active != m_active) { + m_active = active; + + if (active) { + emit activated(); + } + } +} + +bool DolphinSearchBox::isActive() const +{ + return m_active; +} + bool DolphinSearchBox::event(QEvent* event) { if (event->type() == QEvent::Polish) { @@ -199,6 +216,21 @@ void DolphinSearchBox::keyReleaseEvent(QKeyEvent* event) } } +bool DolphinSearchBox::eventFilter(QObject* obj, QEvent* event) +{ + switch (event->type()) { + case QEvent::FocusIn: + setActive(true); + setFocus(); + break; + + default: + break; + } + + return QObject::eventFilter(obj, event); +} + void DolphinSearchBox::emitSearchRequest() { m_startSearchTimer->stop(); @@ -253,6 +285,7 @@ void DolphinSearchBox::slotFacetChanged() void DolphinSearchBox::initButton(QToolButton* button) { + button->installEventFilter(this); button->setAutoExclusive(true); button->setAutoRaise(true); button->setCheckable(true); @@ -298,6 +331,7 @@ void DolphinSearchBox::init() // Create search box m_searchInput = new KLineEdit(this); + m_searchInput->installEventFilter(this); m_searchInput->setClearButtonShown(true); m_searchInput->setFont(KGlobalSettings::generalFont()); setFocusProxy(m_searchInput); @@ -348,6 +382,7 @@ void DolphinSearchBox::init() connect(m_facetsToggleButton, SIGNAL(clicked()), this, SLOT(slotFacetsButtonToggled())); m_facetsWidget = new DolphinFacetsWidget(this); + m_facetsWidget->installEventFilter(this); m_facetsWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); connect(m_facetsWidget, SIGNAL(facetChanged()), this, SLOT(slotFacetChanged())); -- cgit v1.3