diff options
| author | Marco Trevisan (TreviƱo) <mail@3v1n0.net> | 2013-02-06 02:28:35 +0000 |
|---|---|---|
| committer | Tarmac <> | 2013-02-06 02:28:35 +0000 |
| commit | abb495b5c1132418cea0f913cefc9728251d6404 (patch) | |
| tree | 270e2b31692bed677ca8f39d4d1b07e26c195a63 | |
| parent | 6d5eb571fc134c6e54048b09809a330dfa9ea595 (diff) | |
| parent | 7bc406faeae089190288a9a691a698a3e18b5757 (diff) | |
SwitcherController: remove the detail timeout when the detail mode is changed. Fixes: https://bugs.launchpad.net/bugs/1116785.
Approved by Brandon Schaefer. (bzr r3131)
| -rw-r--r-- | launcher/SwitcherController.cpp | 1 | ||||
| -rw-r--r-- | tests/test_switcher_controller.cpp | 24 |
2 files changed, 24 insertions, 1 deletions
diff --git a/launcher/SwitcherController.cpp b/launcher/SwitcherController.cpp index fc9cd6807..844871cb9 100644 --- a/launcher/SwitcherController.cpp +++ b/launcher/SwitcherController.cpp @@ -261,6 +261,7 @@ void Controller::Impl::Show(ShowMode show, SortMode sort, std::vector<AbstractLa model_ = std::make_shared<SwitcherModel>(results); obj_->AddChild(model_.get()); model_->selection_changed.connect(sigc::mem_fun(this, &Controller::Impl::OnModelSelectionChanged)); + model_->detail_selection.changed.connect([this] (bool) { sources_.Remove(DETAIL_TIMEOUT); }); model_->only_detail_on_viewport = (show == ShowMode::CURRENT_VIEWPORT); SelectFirstItem(); diff --git a/tests/test_switcher_controller.cpp b/tests/test_switcher_controller.cpp index 45dd8cff4..246d40af1 100644 --- a/tests/test_switcher_controller.cpp +++ b/tests/test_switcher_controller.cpp @@ -158,6 +158,7 @@ TEST_F(TestSwitcherController, InitialDetailTimeout) static const int initial_details_timeout = 500; static const int details_timeout = 10 * initial_details_timeout; + controller_->detail_on_timeout = true; controller_->initial_detail_timeout_length = initial_details_timeout; controller_->detail_timeout_length = details_timeout; @@ -177,12 +178,13 @@ TEST_F(TestSwitcherController, InitialDetailTimeout) EXPECT_TRUE(time_diff < details_timeout); } -TEST_F(TestSwitcherController, DetailTimeout) +TEST_F(TestSwitcherController, DetailTimeoutRemoval) { Clock::time_point start_time = Clock::now(); static const int details_timeout = 500; static const int initial_details_timeout = 10 * details_timeout; + controller_->detail_on_timeout = true; controller_->detail_timeout_length = details_timeout; controller_->initial_detail_timeout_length = initial_details_timeout; @@ -213,6 +215,26 @@ TEST_F(TestSwitcherController, DetailTimeout) EXPECT_TRUE(time_diff < initial_details_timeout); } +TEST_F(TestSwitcherController, DetailTimeoutOnDetailActivate) +{ + static const int initial_details_timeout = 500; + static const int details_timeout = 10 * initial_details_timeout; + + controller_->detail_on_timeout = true; + controller_->initial_detail_timeout_length = initial_details_timeout; + controller_->detail_timeout_length = details_timeout; + + controller_->Show(ShowMode::ALL, SortMode::LAUNCHER_ORDER, icons_); + EXPECT_EQ(controller_->GetCurrentSelection().window_, 0); + + // Manually open-close the detail mode before that the timeout has occurred + controller_->SetDetail(true); + controller_->SetDetail(false); + + Utils::WaitForTimeoutMSec(initial_details_timeout * 1.1); + EXPECT_EQ(controller_->GetCurrentSelection().window_, 0); +} + TEST_F(TestSwitcherController, ShowSwitcher) { EXPECT_FALSE(controller_->Visible()); |
