diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-05-02 18:59:49 +0200 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-05-02 18:59:49 +0200 |
| commit | 994dec17ced7841c762aa01a67c44e07579dae6a (patch) | |
| tree | 4007b2b37200210d871a229e92c9c37c564e3600 /plugins | |
| parent | 06671de6ad076a8978d990f3436cca4539388909 (diff) | |
UnityScreen: always paint the lockscreen above, just add menu and onboard as exceptions
(bzr r3794.2.1)
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/unityshell/src/unityshell.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/plugins/unityshell/src/unityshell.cpp b/plugins/unityshell/src/unityshell.cpp index dfc4a70ac..2582da9b6 100644 --- a/plugins/unityshell/src/unityshell.cpp +++ b/plugins/unityshell/src/unityshell.cpp @@ -939,7 +939,8 @@ void UnityScreen::DrawPanelUnderDash() bool UnityScreen::forcePaintOnTop() { - return !allowWindowPaint || + return !allowWindowPaint || + lockscreen_controller_->IsLocked() || ((switcher_controller_->Visible() || WindowManager::Default().IsExpoActive()) && !fullscreen_windows_.empty () && (!(screen->grabbed () && !screen->otherGrabExist (NULL)))); @@ -2799,9 +2800,7 @@ bool UnityWindow::glPaint(const GLWindowPaintAttrib& attrib, * fully covers the shell on its output. It does not include regular windows * stacked above the shell like DnD icons or Onboard etc. */ - if (G_UNLIKELY(is_nux_window_) && - (!uScreen->lockscreen_controller_->IsLocked() || - uScreen->lockscreen_controller_->opacity() != 1.0f)) + if (G_UNLIKELY(is_nux_window_)) { if (mask & PAINT_WINDOW_OCCLUSION_DETECTION_MASK) { @@ -2933,6 +2932,7 @@ bool UnityWindow::glDraw(const GLMatrix& matrix, { auto window_state = window->state(); auto window_type = window->type(); + bool locked = uScreen->lockscreen_controller_->IsLocked(); if (uScreen->doShellRepaint && !uScreen->paint_panel_under_dash_ && window_type == CompWindowTypeNormalMask) { @@ -2949,12 +2949,20 @@ bool UnityWindow::glDraw(const GLMatrix& matrix, } if (uScreen->doShellRepaint && - !uScreen->forcePaintOnTop () && window == uScreen->firstWindowAboveShell && + !uScreen->forcePaintOnTop() && !uScreen->fullscreenRegion.contains(window->geometry())) { uScreen->paintDisplay(); } + else if (locked && + ((window_type == CompWindowTypePopupMenuMask && + uScreen->lockscreen_controller_->HasOpenMenu()) || + (window_type == CompWindowTypeUtilMask && + window->resName() == "onboard"))) + { + uScreen->paintDisplay(); + } enum class DrawPanelShadow { @@ -3017,7 +3025,7 @@ bool UnityWindow::glDraw(const GLMatrix& matrix, } } - if (uScreen->lockscreen_controller_->IsLocked()) + if (locked) draw_panel_shadow = DrawPanelShadow::NO; if (draw_panel_shadow == DrawPanelShadow::BELOW_WINDOW) |
