]> git.saurik.com Git - wxWidgets.git/commitdiff
Added GTKShouldConnectSizeRequest() to prevent size_request handling.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 5 Oct 2009 22:54:46 +0000 (22:54 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 5 Oct 2009 22:54:46 +0000 (22:54 +0000)
Don't hard code the exception for GtkFileChooserButton in
wxWindow::PostCreation() in wxGTK, handling size_request signal also breaks
other controls (e.g. upcoming wxInfoBar native implementation). Instead,
define a virtual function which may be overridden to return false if
size_request shouldn't be connected.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/filepicker.h
include/wx/gtk/window.h
src/gtk/window.cpp

index f3f6803f710c60a0d3c554f34cdbacf35bfe3e35..8b92ee6d0a258c4a278aef4167e9a4da35ce0e0b 100644 (file)
@@ -105,6 +105,8 @@ public:     // overrides
     FILEDIRBTN_OVERRIDES
 
 protected:
+    virtual bool GTKShouldConnectSizeRequest() const { return false; }
+
     wxDialog *m_dialog;
 
     DECLARE_DYNAMIC_CLASS(wxFileButton)
index d34f5b1de85b59c1e833743d56eb926fc75c2d35..f3639f2c8c3cdf70270253236e5ad657d6d55298 100644 (file)
@@ -363,6 +363,11 @@ protected:
     // should be called from OnInternalIdle() if it's overridden
     void GTKUpdateCursor();
 
+    // Return true from here if PostCreation() should connect to size_request
+    // signal: this is done by default but doesn't work for some native
+    // controls which override this function to return false
+    virtual bool GTKShouldConnectSizeRequest() const { return !IsTopLevel(); }
+
     void ConstrainSize();
 
 private:
index 84846a243a8372574a5d32d570ddf2ddab89b5d1..b73603f108a8040424feea2fc5e96fa8d5b0a590 100644 (file)
@@ -2365,16 +2365,7 @@ void wxWindowGTK::PostCreation()
 #endif
     }
 
-#ifdef GTK_IS_FILE_CHOOSER_BUTTON
-    if (!gtk_check_version(2,6,0) && GTK_IS_FILE_CHOOSER_BUTTON(m_widget))
-    {
-        // If we connect to the "size_request" signal of a GtkFileChooserButton
-        // then that control won't be sized properly when placed inside sizers
-        // (this can be tested removing this elseif and running XRC or WIDGETS samples)
-        // FIXME: what should be done here ?
-    } else
-#endif
-    if ( !IsTopLevel() ) // top level windows use their own callback
+    if ( GTKShouldConnectSizeRequest() )
     {
         // This is needed if we want to add our windows into native
         // GTK controls, such as the toolbar. With this callback, the