]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxFrame::OnCreateStatusBar and ToolBar
authorRobert Roebling <robert@roebling.de>
Wed, 12 Aug 1998 11:44:33 +0000 (11:44 +0000)
committerRobert Roebling <robert@roebling.de>
Wed, 12 Aug 1998 11:44:33 +0000 (11:44 +0000)
  Added wxWindow::Raise and Lower

  There isn't going to be wxFrame::SetToolBar.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/frame.h
include/wx/gtk/window.h
include/wx/gtk1/frame.h
include/wx/gtk1/window.h
samples/controls/controls.cpp
src/gtk/frame.cpp
src/gtk/window.cpp
src/gtk1/frame.cpp
src/gtk1/window.cpp

index 76e0a5c5b155cc8a58033677fe0c076de36cb7f6..2b52e132c47cf2164322d7c1f3fc5f69e32d27e6 100644 (file)
@@ -70,16 +70,19 @@ public:
 
   virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0,
     const wxString& name = "statusBar");
-  virtual wxStatusBar *GetStatusBar();
+  virtual wxStatusBar *OnCreateStatusBar( int number, long style, wxWindowID id,
+    const wxString& name );
+  virtual wxStatusBar *GetStatusBar() const;
   virtual void SetStatusText( const wxString &text, int number = 0 );
-  virtual void SetStatusWidths( int n, int *width );
+  virtual void SetStatusWidths( int n, const int widths_field[] );
 
   virtual wxToolBar* CreateToolBar( long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, 
                                     const wxString& name = wxToolBarNameStr);
-  virtual wxToolBar *GetToolBar();
+  virtual wxToolBar *OnCreateToolBar( long style, wxWindowID id, const wxString& name );
+  virtual wxToolBar *GetToolBar(void) const;
   
   virtual void SetMenuBar( wxMenuBar *menuBar );
-  virtual wxMenuBar *GetMenuBar();
+  virtual wxMenuBar *GetMenuBar() const;
 
   virtual void SetTitle( const wxString &title );
   virtual wxString GetTitle() const { return m_title; }
index 26e0c6a3401f83478fbd82ef0c8c8bc31e4f06c2..8d36786733ed1ec9331b3d88a5c21dbf8e9c1826 100644 (file)
@@ -152,12 +152,8 @@ public:
 
   virtual bool IsShown() const;
 
-  // Raise the window to the top of the Z order
-  virtual void Raise(void) {};
-
-  // Lower the window to the bottom of the Z order
-  virtual void Lower(void) {};
-
+  virtual void Raise(void);
+  virtual void Lower(void);
 
   virtual bool IsRetained();
   virtual wxWindow *FindWindow( long id );
index 76e0a5c5b155cc8a58033677fe0c076de36cb7f6..2b52e132c47cf2164322d7c1f3fc5f69e32d27e6 100644 (file)
@@ -70,16 +70,19 @@ public:
 
   virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0,
     const wxString& name = "statusBar");
-  virtual wxStatusBar *GetStatusBar();
+  virtual wxStatusBar *OnCreateStatusBar( int number, long style, wxWindowID id,
+    const wxString& name );
+  virtual wxStatusBar *GetStatusBar() const;
   virtual void SetStatusText( const wxString &text, int number = 0 );
-  virtual void SetStatusWidths( int n, int *width );
+  virtual void SetStatusWidths( int n, const int widths_field[] );
 
   virtual wxToolBar* CreateToolBar( long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, 
                                     const wxString& name = wxToolBarNameStr);
-  virtual wxToolBar *GetToolBar();
+  virtual wxToolBar *OnCreateToolBar( long style, wxWindowID id, const wxString& name );
+  virtual wxToolBar *GetToolBar(void) const;
   
   virtual void SetMenuBar( wxMenuBar *menuBar );
-  virtual wxMenuBar *GetMenuBar();
+  virtual wxMenuBar *GetMenuBar() const;
 
   virtual void SetTitle( const wxString &title );
   virtual wxString GetTitle() const { return m_title; }
index 26e0c6a3401f83478fbd82ef0c8c8bc31e4f06c2..8d36786733ed1ec9331b3d88a5c21dbf8e9c1826 100644 (file)
@@ -152,12 +152,8 @@ public:
 
   virtual bool IsShown() const;
 
-  // Raise the window to the top of the Z order
-  virtual void Raise(void) {};
-
-  // Lower the window to the bottom of the Z order
-  virtual void Lower(void) {};
-
+  virtual void Raise(void);
+  virtual void Lower(void);
 
   virtual bool IsRetained();
   virtual wxWindow *FindWindow( long id );
index cbc9cecf82de5aa086e01c8b1dee8102e459611e..a6fa25ad15ef454f5b4799a24cc5df7cc4c5edae 100644 (file)
@@ -123,31 +123,6 @@ bool MyApp::OnInit(void)
   return TRUE;
 }
 
-//----------------------------------------------------------------------
-// MyTextCtrl
-//----------------------------------------------------------------------
-
-class MyTextCtrl : public wxTextCtrl
-{
-public:
-  MyTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
-              const wxPoint &pos, const wxSize &size, int style );
-
-  void OnRightButton(wxCommandEvent&) { }
-
-DECLARE_EVENT_TABLE()
-};
-
-BEGIN_EVENT_TABLE(MyTextCtrl, wxTextCtrl)
-  EVT_RIGHT_DOWN(MyTextCtrl::OnRightButton)
-END_EVENT_TABLE()
-  
-MyTextCtrl::MyTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value,
-      const wxPoint &pos, const wxSize &size, int style ) :
-  wxTextCtrl( parent, id, value, pos, size, style )
-{
-}
-
 //----------------------------------------------------------------------
 // MyPanel
 //----------------------------------------------------------------------
index 033ec23f9d37896b4064fd8dfdd7a11fd2c37c3e..7eef8f450ed247011c4026d727efde345e2dcd5e 100644 (file)
@@ -20,6 +20,7 @@
 #include "wx/toolbar.h"
 #include "wx/statusbr.h"
 #include "wx/mdi.h"
+#include "wx/dcclient.h"
 #include "wx/gtk/win_gtk.h"
 
 const wxMENU_HEIGHT    = 28;
@@ -47,7 +48,7 @@ void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc,
 */
 
   win->GtkOnSize( alloc->x, alloc->y, alloc->width, alloc->height );
-};
+}
 
 //-----------------------------------------------------------------------------
 // delete
@@ -64,7 +65,7 @@ bool gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(
   win->Close();
 
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // configure
@@ -77,7 +78,7 @@ gint gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigur
   win->m_y = event->y;
   
   return FALSE;
-};
+}
 
 //-----------------------------------------------------------------------------
 
@@ -99,7 +100,7 @@ wxFrame::wxFrame()
   m_wxwindow = NULL;
   m_mainWindow = NULL;
   wxTopLevelWindows.Insert( this );
-};
+}
 
 wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
       const wxPoint &pos, const wxSize &size,
@@ -114,7 +115,7 @@ wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
   m_mainWindow = NULL;
   Create( parent, id, title, pos, size, style, name );
   wxTopLevelWindows.Insert( this );
-};
+}
 
 bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
       const wxPoint &pos, const wxSize &size,
@@ -164,7 +165,7 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
   gtk_widget_realize( m_mainWindow );
 
   return TRUE;
-};
+}
 
 wxFrame::~wxFrame()
 {
@@ -175,7 +176,7 @@ wxFrame::~wxFrame()
 
   wxTopLevelWindows.DeleteObject( this );
   if (wxTopLevelWindows.Number() == 0) wxTheApp->ExitMainLoop();
-};
+}
 
 bool wxFrame::Show( bool show )
 {
@@ -184,15 +185,15 @@ bool wxFrame::Show( bool show )
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
     m_sizeSet = FALSE;
     ProcessEvent( event );
-  };
+  }
   return wxWindow::Show( show );
-};
+}
 
 void wxFrame::Enable( bool enable )
 {
   wxWindow::Enable( enable );
   gtk_widget_set_sensitive( m_mainWindow, enable );
-};
+}
 
 void wxFrame::OnCloseWindow( wxCloseEvent &event )
 {
@@ -200,7 +201,7 @@ void wxFrame::OnCloseWindow( wxCloseEvent &event )
     {
         this->Destroy();
     }
-};
+}
 
 bool wxFrame::Destroy()
 {
@@ -223,8 +224,8 @@ void wxFrame::GetClientSize( int *width, int *height ) const
       m_frameToolBar->GetSize( NULL, &y );
       (*height) -= y;
     }
-  };
-};
+  }
+}
 
 void wxFrame::SetClientSize( int const width, int const height )
 {
@@ -238,7 +239,7 @@ void wxFrame::SetClientSize( int const width, int const height )
     h += y;
   }
   wxWindow::SetClientSize( width, h );
-};
+}
 
 void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height )
 {
@@ -277,7 +278,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
   {
     main_y = wxMENU_HEIGHT;
     main_height -= wxMENU_HEIGHT;
-  };
+  }
 
   int toolbar_height = 0;
   if (m_frameToolBar) m_frameToolBar->GetSize( NULL, &toolbar_height );
