// globals
// ----------------------------------------------------------------------------
-#if wxUSE_MENUS_NATIVE
+#if wxUSE_MENUS || wxUSE_MENUS_NATIVE
extern wxMenu *wxCurrentPopupMenu;
-#endif // wxUSE_MENUS_NATIVE
+#endif // wxUSE_MENUS || wxUSE_MENUS_NATIVE
// ----------------------------------------------------------------------------
// event tables
// wxFrame: various geometry-related functions
// ----------------------------------------------------------------------------
-void wxFrame::Raise()
-{
- ::SetForegroundWindow(GetHwnd());
-}
-
// generate an artificial resize event
void wxFrame::SendSizeEvent(int flags)
{
// adjust for menu / titlebar height
rc.bottom -= (2*menuHeight-1);
- ::MoveWindow(Gethwnd(), rc.left, rc.top, rc.right, rc.bottom, FALSE);
+ ::MoveWindow(GetHwnd(), rc.left, rc.top, rc.right, rc.bottom, FALSE);
}
#endif
#endif // wxUSE_MENUS_NATIVE
+#if wxUSE_MENUS
+wxMenu* wxFrame::MSWFindMenuFromHMENU(WXHMENU hMenu)
+{
+ return GetMenuBar() ? GetMenuBar()->MSWGetMenu(hMenu) : NULL;
+}
+#endif // wxUSE_MENUS
+
// Responds to colour changes, and passes event on to children.
void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
{
- SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
- Refresh();
+ // Don't override the colour explicitly set by the user, if any.
+ if ( !UseBgCol() )
+ {
+ SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
+ Refresh();
+ }
#if wxUSE_STATUSBAR
if ( m_frameStatusBar )
return wxFrameBase::HandleCommand(id, cmd, control);;
}
-#if wxUSE_MENUS
-
-bool
-wxFrame::HandleMenuSelect(WXWORD nItem, WXWORD flags, WXHMENU WXUNUSED(hMenu))
-{
- // sign extend to int from unsigned short we get from Windows
- int item = (signed short)nItem;
-
- // WM_MENUSELECT is generated for both normal items and menus, including
- // the top level menus of the menu bar, which can't be represented using
- // any valid identifier in wxMenuEvent so use an otherwise unused value for
- // them
- if ( flags & (MF_POPUP | MF_SEPARATOR) )
- item = wxID_NONE;
-
- wxMenuEvent event(wxEVT_MENU_HIGHLIGHT, item);
- event.SetEventObject(this);
-
- if ( HandleWindowEvent(event) )
- return true;
-
- // by default, i.e. if the event wasn't handled above, clear the status bar
- // text when an item which can't have any associated help string in wx API
- // is selected
- if ( item == wxID_NONE )
- DoGiveHelp(wxEmptyString, true);
-
- return false;
-}
-
-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 HandleWindowEvent(event);
-}
-
-bool wxFrame::HandleInitMenuPopup(WXHMENU hMenu)
-{
- wxMenu* menu = NULL;
- if (GetMenuBar())
- {
- menu = GetMenuBar()->MSWGetMenu(hMenu);
- }
-
- wxMenuEvent event(wxEVT_MENU_OPEN, 0, menu);
- event.SetEventObject(this);
-
- return HandleWindowEvent(event);
-}
-
-#endif // wxUSE_MENUS
-
// ---------------------------------------------------------------------------
// the window proc for wxFrame
// ---------------------------------------------------------------------------
break;
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
-#if wxUSE_MENUS
- case WM_INITMENUPOPUP:
- processed = HandleInitMenuPopup((WXHMENU) wParam);
- break;
-
- case WM_MENUSELECT:
- {
- WXWORD item, flags;
- WXHMENU hmenu;
- UnpackMenuSelect(wParam, lParam, &item, &flags, &hmenu);
-
- processed = HandleMenuSelect(item, flags, hmenu);
- }
- break;
-
- case WM_EXITMENULOOP:
- processed = HandleMenuLoop(wxEVT_MENU_CLOSE, (WXWORD)wParam);
- break;
-#endif // wxUSE_MENUS
-
case WM_QUERYDRAGICON:
{
const wxIcon& icon = GetIcon();