diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-06-14 15:49:56 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-06-14 15:55:55 +0100 |
commit | 8f324aebfb94c4b2023894121b954ad4f35eb395 (patch) | |
tree | 2b48ac0155521b3d18c9867d0deb76aca8ae4d87 /vcl/inc | |
parent | 7bf9ab8e4ece6faf2dc85e62e95ee5a9b5585a6e (diff) |
Resolves: tdf#91393 autotext (etc) not fully drawn
the paint timer is activating after we ask gtk to
size the window but before we/gtk get the ConfigureNotify
that updates gtk knowledge of the size. So the gtk drawing
calls are clipped to the previous ConfigureNotify size.
So, lets try postponing paints if we have set a size but
not received a configure notify yet
I'll also revert e6a1956034c98204e30b0ca40330249d6f6f8155
in favour of this attempt
Change-Id: If5e993f8e0e65053b59234fce0785398b93c1c46
Diffstat (limited to 'vcl/inc')
-rw-r--r-- | vcl/inc/salframe.hxx | 5 | ||||
-rw-r--r-- | vcl/inc/unx/gtk/gtkframe.hxx | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx index acdb9b4b2d5e..f5213a101851 100644 --- a/vcl/inc/salframe.hxx +++ b/vcl/inc/salframe.hxx @@ -101,6 +101,9 @@ class VCL_PLUGIN_PUBLIC SalFrame : public vcl::DeletionNotifier , public SalGeometryProvider { +protected: + bool m_bAwaitingSizeConfirmation; +private: // the VCL window corresponding to this frame VclPtr<vcl::Window> m_pWindow; SALFRAMEPROC m_pProc; @@ -242,6 +245,8 @@ public: // (e.g. input methods, printer update handlers). long CallCallback( sal_uInt16 nEvent, const void* pEvent ) const { return m_pProc ? long(m_pProc( m_pWindow, const_cast<SalFrame*>(this), nEvent, pEvent )) : 0; } + + bool AwaitingSizeConfirmation() const { return m_bAwaitingSizeConfirmation; } }; #endif // INCLUDED_VCL_INC_SALFRAME_HXX diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx index 194a20dc9e4c..d46b87214e74 100644 --- a/vcl/inc/unx/gtk/gtkframe.hxx +++ b/vcl/inc/unx/gtk/gtkframe.hxx @@ -295,6 +295,15 @@ class GtkSalFrame : public SalFrame, public X11WindowProvider return (m_nStyle & nMask) != 0; } + //call gtk_window_resize if the current size differs and + //block Paints until Configure is received and the size + //is valid again + void window_resize(long nWidth, long nHeight); + //call gtk_widget_set_size_request if the current size request differs and + //block Paints until Configure is received and the size + //is valid again + void widget_set_size_request(long nWidth, long nHeight); + void resizeWindow( long nWidth, long nHeight ); void moveWindow( long nX, long nY ); |