@@ -292,25 +293,25 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
   {
     gtk_myfixed_move( GTK_MYFIXED(m_mainWindow), m_frameMenuBar->m_widget, 1, 1 );
     gtk_widget_set_usize( m_frameMenuBar->m_widget, width-2, wxMENU_HEIGHT-2 );
-  };
+  }
 
   if (m_frameToolBar)
   {
     gtk_myfixed_move( GTK_MYFIXED(m_mainWindow), m_frameToolBar->m_widget, 1, wxMENU_HEIGHT );
     gtk_widget_set_usize( m_frameToolBar->m_widget, width-2, toolbar_height );
-  };
+  }
   
   if (m_frameStatusBar)
   {
     m_frameStatusBar->SetSize( 0, main_height-wxSTATUS_HEIGHT, width, wxSTATUS_HEIGHT );
-  };
+  }
 
   m_sizeSet = TRUE;
 
   wxSizeEvent event( wxSize(m_width,m_height), GetId() );
   event.SetEventObject( this );
   ProcessEvent( event );
-};
+}
 
 void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
@@ -338,15 +339,15 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
           return;
 
         child = win;
-      };
-    };
+      }
+    }
 
     // yes: set it's size to fill all the frame
     int client_x, client_y;
     GetClientSize(&client_x, &client_y);
     child->SetSize( 1, 1, client_x-2, client_y);
   }
-};
+}
 
 void wxFrame::AddChild( wxWindow *child )
 {
@@ -379,7 +380,7 @@ void wxFrame::AddChild( wxWindow *child )
       
     gtk_widget_set_usize( child->m_widget, child->m_width, child->m_height );
   }    
-};
+}
 
 static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 {
@@ -391,8 +392,8 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
     if (menuitem->IsSubMenu())
       SetInvokingWindow( menuitem->GetSubMenu(), win );
     node = node->Next();
-  };
-};
+  }
+}
 
 void wxFrame::SetMenuBar( wxMenuBar *menuBar )
 {
@@ -406,7 +407,7 @@ void wxFrame::SetMenuBar( wxMenuBar *menuBar )
       wxMenu *menu = (wxMenu*)node->Data();
       SetInvokingWindow( menu, this );
       node = node->Next();
-    };
+    }
     
     if (m_frameMenuBar->m_parent != this)
     {
@@ -415,61 +416,89 @@ void wxFrame::SetMenuBar( wxMenuBar *menuBar )
         m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
     }
   }
-};
+}
 
-wxMenuBar *wxFrame::GetMenuBar(void)
+wxMenuBar *wxFrame::GetMenuBar(void) const
 {
   return m_frameMenuBar;
-};
+}
 
-wxToolBar *wxFrame::CreateToolBar( long style , wxWindowID id, const wxString& name )
+wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
+  wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
+
   m_addPrivateChild = TRUE;
-  
-  m_frameToolBar = new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
-  
+  m_frameToolBar = OnCreateToolBar( style, id, name );
   m_addPrivateChild = FALSE;
   
   return m_frameToolBar;
-};
+}
 
-wxToolBar *wxFrame::GetToolBar(void)
+wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name )
 {
-  return m_frameToolBar;
-};
+  return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
+}
+
+wxToolBar *wxFrame::GetToolBar(void) const 
+{ 
+  return m_frameToolBar; 
+}
 
 wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
 {
-  if (m_frameStatusBar)
-  delete m_frameStatusBar;
-
-  m_frameStatusBar = new wxStatusBar( this, id, wxPoint(0,0), wxSize(100,20), style, name );
+  wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
 
-  m_frameStatusBar->SetFieldsCount( number );
+  m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
   
   return m_frameStatusBar;
-};
+}
+
+wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
+{
+  wxStatusBar *statusBar = NULL;
+    
+  statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name);
+    
+  // Set the height according to the font and the border size
+  wxClientDC dc(statusBar);
+  dc.SetFont( *statusBar->GetFont() );
+
+  long x, y;
+  dc.GetTextExtent( "X", &x, &y );
+
+  int height = (int)( (y  * 1.1) + 2* statusBar->GetBorderY());
+
+  statusBar->SetSize( -1, -1, 100, height );
+
+  statusBar->SetFieldsCount( number );
+  return statusBar;
+}
 
-void wxFrame::SetStatusText( const wxString &text, int number )
+void wxFrame::SetStatusText(const wxString& text, int number)
 {
-  if (m_frameStatusBar) m_frameStatusBar->SetStatusText( text, number );
-};
+  wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
 
-void wxFrame::SetStatusWidths( int n, int *width )
+  m_frameStatusBar->SetStatusText(text, number);
+}
+
+void wxFrame::SetStatusWidths(int n, const int widths_field[] )
 {
-  if (m_frameStatusBar) m_frameStatusBar->SetStatusWidths( n, width );
-};
+  wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
+
+  m_frameStatusBar->SetStatusWidths(n, widths_field);
+}
 
-wxStatusBar *wxFrame::GetStatusBar(void)
+wxStatusBar *wxFrame::GetStatusBar(void) const
 {
   return m_frameStatusBar;
-};
+}
 
 void wxFrame::SetTitle( const wxString &title )
 {
   m_title = title;
+  if (m_title.IsNull()) m_title = "";
   gtk_window_set_title( GTK_WINDOW(m_widget), title );
-};
+}
 
 void wxFrame::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW) )
 {
index 382d1e089b86e8bc05879fcdb96c97cb59e522af..a59b3b29f97129ec975d61b7c123cab0ec645b6c 100644 (file)
@@ -82,7 +82,7 @@ void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gd
   win->ProcessEvent( event );
   
   win->m_updateRegion.Clear();
-};
+}
 
 //-----------------------------------------------------------------------------
 // draw (of m_wxwindow, not of m_widget)
@@ -114,7 +114,7 @@ void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect,
   win->ProcessEvent( event );
   
   win->m_updateRegion.Clear();
-};
+}
 
 //-----------------------------------------------------------------------------
 // size 
@@ -136,7 +136,7 @@ void gtk_window_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc
       (win->m_height == alloc->height))
   {
     return;
-  };
+  }
   
   printf( "OnResize from " );
   if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
@@ -154,7 +154,7 @@ void gtk_window_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc
   wxSizeEvent event( wxSize( alloc->width, alloc->height), win->GetId() );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 */
 
 //-----------------------------------------------------------------------------
@@ -247,8 +247,8 @@ gint gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget), GdkEventKey *gd
     {
       if ((gdk_event->keyval >= 0x20) && (gdk_event->keyval <= 0xFF)) 
         key_code = gdk_event->keyval;
-    };
-  };
+    }
+  }
 
   if (!key_code) return FALSE;
   
@@ -267,7 +267,7 @@ gint gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget), GdkEventKey *gd
   if (ret) printf( "found.\n") ;
 */
   return ret;
-};
+}
 
 //-----------------------------------------------------------------------------
 // button_press
@@ -290,8 +290,8 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       printf( ".\n" );
 */
       
-    };
-  };
+    }
+  }
     
   if (!win->HasVMT()) return TRUE;
     
@@ -311,7 +311,7 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       case GDK_BUTTON_PRESS: event_type = wxEVT_LEFT_DOWN; break;
       case GDK_2BUTTON_PRESS: event_type = wxEVT_LEFT_DCLICK; break;
       default:  break;
-    };
+    }
   }
   else if (gdk_event->button == 2)
   {
@@ -320,7 +320,7 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       case GDK_BUTTON_PRESS: event_type = wxEVT_MIDDLE_DOWN; break;
       case GDK_2BUTTON_PRESS: event_type = wxEVT_MIDDLE_DCLICK; break;
       default:  break;
-    };
+    }
   }
   else if (gdk_event->button == 3)
   {
@@ -329,8 +329,8 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       case GDK_BUTTON_PRESS: event_type = wxEVT_RIGHT_DOWN; break;
       case GDK_2BUTTON_PRESS: event_type = wxEVT_RIGHT_DCLICK; break;
       default:  break;
-    };
-  };
+    }
+  }
   
   wxMouseEvent event( event_type );
   event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
@@ -348,7 +348,7 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // button_release
@@ -375,7 +375,7 @@ gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_
     case 1: event_type = wxEVT_LEFT_UP; break;
     case 2: event_type = wxEVT_MIDDLE_UP; break;
     case 3: event_type = wxEVT_RIGHT_UP; break;
-  };
+  }
 
   wxMouseEvent event( event_type );
   event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
@@ -392,7 +392,7 @@ gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // motion_notify
@@ -428,7 +428,7 @@ gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_e
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // focus_in
@@ -447,8 +447,8 @@ gint gtk_window_focus_in_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUS
         printf( win->GetClassInfo()->GetClassName() );
       printf( ".\n" );
 */
-    };
-  };
+    }
+  }
   
   if (!win->HasVMT()) return TRUE;
   
@@ -466,7 +466,7 @@ gint gtk_window_focus_in_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUS
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // focus out
@@ -478,7 +478,7 @@ gint gtk_window_focus_out_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNU
   {
     if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow))
       GTK_WIDGET_UNSET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS);
-  };
+  }
   
   if (!win->HasVMT()) return TRUE;
   
