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:
@@ -55,13 +55,19 @@ extern wxMenu *wxCurrentPopupMenu;
|
||||
|
||||
extern void wxRemoveHandleAssociation(wxWindow *win);
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// constants
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// This range gives a maximum of 500 MDI children. Should be enough :-)
|
||||
static const int wxFIRST_MDI_CHILD = 4100;
|
||||
static const int wxLAST_MDI_CHILD = 4600;
|
||||
const int wxFIRST_MDI_CHILD = 4100;
|
||||
const int wxLAST_MDI_CHILD = 4600;
|
||||
|
||||
// The MDI "Window" menu label
|
||||
const char *WINDOW_MENU_LABEL = gettext_noop("&Window");
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 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
|
||||
// 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
|
||||
// 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
|
||||
static void MDIRemoveWindowMenu(wxWindow *win, WXHMENU menu);
|
||||
void MDIRemoveWindowMenu(wxWindow *win, WXHMENU hMenu);
|
||||
|
||||
// unpack the parameters of WM_MDIACTIVATE message
|
||||
static void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
|
||||
WXWORD *activate, WXHWND *hwndAct, WXHWND *hwndDeact);
|
||||
void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
|
||||
WXWORD *activate, WXHWND *hwndAct, WXHWND *hwndDeact);
|
||||
|
||||
// return the HMENU of the MDI menu
|
||||
//
|
||||
// this function works correctly even when we don't have a window menu and just
|
||||
// returns 0 then
|
||||
static inline HMENU GetMDIWindowMenu(wxMDIParentFrame *frame)
|
||||
inline HMENU GetMDIWindowMenu(wxMDIParentFrame *frame)
|
||||
{
|
||||
wxMenu *menu = frame->GetWindowMenu();
|
||||
return menu ? GetHmenuOf(menu) : 0;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
// ===========================================================================
|
||||
// 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 )
|
||||
{
|
||||
@@ -1435,61 +1446,62 @@ static void MDISetMenu(wxWindow *win, HMENU hmenuFrame, HMENU hmenuWindow)
|
||||
::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)menu;
|
||||
HMENU hmenu = (HMENU)hMenu;
|
||||
|
||||
if (subMenu)
|
||||
if ( menuWin )
|
||||
{
|
||||
// Try to insert Window menu in front of Help, otherwise append it.
|
||||
int N = GetMenuItemCount(hmenu);
|
||||
bool success = false;
|
||||
bool inserted = false;
|
||||
for ( int i = 0; i < N; i++ )
|
||||
{
|
||||
wxChar buf[256];
|
||||
int chars = GetMenuString(hmenu, i, buf, WXSIZEOF(buf), MF_BYPOSITION);
|
||||
if ( chars == 0 )
|
||||
if ( !::GetMenuString(hmenu, i, buf, WXSIZEOF(buf), MF_BYPOSITION) )
|
||||
{
|
||||
wxLogLastError(wxT("GetMenuString"));
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
wxString strBuf(buf);
|
||||
if ( wxStripMenuCodes(strBuf) == wxGetStockLabel(wxID_HELP,false) )
|
||||
const wxString label = wxStripMenuCodes(buf);
|
||||
if ( label == wxGetStockLabel(wxID_HELP, wxSTOCK_NOFLAGS) )
|
||||
{
|
||||
success = true;
|
||||
inserted = true;
|
||||
::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;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !success )
|
||||
if ( !inserted )
|
||||
{
|
||||
::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];
|
||||
|
||||
int N = ::GetMenuItemCount(hMenu);
|
||||
int N = ::GetMenuItemCount(hmenu);
|
||||
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
|
||||
// occurs, for example, for a maximized MDI childs system menu
|
||||
// occurs, for example, for a maximized MDI child system menu
|
||||
if ( ::GetLastError() != 0 )
|
||||
{
|
||||
wxLogLastError(wxT("GetMenuString"));
|
||||
@@ -1498,9 +1510,9 @@ static void MDIRemoveWindowMenu(wxWindow *win, WXHMENU menu)
|
||||
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"));
|
||||
}
|
||||
@@ -1513,11 +1525,11 @@ static void MDIRemoveWindowMenu(wxWindow *win, WXHMENU menu)
|
||||
if ( win )
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
*activate = true;
|
||||
@@ -1525,4 +1537,6 @@ static void UnpackMDIActivate(WXWPARAM wParam, WXLPARAM lParam,
|
||||
*hwndDeact = (WXHWND)wParam;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
#endif // wxUSE_MDI && !defined(__WXUNIVERSAL__)
|
||||
|
Reference in New Issue
Block a user