summaryrefslogtreecommitdiff
path: root/plugins
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2014-05-02 18:59:49 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2014-05-02 18:59:49 +0200
commit994dec17ced7841c762aa01a67c44e07579dae6a (patch)
tree4007b2b37200210d871a229e92c9c37c564e3600 /plugins
parent06671de6ad076a8978d990f3436cca4539388909 (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.cpp20
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)