From b2257752b38346857265409acf1a02d3499ac937 Mon Sep 17 00:00:00 2001 From: blackmiaool Date: Mon, 4 May 2015 10:33:33 +0800 Subject: [PATCH] Select Home tab when it's not selected in HomeCommand --- src/app/commands/cmd_home.cpp | 8 +++++++- src/app/ui/main_window.cpp | 17 +++++++++++++++-- src/app/ui/main_window.h | 2 ++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/app/commands/cmd_home.cpp b/src/app/commands/cmd_home.cpp index 55e50b9de..84f03d03a 100644 --- a/src/app/commands/cmd_home.cpp +++ b/src/app/commands/cmd_home.cpp @@ -23,7 +23,8 @@ public: ~HomeCommand(); protected: - void onExecute(Context* context); + void onExecute(Context* context) override; + bool onEnabled(Context* context) override; }; HomeCommand::HomeCommand() @@ -42,6 +43,11 @@ void HomeCommand::onExecute(Context* context) App::instance()->getMainWindow()->showHome(); } +bool HomeCommand::onEnabled(Context* context) +{ + return !App::instance()->getMainWindow()->isHomeSelected(); +} + Command* CommandFactory::createHomeCommand() { return new HomeCommand; diff --git a/src/app/ui/main_window.cpp b/src/app/ui/main_window.cpp index d36ef83cd..e929a90e5 100644 --- a/src/app/ui/main_window.cpp +++ b/src/app/ui/main_window.cpp @@ -163,7 +163,7 @@ void MainWindow::showNotification(INotificationDelegate* del) m_notifications->getParent()->layout(); } -void MainWindow::showHome() +void MainWindow::showHomeOnOpen() { if (!getHomeView()->getParent()) { TabView* selectedTab = m_tabsBar->getSelectedTab(); @@ -178,6 +178,19 @@ void MainWindow::showHome() } } +void MainWindow::showHome() +{ + if (!getHomeView()->getParent()) { + m_workspace->addView(m_homeView, 0); + } + m_tabsBar->selectTab(m_homeView); +} + +bool MainWindow::isHomeSelected() +{ + return (m_tabsBar->getSelectedTab() == m_homeView && m_homeView); +} + void MainWindow::showDevConsole() { if (!m_devConsoleView) @@ -230,7 +243,7 @@ void MainWindow::showDataRecovery(crash::DataRecovery* dataRecovery) bool MainWindow::onProcessMessage(ui::Message* msg) { if (msg->type() == kOpenMessage) - showHome(); + showHomeOnOpen(); return Window::onProcessMessage(msg); } diff --git a/src/app/ui/main_window.h b/src/app/ui/main_window.h index 7800705d6..af22677aa 100644 --- a/src/app/ui/main_window.h +++ b/src/app/ui/main_window.h @@ -67,7 +67,9 @@ namespace app { void start(); void reloadMenus(); void showNotification(INotificationDelegate* del); + void showHomeOnOpen(); void showHome(); + bool isHomeSelected(); void showDevConsole(); Mode getMode() const { return m_mode; }