@@ -494,7 +494,7 @@ gint gtk_window_focus_out_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNU
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // vertical scroll
@@ -538,7 +538,7 @@ void gtk_window_vscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
   wxScrollEvent event( command, win->GetId(), value, wxVERTICAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // horizontal scroll
@@ -582,7 +582,7 @@ void gtk_window_hscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
   wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // vertical scroll change
@@ -606,7 +606,7 @@ void gtk_window_vscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *
   wxScrollEvent event( command, win->GetId(), value, wxVERTICAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // horizontal scroll change
@@ -630,7 +630,7 @@ void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *
   wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // drop
@@ -645,7 +645,7 @@ void gtk_window_drop_callback( GtkWidget *widget, GdkEvent *event, wxWindow *win
     int y = 0;
     gdk_window_get_pointer( widget->window, &x, &y, NULL );
     win->GetDropTarget()->Drop( event, x, y );
-  };
+  }
   
 /*
   g_free (event->dropdataavailable.data);
@@ -666,7 +666,7 @@ bool gtk_window_destroy_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSE
   printf( "     Robert Roebling.\n" );
   
   return FALSE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // enter
@@ -683,7 +683,7 @@ bool gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_event,
   wxMouseEvent event( wxEVT_ENTER_WINDOW );
   event.SetEventObject( win );
   return win->ProcessEvent( event );
-};
+}
     
 //-----------------------------------------------------------------------------
 // leave
@@ -700,7 +700,7 @@ bool gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_event,
   wxMouseEvent event( wxEVT_LEAVE_WINDOW );
   event.SetEventObject( win );
   return win->ProcessEvent( event );
-};
+}
     
 //-----------------------------------------------------------------------------
 // wxWindow implementation
@@ -752,7 +752,7 @@ wxWindow::wxWindow()
   m_drawingOffsetY = 0;
   m_pDropTarget = NULL;
   m_resizing = FALSE;
-};
+}
 
 wxWindow::wxWindow( wxWindow *parent, wxWindowID id,
       const wxPoint &pos, const wxSize &size,
@@ -760,7 +760,7 @@ wxWindow::wxWindow( wxWindow *parent, wxWindowID id,
 {
   m_cursor = NULL;
   Create( parent, id, pos, size, style, name );
-};
+}
 
 bool wxWindow::Create( wxWindow *parent, wxWindowID id,
       const wxPoint &pos, const wxSize &size,
@@ -813,7 +813,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
   else
   {
     gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE );
-  };
+  }
     
   m_wxwindow = gtk_myfixed_new();
   
@@ -853,7 +853,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
   Show( TRUE );
 
   return TRUE;  
-};
+}
 
 wxWindow::~wxWindow(void)
 {
@@ -900,7 +900,7 @@ wxWindow::~wxWindow(void)
   // class
   wxTopLevelWindows.DeleteObject(this);
     
-};
+}
 
 void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
       const wxPoint &pos, const wxSize &size,
@@ -960,7 +960,7 @@ void wxWindow::PostCreation(void)
       
     gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw", 
       GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
-  };
+  }
   
 /*
   gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", 
@@ -1000,7 +1000,7 @@ void wxWindow::PostCreation(void)
       
     gtk_signal_connect( GTK_OBJECT(m_wxwindow), "leave_notify_event", 
       GTK_SIGNAL_FUNC(gtk_window_leave_callback), (gpointer)this );
-  };
+  }
   
 /*
   // Does destroy ever get called ?
@@ -1012,7 +1012,7 @@ void wxWindow::PostCreation(void)
   {
     gtk_signal_connect( GTK_OBJECT(m_wxwindow), "destroy_event", 
       GTK_SIGNAL_FUNC(gtk_window_destroy_callback), (gpointer)this );
-  };
+  }
 */
   
   if (m_widget && m_parent) gtk_widget_realize( m_widget );
@@ -1021,12 +1021,12 @@ void wxWindow::PostCreation(void)
   SetCursor( wxSTANDARD_CURSOR );
   
   m_hasVMT = TRUE;
-};
+}
 
 bool wxWindow::HasVMT(void)
 {
   return m_hasVMT;
-};
+}
 
 bool wxWindow::Close( bool force )
 {
@@ -1035,14 +1035,14 @@ bool wxWindow::Close( bool force )
   event.SetForce(force);
 
   return GetEventHandler()->ProcessEvent(event);
-};
+}
 
 bool wxWindow::Destroy(void)
 {
   m_hasVMT = FALSE;
   delete this;
   return TRUE;
-};
+}
 
 bool wxWindow::DestroyChildren(void)
 {
@@ -1056,21 +1056,21 @@ bool wxWindow::DestroyChildren(void)
       {
         delete child;
   if (GetChildren()->Member(child)) delete node;
-      };
-    };
-  };
+      }
+    }
+  }
   return TRUE;
-};
+}
 
 void wxWindow::PrepareDC( wxDC &WXUNUSED(dc) )
 {
   // are we to set fonts here ?
-};
+}
 
 void wxWindow::ImplementSetSize(void)
 { 
   gtk_widget_set_usize( m_widget, m_width, m_height );
-};
+}
 
 void wxWindow::ImplementSetPosition(void)
 {
@@ -1091,7 +1091,7 @@ void wxWindow::ImplementSetPosition(void)
     gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x, m_y );
     
   // Don't do anything for children of wxNotebook and wxMDIChildFrame   
-};
+}
 
 void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
 {
@@ -1109,30 +1109,30 @@ void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
     if (newY == -1) newY = m_y;
     if (newW == -1) newW = m_width;
     if (newH == -1) newH = m_height;
-  };
+  }
   
   if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
   {
     if (newW == -1) newW = 80;
-  };
+  }
   
   if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT)
   {
     if (newH == -1) newH = 26;
-  };
+  }
   
   if ((m_x != newX) || (m_y != newY) || (!m_sizeSet))
   {
     m_x = newX;
     m_y = newY;
     ImplementSetPosition();
-  };
+  }
   if ((m_width != newW) || (m_height != newH) || (!m_sizeSet))
   {
     m_width = newW;
     m_height = newH;
     ImplementSetSize();
-  };
+  }
   m_sizeSet = TRUE;
   
   wxSizeEvent event( wxSize(m_width,m_height), GetId() );
@@ -1140,23 +1140,23 @@ void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
   ProcessEvent( event );
   
   m_resizing = FALSE;
-};
+}
 
 void wxWindow::SetSize( int width, int height )
 {
   SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING );
-};
+}
 
 void wxWindow::Move( int x, int y )
 {
   SetSize( x, y, -1, -1, wxSIZE_USE_EXISTING );
-};
+}
 
 void wxWindow::GetSize( int *width, int *height ) const
 {
   if (width) (*width) = m_width;
   if (height) (*height) = m_height;
-};
+}
 
 void wxWindow::SetClientSize( int width, int height )
 {
@@ -1197,24 +1197,24 @@ void wxWindow::SetClientSize( int width, int height )
       {
         dw += 2 * viewport_class->xthickness;
         dh += 2 * viewport_class->ythickness;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(vscrollbar))
       {
         dw += vscrollbar->allocation.width;
         dw += scroll_class->scrollbar_spacing;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(hscrollbar))
       {
         dh += hscrollbar->allocation.height;
         dw += scroll_class->scrollbar_spacing;
-      };
-    };
+      }
+    }
     
     SetSize( width+dw, height+dh );
-  };
-};
+  }
+}
 
 void wxWindow::GetClientSize( int *width, int *height ) const
 {
@@ -1256,33 +1256,33 @@ void wxWindow::GetClientSize( int *width, int *height ) const
       {
         dw += 2 * viewport_class->xthickness;
         dh += 2 * viewport_class->ythickness;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(vscrollbar))
       {
 //        dw += vscrollbar->allocation.width;
         dw += 15;                               // range.slider_width = 11 + 2*2pts edge
         dw += scroll_class->scrollbar_spacing;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(hscrollbar))
       {
 //        dh += hscrollbar->allocation.height;
         dh += 15;
         dh += scroll_class->scrollbar_spacing;
-      };
-    };
+      }
+    }
     
     if (width) (*width) = m_width - dw;
     if (height) (*height) = m_height - dh;
-  };
-};
+  }
+}
 
 void wxWindow::GetPosition( int *x, int *y ) const
 {
   if (x) (*x) = m_x;
   if (y) (*y) = m_y;
-};
+}
 
 void wxWindow::ClientToScreen( int *x, int *y )
 {
@@ -1304,12 +1304,12 @@ void wxWindow::ClientToScreen( int *x, int *y )
     {
       org_x += m_widget->allocation.x;
       org_y += m_widget->allocation.y;
-    };
-  };
+    }
+  }
   
   if (x) *x += org_x;  
   if (y) *y += org_y;  
-};
+}
 
 void wxWindow::ScreenToClient( int *x, int *y )
 {
@@ -1329,12 +1329,12 @@ void wxWindow::ScreenToClient( int *x, int *y )
     {
       org_x += m_widget->allocation.x;
       org_y += m_widget->allocation.y;
-    };
-  };
+    }
+  }
   
   if (x) *x -= org_x;  
   if (y) *y -= org_y;  
-};
+}
 
 void wxWindow::Centre( int direction )
 {
@@ -1354,9 +1354,9 @@ void wxWindow::Centre( int direction )
       if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (p_w - m_width) / 2;
       if (direction & wxVERTICAL == wxVERTICAL) m_y = (p_h - m_height) / 2;
       ImplementSetPosition();
-    };
+    }
   }
-};
+}
 
 void wxWindow::Fit(void)
 {
@@ -1377,12 +1377,12 @@ void wxWindow::Fit(void)
     node = node->Next();
   }
   SetClientSize(maxX + 5, maxY + 10);
-};
+}
 
 void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
   //if (GetAutoLayout()) Layout();
