/////////////////////////////////////////////////////////////////////////////
-// Name: motif/toplevel.cpp
+// Name: src/motif/toplevel.cpp
// Purpose: wxTopLevelWindow Motif implementation
// Author: Mattia Barbon
// Modified by:
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "toplevel.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/toplevel.h"
+#include "wx/settings.h"
#include "wx/app.h"
+#ifndef WX_PRECOMP
+ #include "wx/app.h"
+#endif
+
#ifdef __VMS__
-#define XtDisplay XTDISPLAY
-#define XtParent XTPARENT
-#define XtScreen XTSCREEN
-#define XtWindow XTWINDOW
#pragma message disable nosimpint
#endif
void wxTopLevelWindowMotif::PreDestroy()
{
-#ifdef __VMS
-#pragma message disable codcauunr
-#endif
- if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL )
- wxModelessWindows.DeleteObject(this);
-#ifdef __VMS
-#pragma message enable codcauunr
-#endif
-
- m_icons.m_icons.Empty();
+ wxModelessWindows.DeleteObject(this);
DestroyChildren();
if ( parent )
parent->AddChild(this);
-
+
wxTopLevelWindows.Append(this);
m_windowId = ( id > -1 ) ? id : NewControlId();
+ // MBN: More backward compatible, but uglier
+ m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ m_inheritFont = true;
- bool retval = DoCreate( parent, id, title, pos, size, style, name );
+ bool retval = XmDoCreateTLW( parent, id, title, pos, size, style, name );
if( !retval ) return false;
// Modified Steve Hammes for Motif 2.0
#if (XmREVISION > 1 || XmVERSION > 1)
XmAddWMProtocolCallback( shell, WM_DELETE_WINDOW,
- (XtCallbackProc)wxCloseTLWCallback,
+ (XtCallbackProc)wxCloseTLWCallback,
(XtPointer)this );
#elif XmREVISION == 1
XmAddWMProtocolCallback( shell, WM_DELETE_WINDOW,
if( XmIsMotifWMRunning( shell ) )
{
int decor = 0 ;
+ if( !(m_windowStyle & wxNO_BORDER) )
+ decor |= MWM_DECOR_BORDER;
if( m_windowStyle & wxRESIZE_BORDER )
decor |= MWM_DECOR_RESIZEH;
if( m_windowStyle & wxSYSTEM_MENU )
decor |= MWM_DECOR_MENU;
if( ( m_windowStyle & wxCAPTION ) ||
- ( m_windowStyle & wxTINY_CAPTION_HORIZ ) ||
- ( m_windowStyle & wxTINY_CAPTION_VERT ) )
+ ( m_windowStyle & wxTINY_CAPTION) )
decor |= MWM_DECOR_TITLE;
- if( m_windowStyle & wxTHICK_FRAME )
+ if( m_windowStyle & wxRESIZE_BORDER )
decor |= MWM_DECOR_BORDER;
if( m_windowStyle & wxMINIMIZE_BOX )
decor |= MWM_DECOR_MINIMIZE;
}
XtAddEventHandler( (Widget)GetClientWidget(),
- ButtonPressMask | ButtonReleaseMask |
+ ButtonPressMask | ButtonReleaseMask |
PointerMotionMask | KeyPressMask,
False,
wxTLWEventHandler,
return (WXWidget) GetShell( this );
}
-bool wxTopLevelWindowMotif::ShowFullScreen( bool show,
- long style )
+bool wxTopLevelWindowMotif::ShowFullScreen( bool WXUNUSED(show),
+ long WXUNUSED(style) )
{
// TODO, see wxGTK
return false;
XmNiconic, &iconic,
NULL );
- return iconic;
+ return (iconic == True);
}
void wxTopLevelWindowMotif::Maximize( bool maximize )
if( incW > -1 ) { XtSetArg( args[count], XmNwidthInc, incW ); ++count; }
if( incH > -1 ) { XtSetArg( args[count], XmNheightInc, incH ); ++count; }
- XtSetValues( (Widget)GetShellWidget(), args, count );
+ XtSetValues( (Widget)GetShellWidget(), args, count );
}
bool wxTopLevelWindowMotif::SetShape( const wxRegion& region )
closeEvent.SetEventObject( tlw );
// May delete the dialog (with delayed deletion)
- tlw->GetEventHandler()->ProcessEvent(closeEvent);
+ tlw->HandleWindowEvent(closeEvent);
}
void wxTLWEventHandler( Widget wid,
{
wxevent.SetEventObject( tlw );
wxevent.SetId( tlw->GetId() );
- tlw->GetEventHandler()->ProcessEvent( wxevent );
+ tlw->HandleWindowEvent( wxevent );
}
else
{
keyEvent.SetEventObject( tlw );
keyEvent.SetId( tlw->GetId() );
keyEvent.SetEventType( wxEVT_CHAR_HOOK );
- if( tlw->GetEventHandler()->ProcessEvent( keyEvent ) )
+ if( tlw->HandleWindowEvent( keyEvent ) )
{
*continueToDispatch = False;
return;
keyEvent.SetEventType( wxEVT_KEY_DOWN );
// Only process OnChar if OnKeyDown didn't swallow it
- if( !tlw->GetEventHandler()->ProcessEvent( keyEvent ) )
+ if( !tlw->HandleWindowEvent( keyEvent ) )
{
keyEvent.SetEventType( wxEVT_CHAR );
- tlw->GetEventHandler()->ProcessEvent( keyEvent );
+ tlw->HandleWindowEvent( keyEvent );
}
}
}
*continueToDispatch = True;
}
-