Changed the way ApplicationShells are used: now wxMotif

creates one ApplicationShell per display, and makes top
level windows popup childs of the ApplicationShell.
  Removed a couple of unused variables from wxApp.
  Replaced some calls to wxGetDisplay with XtDisplay(widget)
or event.xany.display, and some others with wxGlobalDisplay
(the latter changes are just eyecandy).
  Used wxFlushEvents where appropriate.
  Fixed (hopefully) wxFindAcceleratorText and wxFindAccelerator;
for now the new version is still disabled, awaiting further testing.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Mattia Barbon
2003-05-04 17:40:46 +00:00
parent b0feedc5db
commit eb6fa4b425
12 changed files with 176 additions and 204 deletions

View File

@@ -88,10 +88,6 @@ static void wxFrameMapProc(Widget frameShell, XtPointer clientData,
extern wxList wxModelessWindows;
extern wxList wxPendingDelete;
// TODO: this should be tidied so that any frame can be the
// top frame
// static bool wxTopLevelUsed = FALSE;
// ----------------------------------------------------------------------------
// wxWin macros
// ----------------------------------------------------------------------------
@@ -120,7 +116,6 @@ void wxFrame::Init()
m_mainWidget = (WXWidget) NULL;;
m_workArea = (WXWidget) NULL;;
m_clientArea = (WXWidget) NULL;;
// m_visibleStatus = TRUE;
}
bool wxFrame::Create(wxWindow *parent,
@@ -206,25 +201,13 @@ bool wxFrame::DoCreate( wxWindow* parent, wxWindowID id,
long style,
const wxString& name )
{
static bool wxTopLevelUsed = FALSE; /* this is global */
WXWidget frameShell;
Widget frameShell;
if (wxTopLevelUsed)
{
// Change suggested by Matthew Flatt
frameShell = (WXWidget)XtAppCreateShell( name,
wxTheApp->GetClassName(),
topLevelShellWidgetClass,
(Display*) wxGetDisplay(),
NULL, 0 );
}
else
{
frameShell = wxTheApp->GetTopLevelWidget();
wxTopLevelUsed = TRUE;
}
frameShell = XtCreatePopupShell( name, topLevelShellWidgetClass,
(Widget)wxTheApp->GetTopLevelWidget(),
NULL, 0 );
XtVaSetValues((Widget) frameShell,
XtVaSetValues(frameShell,
// Allows menu to resize
XmNallowShellResize, True,
XmNdeleteResponse, XmDO_NOTHING,
@@ -232,10 +215,10 @@ bool wxFrame::DoCreate( wxWindow* parent, wxWindowID id,
XmNiconic, (style & wxICONIZE) ? TRUE : FALSE,
NULL);
m_frameShell = frameShell;
m_frameShell = (WXWidget)frameShell;
m_mainWidget = (WXWidget) XtVaCreateManagedWidget("main_window",
xmMainWindowWidgetClass, (Widget) frameShell,
xmMainWindowWidgetClass, frameShell,
XmNresizePolicy, XmRESIZE_NONE,
NULL);
@@ -266,11 +249,11 @@ bool wxFrame::DoCreate( wxWindow* parent, wxWindowID id,
XtFree( (char *)ptr );
/* Part of show-&-hide fix */
XtAddEventHandler( (Widget)frameShell, StructureNotifyMask,
XtAddEventHandler( frameShell, StructureNotifyMask,
False, (XtEventHandler)wxFrameMapProc,
(XtPointer)this );
XtRealizeWidget((Widget) frameShell);
XtRealizeWidget(frameShell);
wxAddWindowToTable( (Widget)m_workArea, this);
wxAddWindowToTable( (Widget)m_clientArea, this);