-};
+}
 
 bool wxWindow::Show( bool show )
 {
@@ -1392,14 +1392,14 @@ bool wxWindow::Show( bool show )
     gtk_widget_hide( m_widget );
   m_isShown = show;  
   return TRUE;
-};
+}
 
 void wxWindow::Enable( bool enable )
 {
   m_isEnabled = enable;
   gtk_widget_set_sensitive( m_widget, enable );
   if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
-};
+}
 
 void wxWindow::MakeModal( bool modal )
 {
@@ -1427,14 +1427,14 @@ void wxWindow::SetFocus(void)
     if (GTK_WIDGET_CAN_FOCUS(connect_widget) && !GTK_WIDGET_HAS_FOCUS (connect_widget) )
     {
       gtk_widget_grab_focus (connect_widget);
-    };
-  };
-};
+    }
+  }
+}
 
 bool wxWindow::OnClose(void)
 {
   return TRUE;
-};
+}
 
 void wxWindow::AddChild( wxWindow *child )
 {
@@ -1500,69 +1500,79 @@ void wxWindow::AddChild( wxWindow *child )
     child->m_x, child->m_y );
   
   gtk_widget_set_usize( child->m_widget, child->m_width, child->m_height );
-};
+}
 
 wxList *wxWindow::GetChildren(void)
 {
   return (&m_children);
-};
+}
 
 void wxWindow::RemoveChild( wxWindow *child )
 {
   if (GetChildren())
  GetChildren()->DeleteObject( child );
   child->m_parent = NULL;
-};
+}
 
 void wxWindow::SetReturnCode( int retCode )
 {
   m_retCode = retCode;
-};
+}
 
 int wxWindow::GetReturnCode(void)
 {
   return m_retCode;
-};
+}
 
 wxWindow *wxWindow::GetParent(void)
 {
   return m_parent;
-};
+}
+
+void wxWindow::Raise(void)
+{
+  if (m_widget) gdk_window_raise( m_widget->window );
+}
+
+void wxWindow::Lower(void)
+{
+  if (m_widget) gdk_window_lower( m_widget->window );
+}
 
 wxEvtHandler *wxWindow::GetEventHandler(void)
 {
   return m_eventHandler;
-};
+}
 
 void wxWindow::SetEventhandler( wxEvtHandler *handler )
 {
   m_eventHandler = handler;
-};
+}
 
 wxValidator *wxWindow::GetValidator(void)
 {
   return m_windowValidator;
-};
+}
 
 void wxWindow::SetValidator( wxValidator *validator )
 {
   m_windowValidator = validator;
-};
+}
 
 bool wxWindow::IsBeingDeleted(void)
 {
   return FALSE;
-};
+}
 
 void wxWindow::SetId( wxWindowID id )
 {
   m_windowId = id;
-};
+}
 
 wxWindowID wxWindow::GetId(void)
 {
   return m_windowId;
-};
+}
 
 void wxWindow::SetCursor( const wxCursor &cursor )
 {
@@ -1576,7 +1586,7 @@ void wxWindow::SetCursor( const wxCursor &cursor )
     gdk_window_set_cursor( m_widget->window, m_cursor->GetCursor() );
   if (m_wxwindow && m_wxwindow->window)
     gdk_window_set_cursor( m_wxwindow->window, m_cursor->GetCursor() );
-};
+}
 
 void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
 {
@@ -1590,7 +1600,7 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
         rect->height );
     else
       Clear(); 
-  };
+  }
   if (!rect)
   {
     if (m_wxwindow)
@@ -1611,7 +1621,7 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
       gdk_rect.width = w;
       gdk_rect.height = h;
       gtk_widget_draw( m_wxwindow, &gdk_rect );
-    };
+    }
   }
   else
   {
@@ -1625,28 +1635,28 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
       gtk_widget_draw( m_wxwindow, &gdk_rect );
     else
       gtk_widget_draw( m_widget, &gdk_rect );
-  };
-};
+  }
+}
 
 bool wxWindow::IsExposed( long x, long y )
 {
   return (m_updateRegion.Contains( x, y ) != wxOutRegion );
-};
+}
 
 bool wxWindow::IsExposed( long x, long y, long width, long height )
 {
   return (m_updateRegion.Contains( x, y, width, height ) != wxOutRegion );
-};
+}
 
 void wxWindow::Clear(void)
 {
   if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window );
-};
+}
 
 wxColour wxWindow::GetBackgroundColour(void) const
 {
   return m_backgroundColour;
-};
+}
 
 void wxWindow::SetBackgroundColour( const wxColour &colour )
 {
@@ -1656,9 +1666,9 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
     m_backgroundColour.CalcPixel( m_wxwindow->style->colormap );
     gdk_window_set_background( m_wxwindow->window, m_backgroundColour.GetColor() );
     gdk_window_clear( m_wxwindow->window );
-  };
+  }
   // do something ?
-};
+}
 
 bool wxWindow::Validate(void)
 {
@@ -1669,9 +1679,9 @@ bool wxWindow::Validate(void)
     if (child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this)) 
       { return FALSE; }
     node = node->Next();
-  };
+  }
   return TRUE;
-};
+}
 
 bool wxWindow::TransferDataToWindow(void)
 {
@@ -1684,11 +1694,11 @@ bool wxWindow::TransferDataToWindow(void)
     {
       wxMessageBox( _("Application Error"), _("Could not transfer data to window"), wxOK|wxICON_EXCLAMATION );
       return FALSE;
-    };
+    }
     node = node->Next();
-  };
+  }
   return TRUE;
-};
+}
 
 bool wxWindow::TransferDataFromWindow(void)
 {
@@ -1701,19 +1711,19 @@ bool wxWindow::TransferDataFromWindow(void)
    node = node->Next();
   }
   return TRUE;
-};
+}
 
 void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) )
 {
   TransferDataToWindow();
-};
+}
 
 void wxWindow::InitDialog(void)
 {
   wxInitDialogEvent event(GetId());
   event.SetEventObject( this );
   GetEventHandler()->ProcessEvent(event);
-};
+}
 
 static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 {
@@ -1725,8 +1735,8 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
     if (menuitem->IsSubMenu())
       SetInvokingWindow( menuitem->GetSubMenu(), win );
     node = node->Next();
-  };
-};
+  }
+}
 
 bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 {
@@ -1746,7 +1756,7 @@ void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
   
     m_pDropTarget->UnregisterWidget( dnd_widget );
     delete m_pDropTarget;
-  };
+  }
   m_pDropTarget = dropTarget;
   if (m_pDropTarget)
   {
@@ -1754,13 +1764,13 @@ void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
     
     gtk_signal_connect( GTK_OBJECT(dnd_widget), "drop_data_available_event",
       GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this );
-  };
-};
+  }
+}
 
 wxDropTarget *wxWindow::GetDropTarget() const
 {
   return m_pDropTarget;
-};
+}
 
 GtkWidget* wxWindow::GetConnectWidget(void)
 {
@@ -1782,22 +1792,22 @@ void wxWindow::SetFont( const wxFont &font )
   GtkStyle *style = gtk_style_new();
   ...
 */
-};
+}
 
 wxFont *wxWindow::GetFont(void)
 {
   return &m_font;
-};
+}
 
 void wxWindow::SetWindowStyleFlag( long flag )
 {
   m_windowStyle = flag;
-};
+}
 
 long wxWindow::GetWindowStyleFlag(void) const
 {
   return m_windowStyle;
-};
+}
 
 void wxWindow::CaptureMouse(void)
 {
@@ -1809,48 +1819,48 @@ void wxWindow::CaptureMouse(void)
         GDK_BUTTON_RELEASE_MASK |
         GDK_POINTER_MOTION_MASK), 
         NULL, NULL, GDK_CURRENT_TIME );
-};
+}
 
 void wxWindow::ReleaseMouse(void)
 {
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
-};
+}
 
 void wxWindow::SetTitle( const wxString &WXUNUSED(title) )
 {
-};
+}
 
 wxString wxWindow::GetTitle(void) const
 {
   return (wxString&)m_windowName;
-};
+}
 
 wxString wxWindow::GetLabel(void) const
 {
   return GetTitle();
-};
+}
 
 void wxWindow::SetName( const wxString &name )
 {
   m_windowName = name;
-};
+}
 
 wxString wxWindow::GetName(void) const
 {
   return (wxString&)m_windowName;
-};
+}
 
 bool wxWindow::IsShown(void) const
 {
   return m_isShown;
-};
+}
 
 bool wxWindow::IsRetained(void)
 {
   return FALSE;
-};
+}
 
 wxWindow *wxWindow::FindWindow( long id )
 {
@@ -1862,9 +1872,9 @@ wxWindow *wxWindow::FindWindow( long id )
     wxWindow *res = child->FindWindow( id );
     if (res) return res;
     node = node->Next();
-  };
+  }
   return NULL;
-};
+}
 
 wxWindow *wxWindow::FindWindow( const wxString& name )
 {
@@ -1876,9 +1886,9 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
     wxWindow *res = child->FindWindow( name );
     if (res) return res;
     node = node->Next();
-  };
+  }
   return NULL;
-};
+}
 
 void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
       int range, bool WXUNUSED(refresh) )
@@ -1922,7 +1932,7 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
     m_vAdjust->step_increment = 1.0;
     m_vAdjust->page_increment = (float)(wxMax(fthumb-2,0));
     m_vAdjust->page_size = fthumb;
-  };
+  }
   
   if (m_wxwindow->window)
   {
@@ -1946,8 +1956,8 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
     }
       
     gtk_widget_set_usize( m_widget, m_width, m_height );
