2027
2027
CompAction::State state,
2028
2028
CompOption::Vector& options)
2030
if (lockscreen_controller_->IsLocked())
2033
2030
// to receive the Terminate event
2034
2031
if (state & CompAction::StateInitKey)
2035
2032
action->setState(action->state() | CompAction::StateTermKey);
2481
2475
return false; // early exit if the switcher is open
2484
if (PluginAdapter::Default().IsTopWindowFullscreenOnMonitorWithMouse() ||
2485
lockscreen_controller_->IsLocked())
2478
if (PluginAdapter::Default().IsTopWindowFullscreenOnMonitorWithMouse())
3734
3727
void UnityScreen::OnLockScreenRequested()
3736
3729
if (switcher_controller_->Visible())
3738
3730
switcher_controller_->Hide(false);
3740
else if (launcher_controller_->IsOverlayOpen())
3732
if (dash_controller_->IsVisible())
3742
3733
dash_controller_->HideDash();
3735
if (hud_controller_->IsVisible())
3743
3736
hud_controller_->HideHud();
3746
3738
launcher_controller_->ClearTooltips();
3740
if (launcher_controller_->KeyNavIsActive())
3741
launcher_controller_->KeyNavTerminate(false);
3743
if (QuicklistManager::Default()->Current())
3744
QuicklistManager::Default()->Current()->Hide();
3748
3746
auto& wm = WindowManager::Default();
3749
3748
if (wm.IsScaleActive())
3750
3749
wm.TerminateScale();
3751
if (wm.IsExpoActive())
3757
void UnityScreen::OnScreenLocked()
3759
SaveLockStamp(true);
3761
for (auto& option : getOptions())
3763
if (option.isAction())
3765
auto& value = option.value();
3767
if (value != mOptions[UnityshellOptions::PanelFirstMenu].value())
3768
screen->removeAction(&value.action());
3772
for (auto& action : getActions())
3773
screen->removeAction(&action);
3775
// We notify that super/alt have been released, to avoid to leave unity in inconsistent state
3776
showLauncherKeyTerminate(&optionGetShowLauncher(), CompAction::StateTermKey, getOptions());
3777
showMenuBarTerminate(&optionGetShowMenuBar(), CompAction::StateTermKey, getOptions());
3780
void UnityScreen::OnScreenUnlocked()
3782
SaveLockStamp(false);
3784
for (auto& option : getOptions())
3786
if (option.isAction())
3787
screen->addAction(&option.value().action());
3790
for (auto& action : getActions())
3791
screen->addAction(&action);
3755
3794
void UnityScreen::SaveLockStamp(bool save)
3757
3796
auto const& cache_dir = DesktopUtilities::GetUserRuntimeDirectory();
3845
3884
auto manager = std::make_shared<session::GnomeManager>();
3846
3885
manager->lock_requested.connect(sigc::mem_fun(this, &UnityScreen::OnLockScreenRequested));
3847
3886
manager->prompt_lock_requested.connect(sigc::mem_fun(this, &UnityScreen::OnLockScreenRequested));
3848
manager->locked.connect(sigc::bind(sigc::mem_fun(this, &UnityScreen::SaveLockStamp), true));
3849
manager->unlocked.connect(sigc::bind(sigc::mem_fun(this, &UnityScreen::SaveLockStamp), false));
3887
manager->locked.connect(sigc::mem_fun(this, &UnityScreen::OnScreenLocked));
3888
manager->unlocked.connect(sigc::mem_fun(this, &UnityScreen::OnScreenUnlocked));
3850
3889
session_dbus_manager_ = std::make_shared<session::DBusManager>(manager);
3851
3890
session_controller_ = std::make_shared<session::Controller>(manager);
3852
3891
AddChild(session_controller_.get());