summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-07-10 13:50:16 +0200
committerCaolán McNamara <caolanm@redhat.com>2015-07-10 19:47:58 +0000
commit7609867f60edb5eaf785ce44386e8ed28ab9e01c (patch)
tree35b59d1728c5dd011a648dde1d9a947ea53e88ee
parent5be82d9765e5fc9bf072f588d02ffa4994ac0312 (diff)
tdf#92670 GtkSalGraphics::NWPaintGTKMenubar: fix modified clip rectangle
Happens only with when double buffering is enabled, and e.g. with the oxygen GTK2 theme, but not with the default one. Change-Id: Iad9911121e57388c84c25860413763f75e06b0ea (cherry picked from commit 12d1a2a08a8056df2c14ad3e75b309847989bc23) Reviewed-on: https://gerrit.libreoffice.org/16931 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx18
1 files changed, 14 insertions, 4 deletions
diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
index b0ca1c61088a..61a471eaa652 100644
--- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
@@ -3192,6 +3192,15 @@ bool GtkSalGraphics::NWPaintGTKToolbar(
return true;
}
+/// Converts a VCL Rectangle to a GdkRectangle.
+static void lcl_rectangleToGdkRectangle(const Rectangle& rRectangle, GdkRectangle& rGdkRectangle)
+{
+ rGdkRectangle.x = rRectangle.Left();
+ rGdkRectangle.y = rRectangle.Top();
+ rGdkRectangle.width = rRectangle.GetWidth();
+ rGdkRectangle.height = rRectangle.GetHeight();
+}
+
bool GtkSalGraphics::NWPaintGTKMenubar(
GdkDrawable* gdkDrawable,
ControlType, ControlPart nPart,
@@ -3226,10 +3235,7 @@ bool GtkSalGraphics::NWPaintGTKMenubar(
for( clipList::const_iterator it = rClipList.begin(); it != rClipList.end(); ++it )
{
- clipRect.x = it->Left();
- clipRect.y = it->Top();
- clipRect.width = it->GetWidth();
- clipRect.height = it->GetHeight();
+ lcl_rectangleToGdkRectangle(*it, clipRect);
// handle Menubar
if( nPart == PART_ENTIRE_CONTROL )
@@ -3249,6 +3255,10 @@ bool GtkSalGraphics::NWPaintGTKMenubar(
GTK_WIDGET(m_pWindow),
"base",
x, y, w, h );
+
+ // Do the conversion again, in case clipRect has been modified.
+ lcl_rectangleToGdkRectangle(*it, clipRect);
+
gtk_paint_box( gWidgetData[m_nXScreen].gMenubarWidget->style,
gdkDrawable,
stateType,