]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/popupwin.cpp
Fix for #15520: wxRichTextCtrl: Drawing the selection doesn't respect its container...
[wxWidgets.git] / src / gtk / popupwin.cpp
index 15e9854112c88b156bf8ebd69249bf9580ae944f..08a85ea1a55d4203929fea767712840a72c67ddf 100644 (file)
@@ -2,7 +2,6 @@
 // Name:        src/gtk/popupwin.cpp
 // Purpose:
 // Author:      Robert Roebling
 // Name:        src/gtk/popupwin.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Id:          $Id$
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -46,7 +45,7 @@ static gint gtk_popup_button_press (GtkWidget *widget, GdkEvent *gdk_event, wxPo
         {
             if (child == widget)
                 return FALSE;
         {
             if (child == widget)
                 return FALSE;
-            child = child->parent;
+            child = gtk_widget_get_parent(child);
         }
     }
 
         }
     }
 
@@ -73,14 +72,6 @@ bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED
 }
 }
 
 }
 }
 
-void wxPopupWindow::AddChildGTK(wxWindowGTK* child)
-{
-    gtk_widget_set_size_request(
-        child->m_widget, child->m_width, child->m_height);
-    gtk_fixed_put(
-        GTK_FIXED(m_wxwindow), child->m_widget, child->m_x, child->m_y);
-}
-
 //-----------------------------------------------------------------------------
 // wxPopupWindow
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // wxPopupWindow
 //-----------------------------------------------------------------------------
@@ -117,23 +108,31 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
     // wxPopupWindow is used for different windows as well
     // gtk_window_set_type_hint( GTK_WINDOW(m_widget), GDK_WINDOW_TYPE_HINT_COMBO );
 
     // wxPopupWindow is used for different windows as well
     // gtk_window_set_type_hint( GTK_WINDOW(m_widget), GDK_WINDOW_TYPE_HINT_COMBO );
 
-    GtkWidget *toplevel = gtk_widget_get_toplevel( parent->m_widget );
-    if (GTK_IS_WINDOW (toplevel))
+    // Popup windows can be created without parent, so handle this correctly.
+    if (parent)
     {
     {
+        GtkWidget *toplevel = gtk_widget_get_toplevel( parent->m_widget );
+        if (GTK_IS_WINDOW (toplevel))
+        {
 #if GTK_CHECK_VERSION(2,10,0)
 #if GTK_CHECK_VERSION(2,10,0)
-        if (!gtk_check_version(2,10,0))
-            gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), GTK_WINDOW (m_widget));
+#ifndef __WXGTK3__
+            if (!gtk_check_version(2,10,0))
 #endif
 #endif
-
-        gtk_window_set_transient_for (GTK_WINDOW (m_widget), GTK_WINDOW (toplevel));
+            {
+                gtk_window_group_add_window (gtk_window_get_group (GTK_WINDOW (toplevel)), GTK_WINDOW (m_widget));
+            }
+#endif
+            gtk_window_set_transient_for (GTK_WINDOW (m_widget), GTK_WINDOW (toplevel));
+        }
+        gtk_window_set_screen (GTK_WINDOW (m_widget), gtk_widget_get_screen (GTK_WIDGET (parent->m_widget)));
     }
     }
+
     gtk_window_set_resizable (GTK_WINDOW (m_widget), FALSE);
     gtk_window_set_resizable (GTK_WINDOW (m_widget), FALSE);
-    gtk_window_set_screen (GTK_WINDOW (m_widget), gtk_widget_get_screen (GTK_WIDGET (parent->m_widget)));
 
     g_signal_connect (m_widget, "delete_event",
                       G_CALLBACK (gtk_dialog_delete_callback), this);
 
 
     g_signal_connect (m_widget, "delete_event",
                       G_CALLBACK (gtk_dialog_delete_callback), this);
 
-    m_wxwindow = wxPizza::New(m_windowStyle, this);
+    m_wxwindow = wxPizza::New();
     gtk_widget_show( m_wxwindow );
 
     gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
     gtk_widget_show( m_wxwindow );
 
     gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );