]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stubs/window.cpp
wxMenuBarBase for MSW (untested)
[wxWidgets.git] / src / stubs / window.cpp
index 341ad00e51f48f6cd54fe5a6360230f026a71e30..6970db0614bbfba50fd3f20362a12d788452c6aa 100644 (file)
 #include "wx/button.h"
 #include "wx/settings.h"
 #include "wx/msgdlg.h"
+#include "wx/frame.h"
 
 #include "wx/menuitem.h"
 #include "wx/log.h"
 
-#if  USE_DRAG_AND_DROP
+#if  wxUSE_DRAG_AND_DROP
 #include "wx/dnd.h"
 #endif
 
@@ -43,6 +44,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler)
 
 BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler)
   EVT_CHAR(wxWindow::OnChar)
+  EVT_KEY_DOWN(wxWindow::OnKeyDown)
+  EVT_KEY_UP(wxWindow::OnKeyUp)
   EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground)
   EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged)
   EVT_INIT_DIALOG(wxWindow::OnInitDialog)
@@ -56,6 +59,7 @@ END_EVENT_TABLE()
 wxWindow::wxWindow()
 {
     // Generic
+    m_isWindow = TRUE; // An optimization
     m_windowId = 0;
     m_windowStyle = 0;
     m_windowParent = NULL;
@@ -74,12 +78,11 @@ wxWindow::wxWindow()
     m_caretWidth = 0; m_caretHeight = 0;
     m_caretEnabled = FALSE;
     m_caretShown = FALSE;
-    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
+    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ;
+    // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
     m_foregroundColour = *wxBLACK;
-    m_defaultForegroundColour = *wxBLACK ;
-    m_defaultBackgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ;
 
-#if  USE_DRAG_AND_DROP
+#if  wxUSE_DRAG_AND_DROP
     m_pDropTarget = NULL;
 #endif
 }
@@ -90,7 +93,7 @@ wxWindow::~wxWindow()
        // Have to delete constraints/sizer FIRST otherwise
        // sizers may try to look at deleted windows as they
        // delete themselves.
-#if USE_CONSTRAINTS
+#if wxUSE_CONSTRAINTS
     DeleteRelatedConstraints();
     if (m_constraints)
     {
@@ -144,6 +147,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
            const wxString& name)
 {
     // Generic
+    m_isWindow = TRUE; // An optimization
     m_windowId = 0;
     m_windowStyle = 0;
     m_windowParent = NULL;
@@ -157,7 +161,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
     m_autoLayout = FALSE;
     m_windowValidator = NULL;
 
-#if USE_DRAG_AND_DROP
+#if wxUSE_DRAG_AND_DROP
     m_pDropTarget = NULL;
 #endif
 
@@ -184,10 +188,9 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
     else
        m_windowId = id;
 
-    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
+    // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ;
+    m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ;
     m_foregroundColour = *wxBLACK;
-    m_defaultForegroundColour = *wxBLACK ;
-    m_defaultBackgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ;
 
     m_windowStyle = style;
 
@@ -249,18 +252,19 @@ wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler)
                return NULL;
 }
 
-#if    USE_DRAG_AND_DROP
+#if    wxUSE_DRAG_AND_DROP
 
 void wxWindow::SetDropTarget(wxDropTarget *pDropTarget)
 {
   if ( m_pDropTarget != 0 ) {
-    m_pDropTarget->Revoke(m_hWnd);
     delete m_pDropTarget;
   }
 
   m_pDropTarget = pDropTarget;
   if ( m_pDropTarget != 0 )
-    m_pDropTarget->Register(m_hWnd);
+  {
+    // TODO
+  }
 }
 
 #endif
@@ -370,7 +374,7 @@ void wxWindow::GetTextExtent(const wxString& string, int *x, int *y,
     // TODO
 }
 
-void wxWindow::Refresh(bool eraseBack, const wxRectangle *rect)
+void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
 {
     // TODO
 }
@@ -378,7 +382,7 @@ void wxWindow::Refresh(bool eraseBack, const wxRectangle *rect)
 // Responds to colour changes: passes event on to children.
 void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event)
 {
-    wxNode *node = GetChildren()->First();
+    wxNode *node = GetChildren().First();
     while ( node )
     {
         // Only propagate to non-top-level windows
@@ -523,7 +527,7 @@ int wxWindow::GetScrollThumb(int orient) const
 void wxWindow::SetScrollPos(int orient, int pos, bool refresh)
 {
     // TODO
-    return 0;
+    return;
 }
 
 // New function that will replace some of the above.
@@ -534,10 +538,10 @@ void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
 }
 
 // Does a physical scroll
-void wxWindow::ScrollWindow(int dx, int dy, const wxRectangle *rect)
+void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect)
 {
     // TODO
-    return 0;
+    return;
 }
 
 void wxWindow::SetFont(const wxFont& font)
@@ -551,6 +555,7 @@ void wxWindow::SetFont(const wxFont& font)
 
 void wxWindow::OnChar(wxKeyEvent& event)
 {
+/* ??
     if ( event.KeyCode() == WXK_TAB ) {
         // propagate the TABs to the parent - it's up to it to decide what
         // to do with it
@@ -559,6 +564,18 @@ void wxWindow::OnChar(wxKeyEvent& event)
                 return;
         }
     }
+*/
+    Default();
+}
+
+void wxWindow::OnKeyDown(wxKeyEvent& event)
+{
+    Default();
+}
+
+void wxWindow::OnKeyUp(wxKeyEvent& event)
+{
+    Default();
 }
 
 void wxWindow::OnPaint(wxPaintEvent& event)
