]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/frame.cpp
Cleaned up paint DC cache in ~wxPaintDC to avoid spurious memory warning
[wxWidgets.git] / src / gtk / frame.cpp
index 0f1306462d64b74c7b119fd96f52ff0525ff08a2..2fc6814ccd352b57bd3dceebf67ec1bb9b5758bf 100644 (file)
@@ -202,11 +202,20 @@ gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *ev
    so we do this directly after realization */
 
 static gint
-gtk_frame_realized_callback( GtkWidget *WXUNUSED(widget), wxFrame *win )
+gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
 {
     if (g_isIdle)
         wxapp_install_idle_handler();
 
+    // FIXME I don't know when does it appear, but it's not in 1.2.2
+#if GTK_CHECK_VERSION(1, 2, 3)
+    /* I haven't been able to set the position of
+       the dialog before it is shown, so I set the
+       position in "realize" */
+    wxLogDebug( "%d %d\n", win->m_x, win->m_y );
+    gtk_window_reposition( GTK_WINDOW(widget), win->m_x, win->m_y );
+#endif // GTK > 1.2.2
+
     /* all this is for Motif Window Manager "hints" and is supposed to be
        recognized by other WM as well. not tested. */
     long decor = (long) GDK_DECOR_BORDER;
@@ -399,7 +408,7 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
 
     m_insertCallback = (wxInsertChildFunction) wxInsertChildInFrame;
 
-    GtkWindowType win_type = GTK_WINDOW_TOPLEVEL;
+    GtkWindowType win_type = GTK_WINDOW_DIALOG;  // this makes window placement work
     if (style & wxSIMPLE_BORDER) win_type = GTK_WINDOW_POPUP;
 
     m_widget = gtk_window_new( win_type );
@@ -560,13 +569,16 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
     if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth;
     if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight;
 
+    // FIXME I don't know when does it appear, but it's not in 1.2.2
+#if GTK_CHECK_VERSION(1, 2, 3)
     if ((m_x != -1) || (m_y != -1))
     {
         if ((m_x != old_x) || (m_y != old_y))
         {
-            gtk_widget_set_uposition( m_widget, m_x, m_y );
+            gtk_window_reposition( GTK_WINDOW(m_widget), m_x, m_y );
         }
     }
+#endif // GTK > 1.2.2
 
     if ((m_width != old_width) || (m_height != old_height))
     {