]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/window.cpp
undef GTK_DISABLE_DEPRECATED for any gtk+ version, as it turns out we use GtkList...
[wxWidgets.git] / src / gtk / window.cpp
index 3022f24bb1a6c92afd0444468f8995e4fb47c984..d98386fe20a204b536696ccea1d1e88a3985908e 100644 (file)
 #include "wx/math.h"
 #include <ctype.h>
 
+// FIXME: Due to a hack we use GtkCombo in here, which is deprecated since gtk2.3.0
+#include <gtk/gtkversion.h>
+#if defined(GTK_DISABLE_DEPRECATED) && GTK_CHECK_VERSION(2,3,0)
+#undef GTK_DISABLE_DEPRECATED
+#endif
+
 #include "wx/gtk/private.h"
 #include <gdk/gdkprivate.h>
 #include <gdk/gdkkeysyms.h>
@@ -1877,15 +1883,15 @@ static gboolean gtk_window_focus_in_callback( GtkWidget *widget,
 
         (void)DoSendFocusEvents(win);
         
-        ret = TRUE;
+        ret = true;
     }
 
     // Disable default focus handling for custom windows
     // since the default GTK+ handler issues a repaint
     if (win->m_wxwindow)
-        g_signal_stop_emission_by_name (widget, "focus_in_event");
+        return ret;
         
-    return ret;
+    return false;
 }
 }
 
@@ -1943,15 +1949,15 @@ static gboolean gtk_window_focus_out_callback( GtkWidget *widget,
 
         (void)win->GetEventHandler()->ProcessEvent( event );
         
-        ret = TRUE;
+        ret = true;
     }
     
     // Disable default focus handling for custom windows
     // since the default GTK+ handler issues a repaint
     if (win->m_wxwindow)
-        g_signal_stop_emission_by_name (widget, "focus_out_event");
+        return ret;
            
-    return ret;
+    return false;
 }
 }
 
@@ -2748,10 +2754,20 @@ void wxWindowGTK::PostCreation()
         if (m_focusWidget == NULL)
             m_focusWidget = m_widget;
 
-        g_signal_connect (m_focusWidget, "focus_in_event",
+        if (m_wxwindow)
+        {
+            g_signal_connect (m_focusWidget, "focus_in_event",
                           G_CALLBACK (gtk_window_focus_in_callback), this);
-        g_signal_connect (m_focusWidget, "focus_out_event",
-                          G_CALLBACK (gtk_window_focus_out_callback), this);
+            g_signal_connect (m_focusWidget, "focus_out_event",
+                                G_CALLBACK (gtk_window_focus_out_callback), this);
+        }
+        else
+        {
+            g_signal_connect_after (m_focusWidget, "focus_in_event",
+                          G_CALLBACK (gtk_window_focus_in_callback), this);
+            g_signal_connect_after (m_focusWidget, "focus_out_event",
+                                G_CALLBACK (gtk_window_focus_out_callback), this);
+        }
     }
 
     // connect to the various key and mouse handlers