@@ -583,7 +600,7 @@ bool wxWindow::IsEnabled() const
 // it's an application error (pops up a dialog)
 bool wxWindow::TransferDataToWindow()
 {
-       wxNode *node = GetChildren()->First();
+       wxNode *node = GetChildren().First();
        while ( node )
        {
                wxWindow *child = (wxWindow *)node->Data();
@@ -603,7 +620,7 @@ bool wxWindow::TransferDataToWindow()
 // validation failed: don't quit
 bool wxWindow::TransferDataFromWindow()
 {
-       wxNode *node = GetChildren()->First();
+       wxNode *node = GetChildren().First();
        while ( node )
        {
                wxWindow *child = (wxWindow *)node->Data();
@@ -619,7 +636,7 @@ bool wxWindow::TransferDataFromWindow()
 
 bool wxWindow::Validate()
 {
-       wxNode *node = GetChildren()->First();
+       wxNode *node = GetChildren().First();
        while ( node )
        {
                wxWindow *child = (wxWindow *)node->Data();
@@ -642,30 +659,27 @@ wxWindow *wxWindow::FindFocus()
 
 void wxWindow::AddChild(wxWindow *child)
 {
-    GetChildren()->Append(child);
+    GetChildren().Append(child);
     child->m_windowParent = this;
 }
 
 void wxWindow::RemoveChild(wxWindow *child)
 {
-    if (GetChildren())
-        GetChildren()->DeleteObject(child);
+    GetChildren().DeleteObject(child);
     child->m_windowParent = NULL;
 }
 
 void wxWindow::DestroyChildren()
 {
-  if (GetChildren()) {
     wxNode *node;
-    while ((node = GetChildren()->First()) != (wxNode *)NULL) {
+    while ((node = GetChildren().First()) != (wxNode *)NULL) {
       wxWindow *child;
       if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) {
         delete child;
-               if ( GetChildren()->Member(child) )
+               if ( GetChildren().Member(child) )
                        delete node;
       }
     } /* while */
-  }
 }
 
 void wxWindow::MakeModal(bool modal)
@@ -691,7 +705,7 @@ void wxWindow::MakeModal(bool modal)
 void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event)
 {
   if (GetEventHandler()->ProcessEvent(event) )
-       return;
+    return;
   if (m_windowParent)
     m_windowParent->GetEventHandler()->OnCommand(win, event);
 }
@@ -880,7 +894,7 @@ bool wxWindow::DoPhase(int phase)
   {
     noChanges = 0;
     noFailures = 0;
-    wxNode *node = GetChildren()->First();
+    wxNode *node = GetChildren().First();
     while (node)
     {
       wxWindow *child = (wxWindow *)node->Data();
@@ -925,7 +939,7 @@ void wxWindow::ResetConstraints()
     constr->centreX.SetDone(FALSE);
     constr->centreY.SetDone(FALSE);
   }
-  wxNode *node = GetChildren()->First();
+  wxNode *node = GetChildren().First();
   while (node)
   {
     wxWindow *win = (wxWindow *)node->Data();
@@ -984,7 +998,7 @@ void wxWindow::SetConstraintSizes(bool recurse)
 
   if (recurse)
   {
-    wxNode *node = GetChildren()->First();
+    wxNode *node = GetChildren().First();
     while (node)
     {
       wxWindow *win = (wxWindow *)node->Data();
@@ -1113,7 +1127,10 @@ bool wxWindow::Close(bool force)
 {
   wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
   event.SetEventObject(this);
+#if WXWIN_COMPATIBILITY
   event.SetForce(force);
+#endif
+  event.SetCanVeto(!force);
 
   return GetEventHandler()->ProcessEvent(event);
 }
@@ -1121,9 +1138,7 @@ bool wxWindow::Close(bool force)
 wxObject* wxWindow::GetChild(int number) const
 {
   // Return a pointer to the Nth object in the window
-  if (!GetChildren())
-    return(NULL) ;
-  wxNode *node = GetChildren()->First();
+  wxNode *node = GetChildren().First();
   int n = number;
   while (node && n--)
     node = node->Next() ;
@@ -1154,7 +1169,7 @@ void wxWindow::Fit()
 {
        int maxX = 0;
        int maxY = 0;
-       wxNode *node = GetChildren()->First();
+       wxNode *node = GetChildren().First();
        while ( node )
        {
                wxWindow *win = (wxWindow *)node->Data();
@@ -1181,13 +1196,18 @@ void wxWindow::SetValidator(const wxValidator& validator)
                m_windowValidator->SetWindow(this) ;
 }
 
+void wxWindow::SetAcceleratorTable(const wxAcceleratorTable& accel)
+{
+    m_acceleratorTable = accel;
+}
+
 // Find a window by id or name
 wxWindow *wxWindow::FindWindow(long id)
 {
        if ( GetId() == id)
                return this;
 
-       wxNode *node = GetChildren()->First();
+       wxNode *node = GetChildren().First();
        while ( node )
        {
                wxWindow *child = (wxWindow *)node->Data();
@@ -1204,7 +1224,7 @@ wxWindow *wxWindow::FindWindow(const wxString& name)
        if ( GetName() == name)
                return this;
 
-       wxNode *node = GetChildren()->First();
+       wxNode *node = GetChildren().First();
        while ( node )
        {
                wxWindow *child = (wxWindow *)node->Data();
@@ -1278,4 +1298,20 @@ bool wxWindow::IsExposed(const wxRect& rect) const
     return (m_updateRegion.Contains(rect) != wxOutRegion);
 }
 
+void wxWindow::SetToolTip(const wxString& tooltip)
+{
+    // TODO
+}
+
+/*
+ * Allocates control IDs
+ */
+
+int wxWindow::NewControlId()
+{
+    static int s_controlId = 0;
+    s_controlId ++;
+    return s_controlId;
+}
+