no real changes, just small cleanup, in particular use more consistent variable names

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-01-28 09:01:44 +00:00
parent 4f7cd56c14
commit 838e6ed707

View File

@@ -55,13 +55,19 @@ extern wxMenu *wxCurrentPopupMenu;
extern void wxRemoveHandleAssociation(wxWindow *win); extern void wxRemoveHandleAssociation(wxWindow *win);
namespace
{
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// constants // constants
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// This range gives a maximum of 500 MDI children. Should be enough :-) // This range gives a maximum of 500 MDI children. Should be enough :-)
static const int wxFIRST_MDI_CHILD = 4100; const int wxFIRST_MDI_CHILD = 4100;
static const int wxLAST_MDI_CHILD = 4600; const int wxLAST_MDI_CHILD = 4600;
// The MDI "Window" menu label
const char *WINDOW_MENU_LABEL = gettext_noop("&Window");
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// private functions // private functions
@@ -69,29 +75,31 @@ static const int wxLAST_MDI_CHILD = 4600;
// set the MDI menus (by sending the WM_MDISETMENU message) and update the menu // set the MDI menus (by sending the WM_MDISETMENU message) and update the menu
// of the parent of win (which is supposed to be the MDI client window) // of the parent of win (which is supposed to be the MDI client window)
static void MDISetMenu(wxWindow *win, HMENU hmenuFrame, HMENU hmenuWindow); void MDISetMenu(wxWindow *win, HMENU hmenuFrame, HMENU hmenuWindow);
// insert the window menu (subMenu) into menu just before "Help" submenu or at // insert the window menu (subMenu) into menu just before "Help" submenu or at
// the very end if not found // the very end if not found
static void MDIInsertWindowMenu(wxWindow *win, WXHMENU menu, HMENU subMenu); void MDIInsertWindowMenu(wxWindow *win, WXHMENU hMenu, HMENU subMenu);
// Remove the window menu // Remove the window menu
static void MDIRemoveWindowMenu(wxWindow *win, WXHMENU menu); void MDIRemoveWindowMenu(wxWindow *win, WXHMENU hMenu);
// unpack the parameters of WM_MDIACTIVATE message // unpack the parameters of WM_MDIACTIVATE message
static void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam, void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
WXWORD *activate, WXHWND *hwndAct, WXHWND *hwndDeact); WXWORD *activate, WXHWND *hwndAct, WXHWND *hwndDeact);
// return the HMENU of the MDI menu // return the HMENU of the MDI menu
// //
// this function works correctly even when we don't have a window menu and just // this function works correctly even when we don't have a window menu and just
// returns 0 then // returns 0 then
static inline HMENU GetMDIWindowMenu(wxMDIParentFrame *frame) inline HMENU GetMDIWindowMenu(wxMDIParentFrame *frame)
{ {
wxMenu *menu = frame->GetWindowMenu(); wxMenu *menu = frame->GetWindowMenu();
return menu ? GetHmenuOf(menu) : 0; return menu ? GetHmenuOf(menu) : 0;
} }
} // anonymous namespace
// =========================================================================== // ===========================================================================
// implementation // implementation
// =========================================================================== // ===========================================================================
@@ -1406,10 +1414,13 @@ void wxMDIChildFrame::OnIdle(wxIdleEvent& event)
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// non member functions // private helper functions
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
static void MDISetMenu(wxWindow *win, HMENU hmenuFrame, HMENU hmenuWindow) namespace
{
void MDISetMenu(wxWindow *win, HMENU hmenuFrame, HMENU hmenuWindow)
{ {
if ( hmenuFrame || hmenuWindow ) if ( hmenuFrame || hmenuWindow )
{ {
@@ -1435,61 +1446,62 @@ static void MDISetMenu(wxWindow *win, HMENU hmenuFrame, HMENU hmenuWindow)
::DrawMenuBar(GetWinHwnd(parent)); ::DrawMenuBar(GetWinHwnd(parent));
} }
static void MDIInsertWindowMenu(wxWindow *win, WXHMENU menu, HMENU subMenu) void MDIInsertWindowMenu(wxWindow *win, WXHMENU hMenu, HMENU menuWin)
{ {
// Try to insert Window menu in front of Help, otherwise append it. HMENU hmenu = (HMENU)hMenu;
HMENU hmenu = (HMENU)menu;
if (subMenu) if ( menuWin )
{ {
// Try to insert Window menu in front of Help, otherwise append it.
int N = GetMenuItemCount(hmenu); int N = GetMenuItemCount(hmenu);
bool success = false; bool inserted = false;
for ( int i = 0; i < N; i++ ) for ( int i = 0; i < N; i++ )
{ {
wxChar buf[256]; wxChar buf[256];
int chars = GetMenuString(hmenu, i, buf, WXSIZEOF(buf), MF_BYPOSITION); if ( !::GetMenuString(hmenu, i, buf, WXSIZEOF(buf), MF_BYPOSITION) )
if ( chars == 0 )
{ {
wxLogLastError(wxT("GetMenuString")); wxLogLastError(wxT("GetMenuString"));
continue; continue;
} }
wxString strBuf(buf); const wxString label = wxStripMenuCodes(buf);
if ( wxStripMenuCodes(strBuf) == wxGetStockLabel(wxID_HELP,false) ) if ( label == wxGetStockLabel(wxID_HELP, wxSTOCK_NOFLAGS) )
{ {
success = true; inserted = true;
::InsertMenu(hmenu, i, MF_BYPOSITION | MF_POPUP | MF_STRING, ::InsertMenu(hmenu, i, MF_BYPOSITION | MF_POPUP | MF_STRING,
(UINT_PTR)subMenu, _("&Window").wx_str()); (UINT_PTR)menuWin,
wxGetTranslation(WINDOW_MENU_LABEL).wx_str());
break; break;
} }
} }
if ( !success ) if ( !inserted )
{ {
::AppendMenu(hmenu, MF_POPUP, ::AppendMenu(hmenu, MF_POPUP,
(UINT_PTR)subMenu, _("&Window").wx_str()); (UINT_PTR)menuWin,
wxGetTranslation(WINDOW_MENU_LABEL).wx_str());
} }
} }
MDISetMenu(win, hmenu, subMenu); MDISetMenu(win, hmenu, menuWin);
} }
static void MDIRemoveWindowMenu(wxWindow *win, WXHMENU menu) void MDIRemoveWindowMenu(wxWindow *win, WXHMENU hMenu)
{ {
HMENU hMenu = (HMENU)menu; HMENU hmenu = (HMENU)hMenu;
if ( hMenu ) if ( hmenu )
{ {
wxChar buf[1024]; wxChar buf[1024];
int N = ::GetMenuItemCount(hMenu); int N = ::GetMenuItemCount(hmenu);
for ( int i = 0; i < N; i++ ) for ( int i = 0; i < N; i++ )
{ {
if ( !::GetMenuString(hMenu, i, buf, WXSIZEOF(buf), MF_BYPOSITION) ) if ( !::GetMenuString(hmenu, i, buf, WXSIZEOF(buf), MF_BYPOSITION) )
{ {
// Ignore successful read of menu string with length 0 which // Ignore successful read of menu string with length 0 which
// occurs, for example, for a maximized MDI childs system menu // occurs, for example, for a maximized MDI child system menu
if ( ::GetLastError() != 0 ) if ( ::GetLastError() != 0 )
{ {
wxLogLastError(wxT("GetMenuString")); wxLogLastError(wxT("GetMenuString"));
@@ -1498,9 +1510,9 @@ static void MDIRemoveWindowMenu(wxWindow *win, WXHMENU menu)
continue; continue;
} }
if ( wxStrcmp(buf, _("&Window")) == 0 ) if ( wxStrcmp(buf, wxGetTranslation(WINDOW_MENU_LABEL)) == 0 )
{ {
if ( !::RemoveMenu(hMenu, i, MF_BYPOSITION) ) if ( !::RemoveMenu(hmenu, i, MF_BYPOSITION) )
{ {
wxLogLastError(wxT("RemoveMenu")); wxLogLastError(wxT("RemoveMenu"));
} }
@@ -1513,11 +1525,11 @@ static void MDIRemoveWindowMenu(wxWindow *win, WXHMENU menu)
if ( win ) if ( win )
{ {
// we don't change the windows menu, but we update the main one // we don't change the windows menu, but we update the main one
MDISetMenu(win, hMenu, NULL); MDISetMenu(win, hmenu, NULL);
} }
} }
static void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam, void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
WXWORD *activate, WXHWND *hwndAct, WXHWND *hwndDeact) WXWORD *activate, WXHWND *hwndAct, WXHWND *hwndDeact)
{ {
*activate = true; *activate = true;
@@ -1525,4 +1537,6 @@ static void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
*hwndDeact = (WXHWND)wParam; *hwndDeact = (WXHWND)wParam;
} }
} // anonymous namespace
#endif // wxUSE_MDI && !defined(__WXUNIVERSAL__) #endif // wxUSE_MDI && !defined(__WXUNIVERSAL__)