]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/frame.cpp
//... => /* ... */
[wxWidgets.git] / src / gtk / frame.cpp
index c33bf7f0cfc38869255d29fec2be14e82d635130..78247575e79beb37aa4dd13c79b270fe0eaa4dae 100644 (file)
 #include "wx/control.h"
 #include "wx/app.h"
 #include "wx/menu.h"
+#if wxUSE_TOOLBAR
 #include "wx/toolbar.h"
+#endif
+#if wxUSE_STATUSBAR
 #include "wx/statusbr.h"
+#endif
 #include "wx/dcclient.h"
 
 #include "glib.h"
@@ -25,6 +29,7 @@
 #include "gtk/gtk.h"
 #include "wx/gtk/win_gtk.h"
 #include "gdk/gdkkeysyms.h"
+#include "gdk/gdkx.h"
 
 //-----------------------------------------------------------------------------
 // constants
@@ -148,19 +153,28 @@ static void gtk_toolbar_detached_callback( GtkWidget *widget, GtkWidget *WXUNUSE
 // "configure_event"
 //-----------------------------------------------------------------------------
 
-static gint gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxFrame *win )
+static gint 
+#if (GTK_MINOR_VERSON > 0)
+gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *WXUNUSED(event), wxFrame *win )
+#else
+gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *event, wxFrame *win )
+#endif
 {
-    if (g_isIdle)
+    if (g_isIdle) 
         wxapp_install_idle_handler();
 
     if (!win->m_hasVMT) return FALSE;
 
+#if (GTK_MINOR_VERSON > 0)
     int x = 0;
     int y = 0;
     gdk_window_get_root_origin( win->m_widget->window, &x, &y );
-
     win->m_x = x;
     win->m_y = y;
+#else
+    win->m_x = event->x;
+    win->m_y = event->y;
+#endif
 
     wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() );
     mevent.SetEventObject( win );
@@ -210,7 +224,6 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
        decor |= GDK_DECOR_RESIZEH;
     }
 
-
     gdk_window_set_decorations( win->m_widget->window, (GdkWMDecoration)decor);
     gdk_window_set_functions( win->m_widget->window, (GdkWMFunction)func);
 
@@ -347,7 +360,12 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
 
     m_needParent = FALSE;
 
-    PreCreation( parent, id, pos, size, style, name );
+    if (!PreCreation( parent, pos, size ) ||
+        !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
+    {
+        wxFAIL_MSG( _T("wxFrame creation failed") );
+       return FALSE;
+    }
 
     m_title = title;
 
@@ -560,9 +578,12 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
                 (*height) -= wxPLACE_HOLDER;
         }
 
+#if wxUSE_STATUSBAR
         /* status bar */
         if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT;
+#endif
 
+#if wxUSE_TOOLBAR
         /* tool bar */
         if (m_frameToolBar)
         {
@@ -575,6 +596,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
             else
                 (*height) -= wxPLACE_HOLDER;
         }
+#endif
 
         /* mini edge */
         (*height) -= m_miniEdge*2 + m_miniTitle;
@@ -598,9 +620,12 @@ void wxFrame::DoSetClientSize( int width, int height )
                 height += wxPLACE_HOLDER;
         }
 
+#if wxUSE_STATUSBAR
         /* status bar */
         if (m_frameStatusBar) height += wxSTATUS_HEIGHT;
+#endif
 
+#if wxUSE_TOOLBAR
         /* tool bar */
         if (m_frameToolBar)
         {
@@ -613,6 +638,7 @@ void wxFrame::DoSetClientSize( int width, int height )
             else
                 height += wxPLACE_HOLDER;
         }
+#endif
 
     wxWindow::DoSetClientSize( width + m_miniEdge*2, height  + m_miniEdge*2 + m_miniTitle );
 }
@@ -674,6 +700,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
             client_area_y_offset += hh;
         }
 
+#if wxUSE_TOOLBAR
         if (m_frameToolBar)
         {
             int xx = m_miniEdge;
@@ -697,6 +724,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
                                   xx, yy, ww, hh );
             client_area_y_offset += hh;
         }
+#endif
 
         int client_x = m_miniEdge;
         int client_y = client_area_y_offset + m_miniEdge + m_miniTitle;
@@ -712,6 +740,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
            is no need to set the size or position of m_wxwindow. */
     }
 
+#if wxUSE_STATUSBAR
     if (m_frameStatusBar)
     {
         int xx = 0 + m_miniEdge;
@@ -726,6 +755,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
                               m_frameStatusBar->m_widget,
                               xx, yy, ww, hh );
     }
+#endif
 
     /* we actually set the size of a frame here and no-where else */
     gtk_widget_set_usize( m_widget, m_width, m_height );
@@ -764,8 +794,12 @@ void wxFrame::OnInternalIdle()
     DoMenuUpdates();
 
     if (m_frameMenuBar) m_frameMenuBar->OnInternalIdle();
+#if wxUSE_TOOLBAR
     if (m_frameToolBar) m_frameToolBar->OnInternalIdle();
+#endif
+#if wxUSE_STATUSBAR
     if (m_frameStatusBar) m_frameStatusBar->OnInternalIdle();
+#endif
 }
 
 void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
@@ -1014,3 +1048,25 @@ void wxFrame::SetIcon( const wxIcon &icon )
     gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
 }
 
+void wxFrame::Maximize(bool WXUNUSED(maximize)) 
+{
+}
+
+void wxFrame::Restore() 
+{
+}
+
+void wxFrame::Iconize( bool iconize ) 
+{ 
+   if (iconize)
+   {
+        XIconifyWindow( GDK_WINDOW_XDISPLAY( m_widget->window ),
+                       GDK_WINDOW_XWINDOW( m_widget->window ),
+                       DefaultScreen( GDK_DISPLAY() ) );
+   }
+}
+
+bool wxFrame::IsIconized() const 
+{ 
+    return FALSE; 
+}