// globals
// ----------------------------------------------------------------------------
-extern const wxChar *wxFrameClassName;
-
#if wxUSE_MENUS_NATIVE
-extern wxMenu *wxCurrentPopupMenu;
+ extern wxMenu *wxCurrentPopupMenu;
#endif // wxUSE_MENUS_NATIVE
// ----------------------------------------------------------------------------
EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
END_EVENT_TABLE()
-IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
+IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow)
// ============================================================================
// implementation
if ( !wxTopLevelWindow::Create(parent, id, title, pos, size, style, name) )
return FALSE;
- SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
wxModelessWindows.Append(this);
}
#endif // wxUSE_STATUSBAR
+ // call GetClientAreaOrigin() to take the toolbar into account
+ wxPoint pt = GetClientAreaOrigin();
+ width += pt.x;
+ height += pt.y;
+
wxTopLevelWindow::DoSetClientSize(width, height);
}
{
wxTopLevelWindow::DoGetClientSize(x, y);
+ // account for the possible toolbar
+ wxPoint pt = GetClientAreaOrigin();
+ if ( x )
+ *x -= pt.x;
+
+ if ( y )
+ *y -= pt.y;
+
#if wxUSE_STATUSBAR
// adjust client area height to take the status bar into account
if ( y )
// Responds to colour changes, and passes event on to children.
void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
{
- SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
+ SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
Refresh();
#if wxUSE_STATUSBAR
else
{
tw = width;
+ if ( toolbar->GetWindowStyleFlag() & wxTB_FLAT )
+ th -= 3;
}
// use the 'real' MSW position here, don't offset relativly to the
#ifndef __WXMICROWIN__
if ( m_iconized )
{
- HICON hIcon = m_icon.Ok() ? GetHiconOf(m_icon)
- : (HICON)GetDefaultIcon();
+ const wxIcon& icon = GetIcon();
+ HICON hIcon = icon.Ok() ? GetHiconOf(icon)
+ : (HICON)GetDefaultIcon();
// Hold a pointer to the dc so long as the OnPaint() message
// is being processed
}
wxMenuEvent event(wxEVT_MENU_HIGHLIGHT, item);
- event.SetEventObject( this );
+ event.SetEventObject(this);
+
+ return GetEventHandler()->ProcessEvent(event);
+}
+
+bool wxFrame::HandleMenuLoop(const wxEventType& evtType, WXWORD isPopup)
+{
+ // we don't have the menu id here, so we use the id to specify if the event
+ // was from a popup menu or a normal one
+ wxMenuEvent event(evtType, isPopup ? -1 : 0);
+ event.SetEventObject(this);
return GetEventHandler()->ProcessEvent(event);
}
processed = !Close();
break;
+ case WM_SIZE:
+ processed = HandleSize(LOWORD(lParam), HIWORD(lParam), wParam);
+ break;
+
case WM_COMMAND:
{
WORD id, cmd;
}
break;
+ case WM_PAINT:
+ processed = HandlePaint();
+ break;
+
#ifndef __WXMICROWIN__
case WM_MENUSELECT:
{
processed = HandleMenuSelect(item, flags, hmenu);
}
break;
-#endif
- case WM_PAINT:
- processed = HandlePaint();
+#ifndef __WIN16__
+ case WM_ENTERMENULOOP:
+ processed = HandleMenuLoop(wxEVT_MENU_OPEN, wParam);
break;
-#ifndef __WXMICROWIN__
+ case WM_EXITMENULOOP:
+ processed = HandleMenuLoop(wxEVT_MENU_CLOSE, wParam);
+ break;
+#endif // __WIN16__
+
case WM_QUERYDRAGICON:
{
- HICON hIcon = m_icon.Ok() ? GetHiconOf(m_icon)
- : (HICON)GetDefaultIcon();
+ const wxIcon& icon = GetIcon();
+ HICON hIcon = icon.Ok() ? GetHiconOf(icon)
+ : (HICON)GetDefaultIcon();
rc = (long)hIcon;
processed = rc != 0;
}
break;
-#endif
-
- case WM_SIZE:
- processed = HandleSize(LOWORD(lParam), HIWORD(lParam), wParam);
- break;
+#endif // !__WXMICROWIN__
}
if ( !processed )