]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/window.cpp
another unneeded file
[wxWidgets.git] / src / gtk / window.cpp
index d12fcf4e69322147d9481d7785b95598c6925287..0200936cf0584eb98cb597364f05017ab4aadd15 100644 (file)
@@ -44,9 +44,7 @@
 #include "gdk/gdkkeysyms.h"
 #include "wx/gtk/win_gtk.h"
 
-#if (GTK_MINOR_VERSION == 0)
 #include "gdk/gdkx.h"
-#endif
 
 //-----------------------------------------------------------------------------
 // documentation on internals
@@ -179,6 +177,32 @@ void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar *window
 
 #endif // Debug
 
+//-----------------------------------------------------------------------------
+// missing gdk functions
+//-----------------------------------------------------------------------------
+
+void
+gdk_window_warp_pointer (GdkWindow      *window,
+                        gint            x,
+                        gint            y)
+{
+  GdkWindowPrivate *priv;
+  
+  if (!window)
+    window = (GdkWindow*) &gdk_root_parent;
+  
+  priv = (GdkWindowPrivate*) window;
+  
+  if (!priv->destroyed)
+  {
+      XWarpPointer (priv->xdisplay, 
+                    None,              /* not source window -> move from anywhere */
+                   priv->xwindow,  /* dest window */
+                    0, 0, 0, 0,        /* not source window -> move from anywhere */
+                   x, y );
+  }
+}
+
 //-----------------------------------------------------------------------------
 // idle system
 //-----------------------------------------------------------------------------
@@ -626,6 +650,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
         ret = (ret || win->GetEventHandler()->ProcessEvent( event2 ));
     }
 
+#if wxUSE_ACCEL
     if (!ret)
     {
         wxWindow *ancestor = win;
@@ -641,6 +666,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
             ancestor = ancestor->GetParent();
         }
     }
+#endif // wxUSE_ACCEL
 
     /* win is a control: tab can be propagated up */
     if ( (!ret) &&
@@ -682,8 +708,8 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
                     wxNode *node = menubar->GetMenus().First();
                    if (node)
                    {
-                        wxMenu *firstMenu = (wxMenu*) node->Data();
                        // doesn't work correctly
+            // wxMenu *firstMenu = (wxMenu*) node->Data();
                        // gtk_menu_item_select( GTK_MENU_ITEM(firstMenu->m_owner) );
                        // ret = TRUE;
                        break;
@@ -2359,12 +2385,23 @@ bool wxWindow::AcceptsFocus() const
 bool wxWindow::Reparent( wxWindow *newParent )
 {
     wxCHECK_MSG( (m_widget != NULL), (wxWindow*) NULL, _T("invalid window") );
-
-    gtk_widget_unparent( m_widget );
+    
+    wxWindow *oldParent = m_parent;
 
     if ( !wxWindowBase::Reparent(newParent) )
         return FALSE;
 
+    if (oldParent)
+    {
+        gtk_container_remove( GTK_CONTAINER(oldParent->m_wxwindow), m_widget );
+    }
+    
+    if (newParent)
+    {
+        /* insert GTK representation */
+        (*(newParent->m_insertCallback))(newParent, this);
+    }
+    
     return TRUE;
 }
 
@@ -2430,9 +2467,17 @@ bool wxWindow::SetCursor( const wxCursor &cursor )
     return TRUE;
 }
 
-void wxWindow::WarpPointer( int WXUNUSED(x), int WXUNUSED(y) )
+void wxWindow::WarpPointer( int x, int y )
 {
-    // TODO
+    wxCHECK_RET( (m_widget != NULL), _T("invalid window") );
+
+    GtkWidget *connect_widget = GetConnectWidget();
+    if (connect_widget->window)
+    {
+        /* we provide this function ourselves as it is
+          missing in GDK */
+        gdk_window_warp_pointer( connect_widget->window, x, y );
+    }
 }
 
 void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )