diff options
| author | Andrea Azzarone <azzaronea@gmail.com> | 2012-10-09 08:18:19 -0400 |
|---|---|---|
| committer | Tarmac <> | 2012-10-09 08:18:19 -0400 |
| commit | 4848643e33e47d9e2d0d3bf8b973d09a3a7faf17 (patch) | |
| tree | ab1a9b6a99c4d0c931dec4f87374981ebc9fa7ee /unity-shared | |
| parent | 26aef95d482a52b6a635445f47bf19488f489b23 (diff) | |
| parent | 688b7dfbc585b148b8883cda9bcc001e9383e6eb (diff) | |
Fix rendering flaw in search entry. (LP: #1059562). Fixes: https://bugs.launchpad.net/bugs/1059562. Approved by Nick Dedekind.
(bzr r2816)
Diffstat (limited to 'unity-shared')
| -rw-r--r-- | unity-shared/SearchBar.cpp | 39 |
1 files changed, 11 insertions, 28 deletions
diff --git a/unity-shared/SearchBar.cpp b/unity-shared/SearchBar.cpp index 8d63f20da..3e61f074d 100644 --- a/unity-shared/SearchBar.cpp +++ b/unity-shared/SearchBar.cpp @@ -363,6 +363,17 @@ void SearchBar::Draw(nux::GraphicsEngine& graphics_engine, bool force_draw) graphics_engine.PushClippingRectangle(base); + if (RedirectedAncestor()) + { + unsigned int alpha = 0, src = 0, dest = 0; + graphics_engine.GetRenderStates().GetBlend(alpha, src, dest); + // This is necessary when doing redirected rendering. + // Clean the area below this view before drawing anything. + graphics_engine.GetRenderStates().SetBlend(false); + graphics_engine.QRP_Color(base.x, base.y, base.width, base.height, nux::Color(0.0f, 0.0f, 0.0f, 0.0f)); + graphics_engine.GetRenderStates().SetBlend(alpha, src, dest); + } + bg_layer_->SetGeometry(nux::Geometry(base.x, base.y, last_width_, last_height_)); nux::GetPainter().RenderSinglePaintLayer(graphics_engine, bg_layer_->GetGeometry(), @@ -380,38 +391,10 @@ void SearchBar::Draw(nux::GraphicsEngine& graphics_engine, bool force_draw) if (!highlight_layer_) highlight_layer_.reset(style.FocusOverlay(geo.width, geo.height)); - if (RedirectedAncestor()) - { - unsigned int alpha = 0, src = 0, dest = 0; - graphics_engine.GetRenderStates().GetBlend(alpha, src, dest); - // This is necessary when doing redirected rendering. - // Clean the area below this view before drawing anything. - graphics_engine.GetRenderStates().SetBlend(false); - graphics_engine.QRP_Color(geo.x, geo.y, geo.width, geo.height, nux::Color(0.0f, 0.0f, 0.0f, 0.0f)); - graphics_engine.GetRenderStates().SetBlend(alpha, src, dest); - } - highlight_layer_->SetGeometry(geo); highlight_layer_->Renderlayer(graphics_engine); } - else if (expander_view_ && expander_view_->IsVisible()) - { - nux::Geometry geo(expander_view_->GetGeometry()); - - geo.y -= (HIGHLIGHT_HEIGHT- geo.height) / 2; - geo.height = HIGHLIGHT_HEIGHT; - if (RedirectedAncestor()) - { - unsigned int alpha = 0, src = 0, dest = 0; - graphics_engine.GetRenderStates().GetBlend(alpha, src, dest); - // This is necessary when doing redirected rendering. - // Clean the area below this view before drawing anything. - graphics_engine.GetRenderStates().SetBlend(false); - graphics_engine.QRP_Color(geo.x, geo.y, geo.width, geo.height, nux::Color(0.0f, 0.0f, 0.0f, 0.0f)); - graphics_engine.GetRenderStates().SetBlend(alpha, src, dest); - } - } graphics_engine.PopClippingRectangle(); } |
