diff options
author | Michael Meeks <michael.meeks@suse.com> | 2012-07-27 15:27:46 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2012-07-27 15:30:33 +0100 |
commit | fae17f307efeebf535d5e389e2e829fbd9dace58 (patch) | |
tree | 694be575ef753cb0388c29b2efdde4f59ceadbfa /vcl/unx/gtk | |
parent | 3c39dd893afec4f00039d0e0d4e97328fe848f0f (diff) |
gtk3: ensure we re-render native commits
If we blit pixels to the back-buffer, we need to remember to get them
to gtk3 at idle.
Change-Id: Ic37660e963fbbcdd132cfba0ce739174d64148d2
Diffstat (limited to 'vcl/unx/gtk')
-rw-r--r-- | vcl/unx/gtk/window/gtkframe.cxx | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx index 36be0b223c41..d45a8f65545a 100644 --- a/vcl/unx/gtk/window/gtkframe.cxx +++ b/vcl/unx/gtk/window/gtkframe.cxx @@ -2990,6 +2990,12 @@ void GtkSalFrame::popIgnoreDamage() { m_nDuringRender--; } + +bool GtkSalFrame::isDuringRender() +{ + return m_nDuringRender; +} + #endif void GtkSalFrame::damaged (const basegfx::B2IBox& rDamageRect) @@ -2997,27 +3003,29 @@ void GtkSalFrame::damaged (const basegfx::B2IBox& rDamageRect) #if !GTK_CHECK_VERSION(3,0,0) (void)rDamageRect; #else - if (m_nDuringRender) + if ( isDuringRender() ) return; #if OSL_DEBUG_LEVEL > 1 long long area = rDamageRect.getWidth() * rDamageRect.getHeight(); if( area > 32 * 1024 ) - fprintf( stderr, "bitmap damaged %d %d (%dx%d) area %lld\n", + { + fprintf( stderr, "bitmap damaged %d %d (%dx%d) area %lld widget\n", (int) rDamageRect.getMinX(), (int) rDamageRect.getMinY(), (int) rDamageRect.getWidth(), (int) rDamageRect.getHeight(), area ); + } #endif /* FIXME: this is a dirty hack, to render buttons correctly, we * should of course remove the -100 and + 200, but the whole area * won't be rendered then. */ gtk_widget_queue_draw_area( m_pWindow, - rDamageRect.getMinX() - 100, - rDamageRect.getMinY() - 100, - rDamageRect.getWidth() + 200, - rDamageRect.getHeight() + 200 ); + rDamageRect.getMinX() - 1, + rDamageRect.getMinY() - 1, + rDamageRect.getWidth() + 2, + rDamageRect.getHeight() + 2 ); #endif } |