- When the filterbar has been activated as startup setting, still the view should get the keyboard focus.

- Assure that the keyboard focus does not get lost when a tab is opened in background.

CCBUG: 183394

svn path=/trunk/KDE/kdebase/apps/; revision=1072868
This commit is contained in:
Peter Penz 2010-01-11 09:21:16 +00:00
parent 199f9af8b6
commit cc06711735
2 changed files with 19 additions and 0 deletions

View file

@ -397,6 +397,8 @@ void DolphinMainWindow::openNewTab()
void DolphinMainWindow::openNewTab(const KUrl& url)
{
QWidget* focusWidget = QApplication::focusWidget();
if (m_viewTab.count() == 1) {
// Only one view is open currently and hence no tab is shown at
// all. Before creating a tab for 'url', provide a tab for the current URL.
@ -429,6 +431,12 @@ void DolphinMainWindow::openNewTab(const KUrl& url)
m_viewTab[tabIndex].secondaryView->setActive(true);
m_viewTab[tabIndex].isPrimaryViewActive = false;
}
if (focusWidget != 0) {
// The DolphinViewContainer grabbed the keyboard focus. As the tab is opened
// in background, assure that the previous focused widget gets the focus back.
focusWidget->setFocus();
}
}
void DolphinMainWindow::activateNextTab()
@ -487,6 +495,14 @@ void DolphinMainWindow::toggleActiveView()
setActiveViewContainer(m_activeViewContainer == right ? left : right);
}
void DolphinMainWindow::showEvent(QShowEvent* event)
{
KXmlGuiWindow::showEvent(event);
if (!event->spontaneous()) {
m_activeViewContainer->view()->setFocus();
}
}
void DolphinMainWindow::closeEvent(QCloseEvent* event)
{
DolphinSettings& settings = DolphinSettings::instance();

View file

@ -165,6 +165,9 @@ signals:
void requestItemInfo(const KFileItem& item);
protected:
/** @see QWidget::showEvent() */
virtual void showEvent(QShowEvent* event);
/** @see QMainWindow::closeEvent() */
virtual void closeEvent(QCloseEvent* event);