-  };
-};
+  }
+}
 
 void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 {
@@ -1967,7 +1977,7 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
     m_oldVerticalPos = fpos;
     if (fabs(fpos-m_vAdjust->value) < 0.2) return;
     m_vAdjust->value = fpos;
-  };
+  }
   
   if (m_wxwindow->window)
   {  
@@ -1975,8 +1985,8 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
       gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
     else  
       gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
-  };
-};
+  }
+}
 
 int wxWindow::GetScrollThumb( int orient ) const
 {
@@ -1986,7 +1996,7 @@ int wxWindow::GetScrollThumb( int orient ) const
     return (int)(m_hAdjust->page_size+0.5);
   else
     return (int)(m_vAdjust->page_size+0.5);
-};
+}
 
 int wxWindow::GetScrollPos( int orient ) const
 {
@@ -1996,7 +2006,7 @@ int wxWindow::GetScrollPos( int orient ) const
     return (int)(m_hAdjust->value+0.5);
   else
     return (int)(m_vAdjust->value+0.5);
-};
+}
 
 int wxWindow::GetScrollRange( int orient ) const
 {
@@ -2006,7 +2016,7 @@ int wxWindow::GetScrollRange( int orient ) const
     return (int)(m_hAdjust->upper+0.5);
   else
     return (int)(m_vAdjust->upper+0.5);
-};
+}
 
 void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
 {
@@ -2046,7 +2056,7 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
     {
       Refresh();
       return;
-    };
+    }
     int s_x = 0;
     int s_y = 0;
     if (dx < 0) s_x = -dx;
@@ -2066,13 +2076,13 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
   
     Refresh( TRUE, &rect );
 */
-};
+}
 
 void wxWindow::GetDrawingOffset( long *x, long *y )
 {
   if (x) *x = m_drawingOffsetX;
   if (y) *y = m_drawingOffsetY;
-};
+}
 
 //-------------------------------------------------------------------------------------
 //          Layout
@@ -2081,7 +2091,7 @@ void wxWindow::GetDrawingOffset( long *x, long *y )
 wxLayoutConstraints *wxWindow::GetConstraints(void) const
 {
   return m_constraints;
-};
+}
 
 void wxWindow::SetConstraints( wxLayoutConstraints *constraints )
 {
@@ -2118,27 +2128,27 @@ void wxWindow::SetConstraints( wxLayoutConstraints *constraints )
 void wxWindow::SetAutoLayout( bool autoLayout )
 {
   m_autoLayout = autoLayout;
-};
+}
 
 bool wxWindow::GetAutoLayout(void) const
 {
   return m_autoLayout;
-};
+}
 
 wxSizer *wxWindow::GetSizer(void) const
 {
   return m_windowSizer;
-};
+}
 
 void wxWindow::SetSizerParent( wxWindow *win )
 {
   m_sizerParent = win;
-};
+}
 
 wxWindow *wxWindow::GetSizerParent(void) const
 {
   return m_sizerParent;
-};
+}
 
 // This removes any dangling pointers to this window
 // in other windows' constraintsInvolvedIn lists.
index 033ec23f9d37896b4064fd8dfdd7a11fd2c37c3e..7eef8f450ed247011c4026d727efde345e2dcd5e 100644 (file)
@@ -20,6 +20,7 @@
 #include "wx/toolbar.h"
 #include "wx/statusbr.h"
 #include "wx/mdi.h"
+#include "wx/dcclient.h"
 #include "wx/gtk/win_gtk.h"
 
 const wxMENU_HEIGHT    = 28;
@@ -47,7 +48,7 @@ void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc,
 */
 
   win->GtkOnSize( alloc->x, alloc->y, alloc->width, alloc->height );
-};
+}
 
 //-----------------------------------------------------------------------------
 // delete
@@ -64,7 +65,7 @@ bool gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(
   win->Close();
 
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // configure
@@ -77,7 +78,7 @@ gint gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigur
   win->m_y = event->y;
   
   return FALSE;
-};
+}
 
 //-----------------------------------------------------------------------------
 
@@ -99,7 +100,7 @@ wxFrame::wxFrame()
   m_wxwindow = NULL;
   m_mainWindow = NULL;
   wxTopLevelWindows.Insert( this );
-};
+}
 
 wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
       const wxPoint &pos, const wxSize &size,
@@ -114,7 +115,7 @@ wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
   m_mainWindow = NULL;
   Create( parent, id, title, pos, size, style, name );
   wxTopLevelWindows.Insert( this );
-};
+}
 
 bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
       const wxPoint &pos, const wxSize &size,
@@ -164,7 +165,7 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
   gtk_widget_realize( m_mainWindow );
 
   return TRUE;
-};
+}
 
 wxFrame::~wxFrame()
 {
@@ -175,7 +176,7 @@ wxFrame::~wxFrame()
 
   wxTopLevelWindows.DeleteObject( this );
   if (wxTopLevelWindows.Number() == 0) wxTheApp->ExitMainLoop();
-};
+}
 
 bool wxFrame::Show( bool show )
 {
@@ -184,15 +185,15 @@ bool wxFrame::Show( bool show )
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
     m_sizeSet = FALSE;
     ProcessEvent( event );
-  };
+  }
   return wxWindow::Show( show );
-};
+}
 
 void wxFrame::Enable( bool enable )
 {
   wxWindow::Enable( enable );
   gtk_widget_set_sensitive( m_mainWindow, enable );
-};
+}
 
 void wxFrame::OnCloseWindow( wxCloseEvent &event )
 {
@@ -200,7 +201,7 @@ void wxFrame::OnCloseWindow( wxCloseEvent &event )
     {
         this->Destroy();
     }
-};
+}
 
 bool wxFrame::Destroy()
 {
@@ -223,8 +224,8 @@ void wxFrame::GetClientSize( int *width, int *height ) const
       m_frameToolBar->GetSize( NULL, &y );
       (*height) -= y;
     }
-  };
-};
+  }
+}
 
 void wxFrame::SetClientSize( int const width, int const height )
 {
@@ -238,7 +239,7 @@ void wxFrame::SetClientSize( int const width, int const height )
     h += y;
   }
   wxWindow::SetClientSize( width, h );
-};
+}
 
 void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height )
 {
@@ -277,7 +278,7 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
   {
     main_y = wxMENU_HEIGHT;
     main_height -= wxMENU_HEIGHT;
-  };
+  }
 
   int toolbar_height = 0;
   if (m_frameToolBar) m_frameToolBar->GetSize( NULL, &toolbar_height );
@@ -292,25 +293,25 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
   {
     gtk_myfixed_move( GTK_MYFIXED(m_mainWindow), m_frameMenuBar->m_widget, 1, 1 );
     gtk_widget_set_usize( m_frameMenuBar->m_widget, width-2, wxMENU_HEIGHT-2 );
-  };
+  }
 
   if (m_frameToolBar)
   {
     gtk_myfixed_move( GTK_MYFIXED(m_mainWindow), m_frameToolBar->m_widget, 1, wxMENU_HEIGHT );
     gtk_widget_set_usize( m_frameToolBar->m_widget, width-2, toolbar_height );
-  };
+  }
   
   if (m_frameStatusBar)
   {
     m_frameStatusBar->SetSize( 0, main_height-wxSTATUS_HEIGHT, width, wxSTATUS_HEIGHT );
-  };
+  }
 
   m_sizeSet = TRUE;
 
   wxSizeEvent event( wxSize(m_width,m_height), GetId() );
   event.SetEventObject( this );
   ProcessEvent( event );
-};
+}
 
 void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
@@ -338,15 +339,15 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
           return;
 
         child = win;
-      };
-    };
+      }
+    }
 
     // yes: set it's size to fill all the frame
     int client_x, client_y;
     GetClientSize(&client_x, &client_y);
     child->SetSize( 1, 1, client_x-2, client_y);
   }
-};
+}
 
 void wxFrame::AddChild( wxWindow *child )
 {
@@ -379,7 +380,7 @@ void wxFrame::AddChild( wxWindow *child )
       
     gtk_widget_set_usize( child->m_widget, child->m_width, child->m_height );
   }    
-};
+}
 
 static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 {
@@ -391,8 +392,8 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
     if (menuitem->IsSubMenu())
       SetInvokingWindow( menuitem->GetSubMenu(), win );
     node = node->Next();
-  };
-};
+  }
+}
 
 void wxFrame::SetMenuBar( wxMenuBar *menuBar )
 {
@@ -406,7 +407,7 @@ void wxFrame::SetMenuBar( wxMenuBar *menuBar )
       wxMenu *menu = (wxMenu*)node->Data();
       SetInvokingWindow( menu, this );
       node = node->Next();
-    };
+    }
     
     if (m_frameMenuBar->m_parent != this)
     {
@@ -415,61 +416,89 @@ void wxFrame::SetMenuBar( wxMenuBar *menuBar )
         m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
     }
   }
-};
+}
 
-wxMenuBar *wxFrame::GetMenuBar(void)
+wxMenuBar *wxFrame::GetMenuBar(void) const
 {
   return m_frameMenuBar;
-};
+}
 
-wxToolBar *wxFrame::CreateToolBar( long style , wxWindowID id, const wxString& name )
+wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
+  wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
+
   m_addPrivateChild = TRUE;
-  
-  m_frameToolBar = new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
-  
+  m_frameToolBar = OnCreateToolBar( style, id, name );
   m_addPrivateChild = FALSE;
   
   return m_frameToolBar;
-};
+}
 
