#include "wx/frame.h"
#include "wx/app.h"
#include "wx/settings.h"
+#include "wx/intl.h"
+#include "wx/log.h"
#endif
#include "wx/msw/private.h"
wxWindowList wxModelessWindows; // Frames and modeless dialogs
extern wxList WXDLLEXPORT wxPendingDelete;
-#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel)
BEGIN_EVENT_TABLE(wxDialog, wxPanel)
EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged)
EVT_CLOSE(wxDialog::OnCloseWindow)
END_EVENT_TABLE()
-#endif
wxDialog::wxDialog()
{
// Allows creation of dialogs with & without captions under MSWindows,
// resizeable or not (but a resizeable dialog always has caption -
// otherwise it would look too strange)
- const char *dlg;
- if ( style & wxTHICK_FRAME )
- dlg = "wxResizeableDialog";
+ const wxChar *dlg;
+ if ( style & wxRESIZE_BORDER )
+ dlg = wxT("wxResizeableDialog");
else if ( style & wxCAPTION )
- dlg = "wxCaptionDialog";
+ dlg = wxT("wxCaptionDialog");
else
- dlg = "wxNoCaptionDialog";
+ dlg = wxT("wxNoCaptionDialog");
MSWCreate(m_windowId, parent, NULL, this, NULL,
x, y, width, height,
0, // style is not used if we have dlg template
wxTopLevelWindows.DeleteObject(this);
+ Show(FALSE);
+
if (m_modalShowing)
{
- Show(FALSE);
// For some reason, wxWindows can activate another task altogether
// when a frame is destroyed after a modal dialog has been invoked.
// Try to bring the parent to the top.
}
m_modalShowing = FALSE;
- if ( GetHWND() )
- ShowWindow((HWND) GetHWND(), SW_HIDE);
if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL )
wxModelessWindows.DeleteObject(this);
- UnsubclassWin();
-
// If this is the last top-level window, exit.
if (wxTheApp && (wxTopLevelWindows.Number() == 0))
{
cancelEvent.SetEventObject( this );
GetEventHandler()->ProcessEvent(cancelEvent);
+ // ensure that there is another message for this window so the
+ // ShowModal loop will exit and won't get stuck in GetMessage().
+ ::PostMessage(GetHwnd(), WM_NULL, 0, 0);
return;
}
}
return m_isShown;
}
+bool wxDialog::IsModal() const
+{
+ return wxModalDialogs.Find((wxDialog *)this) != 0; // const_cast
+}
+
bool wxDialog::Show(bool show)
{
m_isShown = show;
if (hWndParent)
::BringWindowToTop(hWndParent);
}
- ShowWindow((HWND) GetHWND(), SW_HIDE);
+
+ if ( m_hWnd )
+ ShowWindow((HWND) GetHWND(), SW_HIDE);
}
}
return TRUE;
void wxDialog::SetTitle(const wxString& title)
{
- SetWindowText((HWND) GetHWND(), (const char *)title);
+ SetWindowText((HWND) GetHWND(), title.c_str());
}
wxString wxDialog::GetTitle() const