]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/window.cpp
When making the DLL with glcanvas then you have to link the dll with
[wxWidgets.git] / src / gtk / window.cpp
index 30618833e4c5c7f1016c52318200a3918893ab05..2519cd6f39f72ad498427ab03dc168e988ef2f8d 100644 (file)
 #include <gtk/gtk.h>
 #include <gdk/gdkprivate.h>
 #include <gdk/gdkkeysyms.h>
-#include <wx/gtk/win_gtk.h>
-
 #include <gdk/gdkx.h>
 
+#include <gtk/gtk.h>
+#include <gtk/gtkprivate.h>
+
+#include "wx/gtk/win_gtk.h"
+
 //-----------------------------------------------------------------------------
 // documentation on internals
 //-----------------------------------------------------------------------------
@@ -270,7 +273,7 @@ gdk_window_warp_pointer (GdkWindow      *window,
   GdkWindowPrivate *priv;
 
   if (!window)
-    window = (GdkWindow*) &gdk_root_parent;
+    window = GDK_ROOT_PARENT();
 
   priv = (GdkWindowPrivate*) window;
 
@@ -621,7 +624,7 @@ static int gtk_window_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_ev
         wxapp_install_idle_handler();
         
 /*
-    if (win->GetName() == wxT("htmlWindow"))
+    if (win->GetName() == wxT("panel"))
     {
         wxPrintf( wxT("OnExpose from ") );
         if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
@@ -721,7 +724,7 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
         wxapp_install_idle_handler();
         
 /*
-    if (win->GetName() == wxT("htmlWindow"))
+    if (win->GetName() == wxT("panel"))
     {
         wxPrintf( wxT("OnDraw from ") );
         if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
@@ -737,6 +740,7 @@ static void gtk_window_draw_callback( GtkWidget *widget, GdkRectangle *rect, wxW
         
     if (!win->m_queuedFullRedraw)
     {
+    
         if (!(GTK_WIDGET_APP_PAINTABLE (widget)) &&
              (pizza->clear_on_draw))
         {
@@ -2571,8 +2575,14 @@ void wxWindow::OnInternalIdle()
            the actual size of window, in which case all expose events that resulted
            from resizing the window have been sent (and discarded) and we can
            now do our full redraw and switch on expose event handling again. */
-           
-        if ((m_width == m_widget->allocation.width) && (m_height == m_widget->allocation.height))
+        
+        bool child_already_resized = FALSE;
+        if (m_isFrame)
+            child_already_resized = gtk_pizza_child_resized( GTK_PIZZA(m_wxwindow->parent), m_wxwindow );
+        else
+            child_already_resized = gtk_pizza_child_resized( GTK_PIZZA(m_widget->parent), m_widget );
+        
+        if (child_already_resized)
         {
             m_queuedFullRedraw = FALSE;
             m_updateRegion.Clear();
@@ -3030,6 +3040,8 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
             gtk_pizza_set_clear( pizza, old_clear );
 */
             GdkEventExpose gdk_event;
+            gdk_event.type = GDK_EXPOSE;
+            gdk_event.window = GTK_PIZZA(m_wxwindow)->bin_window;
             gdk_event.count = 0;
             gdk_event.area.x = 0;
             gdk_event.area.y = 0;
@@ -3064,6 +3076,8 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
             gtk_pizza_set_clear( pizza, old_clear );
 */
             GdkEventExpose gdk_event;
+            gdk_event.type = GDK_EXPOSE;
+            gdk_event.window = GTK_PIZZA(m_wxwindow)->bin_window;
             gdk_event.count = 0;
             gdk_event.area.x = rect->x;
             gdk_event.area.y = rect->y;