-wxToolBar *wxFrame::GetToolBar(void)
+wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name )
 {
-  return m_frameToolBar;
-};
+  return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
+}
+
+wxToolBar *wxFrame::GetToolBar(void) const 
+{ 
+  return m_frameToolBar; 
+}
 
 wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
 {
-  if (m_frameStatusBar)
-  delete m_frameStatusBar;
-
-  m_frameStatusBar = new wxStatusBar( this, id, wxPoint(0,0), wxSize(100,20), style, name );
+  wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
 
-  m_frameStatusBar->SetFieldsCount( number );
+  m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
   
   return m_frameStatusBar;
-};
+}
+
+wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
+{
+  wxStatusBar *statusBar = NULL;
+    
+  statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name);
+    
+  // Set the height according to the font and the border size
+  wxClientDC dc(statusBar);
+  dc.SetFont( *statusBar->GetFont() );
+
+  long x, y;
+  dc.GetTextExtent( "X", &x, &y );
+
+  int height = (int)( (y  * 1.1) + 2* statusBar->GetBorderY());
+
+  statusBar->SetSize( -1, -1, 100, height );
+
+  statusBar->SetFieldsCount( number );
+  return statusBar;
+}
 
-void wxFrame::SetStatusText( const wxString &text, int number )
+void wxFrame::SetStatusText(const wxString& text, int number)
 {
-  if (m_frameStatusBar) m_frameStatusBar->SetStatusText( text, number );
-};
+  wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
 
-void wxFrame::SetStatusWidths( int n, int *width )
+  m_frameStatusBar->SetStatusText(text, number);
+}
+
+void wxFrame::SetStatusWidths(int n, const int widths_field[] )
 {
-  if (m_frameStatusBar) m_frameStatusBar->SetStatusWidths( n, width );
-};
+  wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
+
+  m_frameStatusBar->SetStatusWidths(n, widths_field);
+}
 
-wxStatusBar *wxFrame::GetStatusBar(void)
+wxStatusBar *wxFrame::GetStatusBar(void) const
 {
   return m_frameStatusBar;
-};
+}
 
 void wxFrame::SetTitle( const wxString &title )
 {
   m_title = title;
+  if (m_title.IsNull()) m_title = "";
   gtk_window_set_title( GTK_WINDOW(m_widget), title );
-};
+}
 
 void wxFrame::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW) )
 {
index 382d1e089b86e8bc05879fcdb96c97cb59e522af..a59b3b29f97129ec975d61b7c123cab0ec645b6c 100644 (file)
@@ -82,7 +82,7 @@ void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gd
   win->ProcessEvent( event );
   
   win->m_updateRegion.Clear();
-};
+}
 
 //-----------------------------------------------------------------------------
 // draw (of m_wxwindow, not of m_widget)
@@ -114,7 +114,7 @@ void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect,
   win->ProcessEvent( event );
   
   win->m_updateRegion.Clear();
-};
+}
 
 //-----------------------------------------------------------------------------
 // size 
@@ -136,7 +136,7 @@ void gtk_window_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc
       (win->m_height == alloc->height))
   {
     return;
-  };
+  }
   
   printf( "OnResize from " );
   if (win->GetClassInfo() && win->GetClassInfo()->GetClassName())
@@ -154,7 +154,7 @@ void gtk_window_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc
   wxSizeEvent event( wxSize( alloc->width, alloc->height), win->GetId() );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 */
 
 //-----------------------------------------------------------------------------
@@ -247,8 +247,8 @@ gint gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget), GdkEventKey *gd
     {
       if ((gdk_event->keyval >= 0x20) && (gdk_event->keyval <= 0xFF)) 
         key_code = gdk_event->keyval;
-    };
-  };
+    }
+  }
 
   if (!key_code) return FALSE;
   
@@ -267,7 +267,7 @@ gint gtk_window_key_press_callback( GtkWidget *WXUNUSED(widget), GdkEventKey *gd
   if (ret) printf( "found.\n") ;
 */
   return ret;
-};
+}
 
 //-----------------------------------------------------------------------------
 // button_press
@@ -290,8 +290,8 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       printf( ".\n" );
 */
       
-    };
-  };
+    }
+  }
     
   if (!win->HasVMT()) return TRUE;
     
@@ -311,7 +311,7 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       case GDK_BUTTON_PRESS: event_type = wxEVT_LEFT_DOWN; break;
       case GDK_2BUTTON_PRESS: event_type = wxEVT_LEFT_DCLICK; break;
       default:  break;
-    };
+    }
   }
   else if (gdk_event->button == 2)
   {
@@ -320,7 +320,7 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       case GDK_BUTTON_PRESS: event_type = wxEVT_MIDDLE_DOWN; break;
       case GDK_2BUTTON_PRESS: event_type = wxEVT_MIDDLE_DCLICK; break;
       default:  break;
-    };
+    }
   }
   else if (gdk_event->button == 3)
   {
@@ -329,8 +329,8 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
       case GDK_BUTTON_PRESS: event_type = wxEVT_RIGHT_DOWN; break;
       case GDK_2BUTTON_PRESS: event_type = wxEVT_RIGHT_DCLICK; break;
       default:  break;
-    };
-  };
+    }
+  }
   
   wxMouseEvent event( event_type );
   event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
@@ -348,7 +348,7 @@ gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_ev
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // button_release
@@ -375,7 +375,7 @@ gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_
     case 1: event_type = wxEVT_LEFT_UP; break;
     case 2: event_type = wxEVT_MIDDLE_UP; break;
     case 3: event_type = wxEVT_RIGHT_UP; break;
-  };
+  }
 
   wxMouseEvent event( event_type );
   event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK);
@@ -392,7 +392,7 @@ gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // motion_notify
@@ -428,7 +428,7 @@ gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_e
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // focus_in
@@ -447,8 +447,8 @@ gint gtk_window_focus_in_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUS
         printf( win->GetClassInfo()->GetClassName() );
       printf( ".\n" );
 */
-    };
-  };
+    }
+  }
   
   if (!win->HasVMT()) return TRUE;
   
@@ -466,7 +466,7 @@ gint gtk_window_focus_in_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUS
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // focus out
@@ -478,7 +478,7 @@ gint gtk_window_focus_out_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNU
   {
     if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow))
       GTK_WIDGET_UNSET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS);
-  };
+  }
   
   if (!win->HasVMT()) return TRUE;
   
@@ -494,7 +494,7 @@ gint gtk_window_focus_out_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNU
   win->ProcessEvent( event );
   
   return TRUE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // vertical scroll
@@ -538,7 +538,7 @@ void gtk_window_vscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
   wxScrollEvent event( command, win->GetId(), value, wxVERTICAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // horizontal scroll
@@ -582,7 +582,7 @@ void gtk_window_hscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win )
   wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // vertical scroll change
@@ -606,7 +606,7 @@ void gtk_window_vscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *
   wxScrollEvent event( command, win->GetId(), value, wxVERTICAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // horizontal scroll change
@@ -630,7 +630,7 @@ void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *
   wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL );
   event.SetEventObject( win );
   win->ProcessEvent( event );
-};
+}
 
 //-----------------------------------------------------------------------------
 // drop
@@ -645,7 +645,7 @@ void gtk_window_drop_callback( GtkWidget *widget, GdkEvent *event, wxWindow *win
     int y = 0;
     gdk_window_get_pointer( widget->window, &x, &y, NULL );
     win->GetDropTarget()->Drop( event, x, y );
-  };
+  }
   
 /*
   g_free (event->dropdataavailable.data);
@@ -666,7 +666,7 @@ bool gtk_window_destroy_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSE
   printf( "     Robert Roebling.\n" );
   
   return FALSE;
-};
+}
 
 //-----------------------------------------------------------------------------
 // enter
@@ -683,7 +683,7 @@ bool gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_event,
   wxMouseEvent event( wxEVT_ENTER_WINDOW );
   event.SetEventObject( win );
   return win->ProcessEvent( event );
-};
+}
     
 //-----------------------------------------------------------------------------
 // leave
@@ -700,7 +700,7 @@ bool gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_event,
   wxMouseEvent event( wxEVT_LEAVE_WINDOW );
   event.SetEventObject( win );
   return win->ProcessEvent( event );
-};
+}
     
 //-----------------------------------------------------------------------------
 // wxWindow implementation
@@ -752,7 +752,7 @@ wxWindow::wxWindow()
   m_drawingOffsetY = 0;
   m_pDropTarget = NULL;
   m_resizing = FALSE;
-};
+}
 
 wxWindow::wxWindow( wxWindow *parent, wxWindowID id,
       const wxPoint &pos, const wxSize &size,
@@ -760,7 +760,7 @@ wxWindow::wxWindow( wxWindow *parent, wxWindowID id,
 {
   m_cursor = NULL;
   Create( parent, id, pos, size, style, name );
-};
+}
 
 bool wxWindow::Create( wxWindow *parent, wxWindowID id,
       const wxPoint &pos, const wxSize &size,
@@ -813,7 +813,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
   else
   {
     gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE );
-  };
+  }
     
   m_wxwindow = gtk_myfixed_new();
   
@@ -853,7 +853,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
   Show( TRUE );
 
   return TRUE;  
-};
+}
 
 wxWindow::~wxWindow(void)
 {
@@ -900,7 +900,7 @@ wxWindow::~wxWindow(void)
   // class
   wxTopLevelWindows.DeleteObject(this);
     
-};
+}
 
 void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
       const wxPoint &pos, const wxSize &size,
@@ -960,7 +960,7 @@ void wxWindow::PostCreation(void)
       
     gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw", 
       GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
-  };
+  }
   
 /*
   gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", 
@@ -1000,7 +1000,7 @@ void wxWindow::PostCreation(void)
       
     gtk_signal_connect( GTK_OBJECT(m_wxwindow), "leave_notify_event", 
       GTK_SIGNAL_FUNC(gtk_window_leave_callback), (gpointer)this );
-  };
+  }
   
 /*
   // Does destroy ever get called ?
@@ -1012,7 +1012,7 @@ void wxWindow::PostCreation(void)
   {
     gtk_signal_connect( GTK_OBJECT(m_wxwindow), "destroy_event", 
       GTK_SIGNAL_FUNC(gtk_window_destroy_callback), (gpointer)this );
-  };
+  }
 */
   
   if (m_widget && m_parent) gtk_widget_realize( m_widget );
