diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-07-10 13:50:16 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-07-10 19:47:58 +0000 |
commit | 7609867f60edb5eaf785ce44386e8ed28ab9e01c (patch) | |
tree | 35b59d1728c5dd011a648dde1d9a947ea53e88ee | |
parent | 5be82d9765e5fc9bf072f588d02ffa4994ac0312 (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.cxx | 18 |
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, |