projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
simplify code so it always returns the same object
[wxWidgets.git]
/
src
/
msw
/
mdi.cpp
diff --git
a/src/msw/mdi.cpp
b/src/msw/mdi.cpp
index 55078de4c0977298684244d7b0baa29190986d43..46e0166c80ba353a231113466748919251e2904e 100644
(file)
--- a/
src/msw/mdi.cpp
+++ b/
src/msw/mdi.cpp
@@
-138,6
+138,14
@@
END_EVENT_TABLE()
// the children
// ===========================================================================
// the children
// ===========================================================================
+void wxMDIParentFrame::Init()
+{
+#if wxUSE_MENUS && wxUSE_ACCEL
+ // the default menu doesn't have any accelerators (even if we have it)
+ m_accelWindowMenu = NULL;
+#endif // wxUSE_MENUS && wxUSE_ACCEL
+}
+
bool wxMDIParentFrame::Create(wxWindow *parent,
wxWindowID id,
const wxString& title,
bool wxMDIParentFrame::Create(wxWindow *parent,
wxWindowID id,
const wxString& title,
@@
-162,11
+170,6
@@
bool wxMDIParentFrame::Create(wxWindow *parent,
m_windowMenu->Append(wxID_MDI_WINDOW_PREV, _("&Previous"));
}
m_windowMenu->Append(wxID_MDI_WINDOW_PREV, _("&Previous"));
}
-#if wxUSE_MENUS && wxUSE_ACCEL
- // the default menu doesn't have any accelerators (even if we have it)
- m_accelWindowMenu = NULL;
-#endif // wxUSE_MENUS && wxUSE_ACCEL
-
if (!parent)
wxTopLevelWindows.Append(this);
if (!parent)
wxTopLevelWindows.Append(this);
@@
-187,7
+190,7
@@
bool wxMDIParentFrame::Create(wxWindow *parent,
msflags &= ~WS_HSCROLL;
if ( !wxWindow::MSWCreate(wxApp::GetRegisteredClassName(wxT("wxMDIFrame")),
msflags &= ~WS_HSCROLL;
if ( !wxWindow::MSWCreate(wxApp::GetRegisteredClassName(wxT("wxMDIFrame")),
- title.
wx
_str(),
+ title.
t
_str(),
pos, size,
msflags,
exflags) )
pos, size,
msflags,
exflags) )
@@
-314,13
+317,23
@@
void wxMDIParentFrame::RemoveMDIChild(wxMDIChildFrame * WXUNUSED(child))
void wxMDIParentFrame::AddWindowMenu()
{
if ( m_windowMenu )
void wxMDIParentFrame::AddWindowMenu()
{
if ( m_windowMenu )
+ {
+ // For correct handling of the events from this menu we also must
+ // attach it to the menu bar.
+ m_windowMenu->Attach(GetMenuBar());
+
MDIInsertWindowMenu(GetClientWindow(), m_hMenu, GetMDIWindowMenu(this));
MDIInsertWindowMenu(GetClientWindow(), m_hMenu, GetMDIWindowMenu(this));
+ }
}
void wxMDIParentFrame::RemoveWindowMenu()
{
if ( m_windowMenu )
}
void wxMDIParentFrame::RemoveWindowMenu()
{
if ( m_windowMenu )
+ {
MDIRemoveWindowMenu(GetClientWindow(), m_hMenu);
MDIRemoveWindowMenu(GetClientWindow(), m_hMenu);
+
+ m_windowMenu->Detach();
+ }
}
void wxMDIParentFrame::UpdateWindowMenu(bool enable)
}
void wxMDIParentFrame::UpdateWindowMenu(bool enable)
@@
-366,8
+379,7
@@
void wxMDIParentFrame::SetWindowMenu(wxMenu* menu)
}
#if wxUSE_ACCEL
}
#if wxUSE_ACCEL
- delete m_accelWindowMenu;
- m_accelWindowMenu = NULL;
+ wxDELETE(m_accelWindowMenu);
if ( menu && menu->HasAccels() )
m_accelWindowMenu = menu->CreateAccelTable();
if ( menu && menu->HasAccels() )
m_accelWindowMenu = menu->CreateAccelTable();
@@
-571,19
+583,6
@@
WXLRESULT wxMDIParentFrame::MSWWindowProc(WXUINT message,
processed = true;
break;
processed = true;
break;
-
- case WM_ERASEBKGND:
- processed = true;
-
- // we erase background ourselves
- rc = true;
- break;
-
- case WM_SIZE:
- // though we don't (usually) resize the MDI client to exactly fit
- // the client area we need to pass this one to DefFrameProc to
- // allow the children to show
- break;
}
if ( !processed )
}
if ( !processed )
@@
-629,9
+628,7
@@
void wxMDIParentFrame::OnMDIChild(wxCommandEvent& event)
int childId = wxGetWindowId(child->GetHWND());
if ( childId == event.GetId() )
{
int childId = wxGetWindowId(child->GetHWND());
if ( childId == event.GetId() )
{
- ::SendMessage( GetWinHwnd(GetClientWindow()),
- WM_MDIACTIVATE,
- (WPARAM)child->GetHWND(), 0);
+ wxStaticCast(child, wxMDIChildFrame)->Activate();
return;
}
}
return;
}
}
@@
-696,7
+693,7
@@
bool wxMDIParentFrame::TryBefore(wxEvent& event)
if ( event.GetEventType() == wxEVT_COMMAND_MENU_SELECTED )
{
wxMDIChildFrame * const child = GetActiveChild();
if ( event.GetEventType() == wxEVT_COMMAND_MENU_SELECTED )
{
wxMDIChildFrame * const child = GetActiveChild();
- if ( child && child->Process
EventHere
(event) )
+ if ( child && child->Process
WindowEventLocally
(event) )
return true;
}
return true;
}
@@
-796,8
+793,8
@@
bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
if ( !(style & wxFULL_REPAINT_ON_RESIZE) )
className += wxApp::GetNoRedrawClassSuffix();
if ( !(style & wxFULL_REPAINT_ON_RESIZE) )
className += wxApp::GetNoRedrawClassSuffix();
- mcs.szClass = className.
wx
_str();
- mcs.szTitle = title.
wx
_str();
+ mcs.szClass = className.
t
_str();
+ mcs.szTitle = title.
t
_str();
mcs.hOwner = wxGetInstance();
if (x != wxDefaultCoord)
mcs.x = x;
mcs.hOwner = wxGetInstance();
if (x != wxDefaultCoord)
mcs.x = x;
@@
-1038,6
+1035,11
@@
void wxMDIChildFrame::Activate()
wxMDIParentFrame * const parent = GetMDIParent();
if ( parent && parent->GetClientWindow() )
{
wxMDIParentFrame * const parent = GetMDIParent();
if ( parent && parent->GetClientWindow() )
{
+ // Activating an iconized MDI frame doesn't do anything, so restore it
+ // first to really present it to the user.
+ if ( IsIconized() )
+ Restore();
+
::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIACTIVATE,
(WPARAM) GetHwnd(), 0);
}
::SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIACTIVATE,
(WPARAM) GetHwnd(), 0);
}
@@
-1122,7
+1124,7
@@
bool wxMDIChildFrame::HandleMDIActivate(long WXUNUSED(activate),
WXHMENU hMenuParent = parent->m_hMenu;
WXHMENU hMenuParent = parent->m_hMenu;
- // activate the
the
parent menu only when there is no other child
+ // activate the parent menu only when there is no other child
// that has been activated
if ( hMenuParent && !hwndAct )
hMenuToSet = hMenuParent;
// that has been activated
if ( hMenuParent && !hwndAct )
hMenuToSet = hMenuParent;
@@
-1375,7
+1377,7
@@
void wxMDIClientWindow::DoSetSize(int x, int y, int width, int height, int sizeF
while (node)
{
wxWindow *child = node->GetData();
while (node)
{
wxWindow *child = node->GetData();
- if (
child->IsKindOf(CLASSINFO(wxMDIChildFrame)
))
+ if (
wxDynamicCast(child, wxMDIChildFrame
))
{
::RedrawWindow(GetHwndOf(child),
NULL,
{
::RedrawWindow(GetHwndOf(child),
NULL,
@@
-1474,7
+1476,7
@@
void MDIInsertWindowMenu(wxWindow *win, WXHMENU hMenu, HMENU menuWin)
inserted = true;
::InsertMenu(hmenu, i, MF_BYPOSITION | MF_POPUP | MF_STRING,
(UINT_PTR)menuWin,
inserted = true;
::InsertMenu(hmenu, i, MF_BYPOSITION | MF_POPUP | MF_STRING,
(UINT_PTR)menuWin,
- wx
GetTranslation(WINDOW_MENU_LABEL).wx
_str());
+ wx
String(wxGetTranslation(WINDOW_MENU_LABEL)).t
_str());
break;
}
}
break;
}
}
@@
-1483,7
+1485,7
@@
void MDIInsertWindowMenu(wxWindow *win, WXHMENU hMenu, HMENU menuWin)
{
::AppendMenu(hmenu, MF_POPUP,
(UINT_PTR)menuWin,
{
::AppendMenu(hmenu, MF_POPUP,
(UINT_PTR)menuWin,
- wx
GetTranslation(WINDOW_MENU_LABEL).wx
_str());
+ wx
String(wxGetTranslation(WINDOW_MENU_LABEL)).t
_str());
}
}
}
}