@@ -1021,12 +1021,12 @@ void wxWindow::PostCreation(void)
   SetCursor( wxSTANDARD_CURSOR );
   
   m_hasVMT = TRUE;
-};
+}
 
 bool wxWindow::HasVMT(void)
 {
   return m_hasVMT;
-};
+}
 
 bool wxWindow::Close( bool force )
 {
@@ -1035,14 +1035,14 @@ bool wxWindow::Close( bool force )
   event.SetForce(force);
 
   return GetEventHandler()->ProcessEvent(event);
-};
+}
 
 bool wxWindow::Destroy(void)
 {
   m_hasVMT = FALSE;
   delete this;
   return TRUE;
-};
+}
 
 bool wxWindow::DestroyChildren(void)
 {
@@ -1056,21 +1056,21 @@ bool wxWindow::DestroyChildren(void)
       {
         delete child;
   if (GetChildren()->Member(child)) delete node;
-      };
-    };
-  };
+      }
+    }
+  }
   return TRUE;
-};
+}
 
 void wxWindow::PrepareDC( wxDC &WXUNUSED(dc) )
 {
   // are we to set fonts here ?
-};
+}
 
 void wxWindow::ImplementSetSize(void)
 { 
   gtk_widget_set_usize( m_widget, m_width, m_height );
-};
+}
 
 void wxWindow::ImplementSetPosition(void)
 {
@@ -1091,7 +1091,7 @@ void wxWindow::ImplementSetPosition(void)
     gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x, m_y );
     
   // Don't do anything for children of wxNotebook and wxMDIChildFrame   
-};
+}
 
 void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
 {
@@ -1109,30 +1109,30 @@ void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
     if (newY == -1) newY = m_y;
     if (newW == -1) newW = m_width;
     if (newH == -1) newH = m_height;
-  };
+  }
   
   if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
   {
     if (newW == -1) newW = 80;
-  };
+  }
   
   if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT)
   {
     if (newH == -1) newH = 26;
-  };
+  }
   
   if ((m_x != newX) || (m_y != newY) || (!m_sizeSet))
   {
     m_x = newX;
     m_y = newY;
     ImplementSetPosition();
-  };
+  }
   if ((m_width != newW) || (m_height != newH) || (!m_sizeSet))
   {
     m_width = newW;
     m_height = newH;
     ImplementSetSize();
-  };
+  }
   m_sizeSet = TRUE;
   
   wxSizeEvent event( wxSize(m_width,m_height), GetId() );
@@ -1140,23 +1140,23 @@ void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
   ProcessEvent( event );
   
   m_resizing = FALSE;
-};
+}
 
 void wxWindow::SetSize( int width, int height )
 {
   SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING );
-};
+}
 
 void wxWindow::Move( int x, int y )
 {
   SetSize( x, y, -1, -1, wxSIZE_USE_EXISTING );
-};
+}
 
 void wxWindow::GetSize( int *width, int *height ) const
 {
   if (width) (*width) = m_width;
   if (height) (*height) = m_height;
-};
+}
 
 void wxWindow::SetClientSize( int width, int height )
 {
@@ -1197,24 +1197,24 @@ void wxWindow::SetClientSize( int width, int height )
       {
         dw += 2 * viewport_class->xthickness;
         dh += 2 * viewport_class->ythickness;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(vscrollbar))
       {
         dw += vscrollbar->allocation.width;
         dw += scroll_class->scrollbar_spacing;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(hscrollbar))
       {
         dh += hscrollbar->allocation.height;
         dw += scroll_class->scrollbar_spacing;
-      };
-    };
+      }
+    }
     
     SetSize( width+dw, height+dh );
-  };
-};
+  }
+}
 
 void wxWindow::GetClientSize( int *width, int *height ) const
 {
@@ -1256,33 +1256,33 @@ void wxWindow::GetClientSize( int *width, int *height ) const
       {
         dw += 2 * viewport_class->xthickness;
         dh += 2 * viewport_class->ythickness;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(vscrollbar))
       {
 //        dw += vscrollbar->allocation.width;
         dw += 15;                               // range.slider_width = 11 + 2*2pts edge
         dw += scroll_class->scrollbar_spacing;
-      };
+      }
     
       if (GTK_WIDGET_VISIBLE(hscrollbar))
       {
 //        dh += hscrollbar->allocation.height;
         dh += 15;
         dh += scroll_class->scrollbar_spacing;
-      };
-    };
+      }
+    }
     
     if (width) (*width) = m_width - dw;
     if (height) (*height) = m_height - dh;
-  };
-};
+  }
+}
 
 void wxWindow::GetPosition( int *x, int *y ) const
 {
   if (x) (*x) = m_x;
   if (y) (*y) = m_y;
-};
+}
 
 void wxWindow::ClientToScreen( int *x, int *y )
 {
@@ -1304,12 +1304,12 @@ void wxWindow::ClientToScreen( int *x, int *y )
     {
       org_x += m_widget->allocation.x;
       org_y += m_widget->allocation.y;
-    };
-  };
+    }
+  }
   
   if (x) *x += org_x;  
   if (y) *y += org_y;  
-};
+}
 
 void wxWindow::ScreenToClient( int *x, int *y )
 {
@@ -1329,12 +1329,12 @@ void wxWindow::ScreenToClient( int *x, int *y )
     {
       org_x += m_widget->allocation.x;
       org_y += m_widget->allocation.y;
-    };
-  };
+    }
+  }
   
   if (x) *x -= org_x;  
   if (y) *y -= org_y;  
-};
+}
 
 void wxWindow::Centre( int direction )
 {
@@ -1354,9 +1354,9 @@ void wxWindow::Centre( int direction )
       if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (p_w - m_width) / 2;
       if (direction & wxVERTICAL == wxVERTICAL) m_y = (p_h - m_height) / 2;
       ImplementSetPosition();
-    };
+    }
   }
-};
+}
 
 void wxWindow::Fit(void)
 {
@@ -1377,12 +1377,12 @@ void wxWindow::Fit(void)
     node = node->Next();
   }
   SetClientSize(maxX + 5, maxY + 10);
-};
+}
 
 void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
   //if (GetAutoLayout()) Layout();
-};
+}
 
 bool wxWindow::Show( bool show )
 {
@@ -1392,14 +1392,14 @@ bool wxWindow::Show( bool show )
     gtk_widget_hide( m_widget );
   m_isShown = show;  
   return TRUE;
-};
+}
 
 void wxWindow::Enable( bool enable )
 {
   m_isEnabled = enable;
   gtk_widget_set_sensitive( m_widget, enable );
   if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
-};
+}
 
 void wxWindow::MakeModal( bool modal )
 {
@@ -1427,14 +1427,14 @@ void wxWindow::SetFocus(void)
     if (GTK_WIDGET_CAN_FOCUS(connect_widget) && !GTK_WIDGET_HAS_FOCUS (connect_widget) )
     {
       gtk_widget_grab_focus (connect_widget);
-    };
-  };
-};
+    }
+  }
+}
 
 bool wxWindow::OnClose(void)
 {
   return TRUE;
-};
+}
 
 void wxWindow::AddChild( wxWindow *child )
 {
@@ -1500,69 +1500,79 @@ void wxWindow::AddChild( wxWindow *child )
     child->m_x, child->m_y );
   
   gtk_widget_set_usize( child->m_widget, child->m_width, child->m_height );
-};
+}
 
 wxList *wxWindow::GetChildren(void)
 {
   return (&m_children);
-};
+}
 
 void wxWindow::RemoveChild( wxWindow *child )
 {
   if (GetChildren())
  GetChildren()->DeleteObject( child );
   child->m_parent = NULL;
-};
+}
 
 void wxWindow::SetReturnCode( int retCode )
 {
   m_retCode = retCode;
-};
+}
 
 int wxWindow::GetReturnCode(void)
 {
   return m_retCode;
-};
+}
 
 wxWindow *wxWindow::GetParent(void)
 {
   return m_parent;
-};
+}
+
+void wxWindow::Raise(void)
+{
+  if (m_widget) gdk_window_raise( m_widget->window );
+}
+
+void wxWindow::Lower(void)
+{
+  if (m_widget) gdk_window_lower( m_widget->window );
+}
 
 wxEvtHandler *wxWindow::GetEventHandler(void)
 {
   return m_eventHandler;
-};
+}
 
 void wxWindow::SetEventhandler( wxEvtHandler *handler )
 {
   m_eventHandler = handler;
-};
+}
 
 wxValidator *wxWindow::GetValidator(void)
 {
   return m_windowValidator;
-};
+}
 
 void wxWindow::SetValidator( wxValidator *validator )
 {
   m_windowValidator = validator;
-};
+}
 
 bool wxWindow::IsBeingDeleted(void)
 {
   return FALSE;
-};
+}
 
 void wxWindow::SetId( wxWindowID id )
 {
   m_windowId = id;
-};
+}
 
 wxWindowID wxWindow::GetId(void)
 {
   return m_windowId;
-};
+}
 
 void wxWindow::SetCursor( const wxCursor &cursor )
 {
@@ -1576,7 +1586,7 @@ void wxWindow::SetCursor( const wxCursor &cursor )
     gdk_window_set_cursor( m_widget->window, m_cursor->GetCursor() );
   if (m_wxwindow && m_wxwindow->window)
     gdk_window_set_cursor( m_wxwindow->window, m_cursor->GetCursor() );
-};
+}
 
 void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
 {
@@ -1590,7 +1600,7 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
         rect->height );
     else
       Clear(); 
