summaryrefslogtreecommitdiff
path: root/vcl/inc
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-06-14 15:49:56 +0100
committerCaolán McNamara <caolanm@redhat.com>2015-06-14 15:55:55 +0100
commit8f324aebfb94c4b2023894121b954ad4f35eb395 (patch)
tree2b48ac0155521b3d18c9867d0deb76aca8ae4d87 /vcl/inc
parent7bf9ab8e4ece6faf2dc85e62e95ee5a9b5585a6e (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.hxx5
-rw-r--r--vcl/inc/unx/gtk/gtkframe.hxx9
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 );