-  };
+  }
   if (!rect)
   {
     if (m_wxwindow)
@@ -1611,7 +1621,7 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
       gdk_rect.width = w;
       gdk_rect.height = h;
       gtk_widget_draw( m_wxwindow, &gdk_rect );
-    };
+    }
   }
   else
   {
@@ -1625,28 +1635,28 @@ void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
       gtk_widget_draw( m_wxwindow, &gdk_rect );
     else
       gtk_widget_draw( m_widget, &gdk_rect );
-  };
-};
+  }
+}
 
 bool wxWindow::IsExposed( long x, long y )
 {
   return (m_updateRegion.Contains( x, y ) != wxOutRegion );
-};
+}
 
 bool wxWindow::IsExposed( long x, long y, long width, long height )
 {
   return (m_updateRegion.Contains( x, y, width, height ) != wxOutRegion );
-};
+}
 
 void wxWindow::Clear(void)
 {
   if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window );
-};
+}
 
 wxColour wxWindow::GetBackgroundColour(void) const
 {
   return m_backgroundColour;
-};
+}
 
 void wxWindow::SetBackgroundColour( const wxColour &colour )
 {
@@ -1656,9 +1666,9 @@ void wxWindow::SetBackgroundColour( const wxColour &colour )
     m_backgroundColour.CalcPixel( m_wxwindow->style->colormap );
     gdk_window_set_background( m_wxwindow->window, m_backgroundColour.GetColor() );
     gdk_window_clear( m_wxwindow->window );
-  };
+  }
   // do something ?
-};
+}
 
 bool wxWindow::Validate(void)
 {
@@ -1669,9 +1679,9 @@ bool wxWindow::Validate(void)
     if (child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this)) 
       { return FALSE; }
     node = node->Next();
-  };
+  }
   return TRUE;
-};
+}
 
 bool wxWindow::TransferDataToWindow(void)
 {
@@ -1684,11 +1694,11 @@ bool wxWindow::TransferDataToWindow(void)
     {
       wxMessageBox( _("Application Error"), _("Could not transfer data to window"), wxOK|wxICON_EXCLAMATION );
       return FALSE;
-    };
+    }
     node = node->Next();
-  };
+  }
   return TRUE;
-};
+}
 
 bool wxWindow::TransferDataFromWindow(void)
 {
@@ -1701,19 +1711,19 @@ bool wxWindow::TransferDataFromWindow(void)
    node = node->Next();
   }
   return TRUE;
-};
+}
 
 void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) )
 {
   TransferDataToWindow();
-};
+}
 
 void wxWindow::InitDialog(void)
 {
   wxInitDialogEvent event(GetId());
   event.SetEventObject( this );
   GetEventHandler()->ProcessEvent(event);
-};
+}
 
 static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 {
@@ -1725,8 +1735,8 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
     if (menuitem->IsSubMenu())
       SetInvokingWindow( menuitem->GetSubMenu(), win );
     node = node->Next();
-  };
-};
+  }
+}
 
 bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 {
@@ -1746,7 +1756,7 @@ void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
   
     m_pDropTarget->UnregisterWidget( dnd_widget );
     delete m_pDropTarget;
-  };
+  }
   m_pDropTarget = dropTarget;
   if (m_pDropTarget)
   {
@@ -1754,13 +1764,13 @@ void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
     
     gtk_signal_connect( GTK_OBJECT(dnd_widget), "drop_data_available_event",
       GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this );
-  };
-};
+  }
+}
 
 wxDropTarget *wxWindow::GetDropTarget() const
 {
   return m_pDropTarget;
-};
+}
 
 GtkWidget* wxWindow::GetConnectWidget(void)
 {
@@ -1782,22 +1792,22 @@ void wxWindow::SetFont( const wxFont &font )
   GtkStyle *style = gtk_style_new();
   ...
 */
-};
+}
 
 wxFont *wxWindow::GetFont(void)
 {
   return &m_font;
-};
+}
 
 void wxWindow::SetWindowStyleFlag( long flag )
 {
   m_windowStyle = flag;
-};
+}
 
 long wxWindow::GetWindowStyleFlag(void) const
 {
   return m_windowStyle;
-};
+}
 
 void wxWindow::CaptureMouse(void)
 {
@@ -1809,48 +1819,48 @@ void wxWindow::CaptureMouse(void)
         GDK_BUTTON_RELEASE_MASK |
         GDK_POINTER_MOTION_MASK), 
         NULL, NULL, GDK_CURRENT_TIME );
-};
+}
 
 void wxWindow::ReleaseMouse(void)
 {
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
-};
+}
 
 void wxWindow::SetTitle( const wxString &WXUNUSED(title) )
 {
-};
+}
 
 wxString wxWindow::GetTitle(void) const
 {
   return (wxString&)m_windowName;
-};
+}
 
 wxString wxWindow::GetLabel(void) const
 {
   return GetTitle();
-};
+}
 
 void wxWindow::SetName( const wxString &name )
 {
   m_windowName = name;
-};
+}
 
 wxString wxWindow::GetName(void) const
 {
   return (wxString&)m_windowName;
-};
+}
 
 bool wxWindow::IsShown(void) const
 {
   return m_isShown;
-};
+}
 
 bool wxWindow::IsRetained(void)
 {
   return FALSE;
-};
+}
 
 wxWindow *wxWindow::FindWindow( long id )
 {
@@ -1862,9 +1872,9 @@ wxWindow *wxWindow::FindWindow( long id )
     wxWindow *res = child->FindWindow( id );
     if (res) return res;
     node = node->Next();
-  };
+  }
   return NULL;
-};
+}
 
 wxWindow *wxWindow::FindWindow( const wxString& name )
 {
@@ -1876,9 +1886,9 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
     wxWindow *res = child->FindWindow( name );
     if (res) return res;
     node = node->Next();
-  };
+  }
   return NULL;
-};
+}
 
 void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
       int range, bool WXUNUSED(refresh) )
@@ -1922,7 +1932,7 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
     m_vAdjust->step_increment = 1.0;
     m_vAdjust->page_increment = (float)(wxMax(fthumb-2,0));
     m_vAdjust->page_size = fthumb;
-  };
+  }
   
   if (m_wxwindow->window)
   {
@@ -1946,8 +1956,8 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
     }
       
     gtk_widget_set_usize( m_widget, m_width, m_height );
-  };
-};
+  }
+}
 
 void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 {
@@ -1967,7 +1977,7 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
     m_oldVerticalPos = fpos;
     if (fabs(fpos-m_vAdjust->value) < 0.2) return;
     m_vAdjust->value = fpos;
-  };
+  }
   
   if (m_wxwindow->window)
   {  
@@ -1975,8 +1985,8 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
       gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
     else  
       gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
-  };
-};
+  }
+}
 
 int wxWindow::GetScrollThumb( int orient ) const
 {
@@ -1986,7 +1996,7 @@ int wxWindow::GetScrollThumb( int orient ) const
     return (int)(m_hAdjust->page_size+0.5);
   else
     return (int)(m_vAdjust->page_size+0.5);
-};
+}
 
 int wxWindow::GetScrollPos( int orient ) const
 {
@@ -1996,7 +2006,7 @@ int wxWindow::GetScrollPos( int orient ) const
     return (int)(m_hAdjust->value+0.5);
   else
     return (int)(m_vAdjust->value+0.5);
-};
+}
 
 int wxWindow::GetScrollRange( int orient ) const
 {
@@ -2006,7 +2016,7 @@ int wxWindow::GetScrollRange( int orient ) const
     return (int)(m_hAdjust->upper+0.5);
   else
     return (int)(m_vAdjust->upper+0.5);
-};
+}
 
 void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
 {
@@ -2046,7 +2056,7 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
     {
       Refresh();
       return;
-    };
+    }
     int s_x = 0;
     int s_y = 0;
     if (dx < 0) s_x = -dx;
@@ -2066,13 +2076,13 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
   
     Refresh( TRUE, &rect );
 */
-};
+}
 
 void wxWindow::GetDrawingOffset( long *x, long *y )
 {
   if (x) *x = m_drawingOffsetX;
   if (y) *y = m_drawingOffsetY;
-};
+}
 
 //-------------------------------------------------------------------------------------
 //          Layout
@@ -2081,7 +2091,7 @@ void wxWindow::GetDrawingOffset( long *x, long *y )
 wxLayoutConstraints *wxWindow::GetConstraints(void) const
 {
   return m_constraints;
-};
+}
 
 void wxWindow::SetConstraints( wxLayoutConstraints *constraints )
 {
@@ -2118,27 +2128,27 @@ void wxWindow::SetConstraints( wxLayoutConstraints *constraints )
 void wxWindow::SetAutoLayout( bool autoLayout )
 {
   m_autoLayout = autoLayout;
-};
+}
 
 bool wxWindow::GetAutoLayout(void) const
 {
   return m_autoLayout;
-};
+}
 
 wxSizer *wxWindow::GetSizer(void) const
 {
   return m_windowSizer;
-};
+}
 
 void wxWindow::SetSizerParent( wxWindow *win )
 {
   m_sizerParent = win;
-};
+}
 
 wxWindow *wxWindow::GetSizerParent(void) const
 {
   return m_sizerParent;
-};
+}
 
 // This removes any dangling pointers to this window
 // in other windows' constraintsInvolvedIn lists.