Get/SetTitle only for wxTopLevelWindow (wxX11 part, final)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36150 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -154,23 +154,10 @@ public:
|
|||||||
// return true if the frame is in fullscreen mode
|
// return true if the frame is in fullscreen mode
|
||||||
virtual bool IsFullScreen() const = 0;
|
virtual bool IsFullScreen() const = 0;
|
||||||
|
|
||||||
#if defined(__WXMSW__) || \
|
// the title of the top level window: the text which the
|
||||||
defined(__WXMGL__) || \
|
// window shows usually at the top of the frame/dialog in dedicated bar
|
||||||
defined(__WXMOTIF__) || \
|
|
||||||
defined(__WXPM__) || \
|
|
||||||
defined(__WXMAC__) || \
|
|
||||||
defined(__WXCOCOA__) || \
|
|
||||||
defined(__WXGTK__)
|
|
||||||
|
|
||||||
// FIXME: This is work in progress about moving SetTitle/GetTitle from wxWindow
|
|
||||||
// to wxTopLevelWindow so initially enabled in wxMSW only to observe results
|
|
||||||
// and continue on other platforms
|
|
||||||
|
|
||||||
// the title (or label, see below) of the window: the text which the
|
|
||||||
// window shows
|
|
||||||
virtual void SetTitle(const wxString& title) = 0;
|
virtual void SetTitle(const wxString& title) = 0;
|
||||||
virtual wxString GetTitle() const = 0;
|
virtual wxString GetTitle() const = 0;
|
||||||
#endif
|
|
||||||
|
|
||||||
// Set the shape of the window to the given region.
|
// Set the shape of the window to the given region.
|
||||||
// Returns true if the platform supports this feature (and the
|
// Returns true if the platform supports this feature (and the
|
||||||
|
@@ -168,31 +168,11 @@ public:
|
|||||||
// window attributes
|
// window attributes
|
||||||
// -----------------
|
// -----------------
|
||||||
|
|
||||||
#if !defined(__WXMSW__) && \
|
// label is just the same as the title (but for, e.g., buttons it
|
||||||
!defined(__WXMGL__) && \
|
// makes more sense to speak about labels), title access
|
||||||
!defined(__WXMOTIF__) && \
|
// is available from wxTLW classes only (frames, dialogs)
|
||||||
!defined(__WXPM__) && \
|
|
||||||
!defined(__WXMAC__) && \
|
|
||||||
!defined(__WXCOCOA__) && \
|
|
||||||
!defined(__WXGTK__)
|
|
||||||
|
|
||||||
// FIXME: This is work in progress about moving SetTitle/GetTitle from wxWindow
|
|
||||||
// to wxTopLevelWindow so initially enabled in wxMSW only to observe results
|
|
||||||
// and continue on other platforms
|
|
||||||
|
|
||||||
virtual void SetTitle( const wxString& WXUNUSED(title) ) {}
|
|
||||||
virtual wxString GetTitle() const { return wxEmptyString; }
|
|
||||||
|
|
||||||
// label is just the same as the title (but for, e.g., buttons it
|
|
||||||
// makes more sense to speak about labels)
|
|
||||||
virtual void SetLabel(const wxString& label) { SetTitle(label); }
|
|
||||||
virtual wxString GetLabel() const { return GetTitle(); }
|
|
||||||
#else
|
|
||||||
// label is just the same as the title (but for, e.g., buttons it
|
|
||||||
// makes more sense to speak about labels)
|
|
||||||
virtual void SetLabel(const wxString& label) = 0;
|
virtual void SetLabel(const wxString& label) = 0;
|
||||||
virtual wxString GetLabel() const = 0;
|
virtual wxString GetLabel() const = 0;
|
||||||
#endif
|
|
||||||
|
|
||||||
// the window name is used for ressource setting in X, it is not the
|
// the window name is used for ressource setting in X, it is not the
|
||||||
// same as the window title/label
|
// same as the window title/label
|
||||||
|
@@ -46,30 +46,30 @@ public:
|
|||||||
virtual ~wxTopLevelWindowX11();
|
virtual ~wxTopLevelWindowX11();
|
||||||
|
|
||||||
// implement base class pure virtuals
|
// implement base class pure virtuals
|
||||||
virtual void Maximize(bool maximize = TRUE);
|
virtual void Maximize(bool maximize = true);
|
||||||
virtual bool IsMaximized() const;
|
virtual bool IsMaximized() const;
|
||||||
virtual void Iconize(bool iconize = TRUE);
|
virtual void Iconize(bool iconize = true);
|
||||||
virtual bool IsIconized() const;
|
virtual bool IsIconized() const;
|
||||||
virtual void SetIcon(const wxIcon& icon) { SetIcons( wxIconBundle( icon ) ); }
|
virtual void SetIcon(const wxIcon& icon) { SetIcons( wxIconBundle( icon ) ); }
|
||||||
virtual void SetIcons(const wxIconBundle& icons);
|
virtual void SetIcons(const wxIconBundle& icons);
|
||||||
virtual void Restore();
|
virtual void Restore();
|
||||||
|
|
||||||
virtual bool Show( bool show = TRUE );
|
virtual bool Show( bool show = true );
|
||||||
|
|
||||||
virtual bool ShowFullScreen( bool show, long style = wxFULLSCREEN_ALL );
|
virtual bool ShowFullScreen( bool show, long style = wxFULLSCREEN_ALL );
|
||||||
virtual bool IsFullScreen() const { return m_fsIsShowing; }
|
virtual bool IsFullScreen() const { return m_fsIsShowing; }
|
||||||
|
|
||||||
virtual void SetTitle( const wxString& title);
|
virtual void SetTitle( const wxString& title);
|
||||||
virtual wxString GetTitle() const;
|
virtual wxString GetTitle() const;
|
||||||
|
|
||||||
// implementation
|
// implementation
|
||||||
void SetNeedResizeInIdle( bool set = TRUE )
|
void SetNeedResizeInIdle( bool set = true )
|
||||||
{ m_needResizeInIdle = set; }
|
{ m_needResizeInIdle = set; }
|
||||||
void SetConfigureGeometry( int x, int y, int width, int height )
|
void SetConfigureGeometry( int x, int y, int width, int height )
|
||||||
{ m_x = x; m_y = y; m_width = width; m_height = height; }
|
{ m_x = x; m_y = y; m_width = width; m_height = height; }
|
||||||
|
|
||||||
virtual bool SetShape(const wxRegion& region);
|
virtual bool SetShape(const wxRegion& region);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// common part of all ctors
|
// common part of all ctors
|
||||||
void Init();
|
void Init();
|
||||||
@@ -92,7 +92,7 @@ protected:
|
|||||||
int width, int height,
|
int width, int height,
|
||||||
int sizeFlags = wxSIZE_AUTO);
|
int sizeFlags = wxSIZE_AUTO);
|
||||||
virtual void DoGetPosition( int *x, int *y ) const;
|
virtual void DoGetPosition( int *x, int *y ) const;
|
||||||
|
|
||||||
// Is the frame currently iconized?
|
// Is the frame currently iconized?
|
||||||
bool m_iconized;
|
bool m_iconized;
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ protected:
|
|||||||
bool m_fsIsMaximized;
|
bool m_fsIsMaximized;
|
||||||
bool m_fsIsShowing;
|
bool m_fsIsShowing;
|
||||||
wxString m_title;
|
wxString m_title;
|
||||||
|
|
||||||
// Geometry
|
// Geometry
|
||||||
int m_x,m_y,m_width,m_height;
|
int m_x,m_y,m_width,m_height;
|
||||||
};
|
};
|
||||||
@@ -115,4 +115,3 @@ protected:
|
|||||||
//extern WXDLLEXPORT_DATA(wxWindowList) wxModelessWindows;
|
//extern WXDLLEXPORT_DATA(wxWindowList) wxModelessWindows;
|
||||||
|
|
||||||
#endif // _WX_X11_TOPLEVEL_H_
|
#endif // _WX_X11_TOPLEVEL_H_
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: window.h
|
// Name: wx/x11/window.h
|
||||||
// Purpose: wxWindow class
|
// Purpose: wxWindow class
|
||||||
// Author: Julian Smart
|
// Author: Julian Smart
|
||||||
// Modified by:
|
// Modified by:
|
||||||
@@ -22,10 +22,10 @@ class WXDLLIMPEXP_CORE wxWindowX11 : public wxWindowBase
|
|||||||
{
|
{
|
||||||
friend class WXDLLEXPORT wxDC;
|
friend class WXDLLEXPORT wxDC;
|
||||||
friend class WXDLLEXPORT wxWindowDC;
|
friend class WXDLLEXPORT wxWindowDC;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxWindowX11() { Init(); }
|
wxWindowX11() { Init(); }
|
||||||
|
|
||||||
wxWindowX11(wxWindow *parent,
|
wxWindowX11(wxWindow *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
@@ -36,36 +36,39 @@ public:
|
|||||||
Init();
|
Init();
|
||||||
Create(parent, id, pos, size, style, name);
|
Create(parent, id, pos, size, style, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~wxWindowX11();
|
virtual ~wxWindowX11();
|
||||||
|
|
||||||
bool Create(wxWindow *parent,
|
bool Create(wxWindow *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxPoint& pos = wxDefaultPosition,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
long style = 0,
|
long style = 0,
|
||||||
const wxString& name = wxPanelNameStr);
|
const wxString& name = wxPanelNameStr);
|
||||||
|
|
||||||
virtual void Raise();
|
virtual void Raise();
|
||||||
virtual void Lower();
|
virtual void Lower();
|
||||||
|
|
||||||
virtual bool Show( bool show = TRUE );
|
virtual void SetLabel(const wxString& label);
|
||||||
virtual bool Enable( bool enable = TRUE );
|
virtual wxString GetLabel() const;
|
||||||
|
|
||||||
|
virtual bool Show( bool show = true );
|
||||||
|
virtual bool Enable( bool enable = true );
|
||||||
|
|
||||||
virtual void SetFocus();
|
virtual void SetFocus();
|
||||||
|
|
||||||
virtual void WarpPointer(int x, int y);
|
virtual void WarpPointer(int x, int y);
|
||||||
|
|
||||||
virtual void Refresh( bool eraseBackground = TRUE,
|
virtual void Refresh( bool eraseBackground = true,
|
||||||
const wxRect *rect = (const wxRect *) NULL );
|
const wxRect *rect = (const wxRect *) NULL );
|
||||||
virtual void Update();
|
virtual void Update();
|
||||||
|
|
||||||
virtual bool SetBackgroundColour( const wxColour &colour );
|
virtual bool SetBackgroundColour( const wxColour &colour );
|
||||||
virtual bool SetForegroundColour( const wxColour &colour );
|
virtual bool SetForegroundColour( const wxColour &colour );
|
||||||
|
|
||||||
virtual bool SetCursor( const wxCursor &cursor );
|
virtual bool SetCursor( const wxCursor &cursor );
|
||||||
virtual bool SetFont( const wxFont &font );
|
virtual bool SetFont( const wxFont &font );
|
||||||
|
|
||||||
virtual int GetCharHeight() const;
|
virtual int GetCharHeight() const;
|
||||||
virtual int GetCharWidth() const;
|
virtual int GetCharWidth() const;
|
||||||
virtual void GetTextExtent(const wxString& string,
|
virtual void GetTextExtent(const wxString& string,
|
||||||
@@ -74,91 +77,91 @@ public:
|
|||||||
int *externalLeading = (int *) NULL,
|
int *externalLeading = (int *) NULL,
|
||||||
const wxFont *theFont = (const wxFont *) NULL)
|
const wxFont *theFont = (const wxFont *) NULL)
|
||||||
const;
|
const;
|
||||||
|
|
||||||
virtual void ScrollWindow( int dx, int dy,
|
virtual void ScrollWindow( int dx, int dy,
|
||||||
const wxRect* rect = (wxRect *) NULL );
|
const wxRect* rect = (wxRect *) NULL );
|
||||||
|
|
||||||
virtual void DoSetSizeHints(int minW, int minH,
|
virtual void DoSetSizeHints(int minW, int minH,
|
||||||
int maxW = -1, int maxH = -1,
|
int maxW = wxDefaultCoord, int maxH = wxDefaultCoord,
|
||||||
int incW = -1, int incH = -1);
|
int incW = wxDefaultCoord, int incH = wxDefaultCoord);
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
virtual void SetDropTarget( wxDropTarget *dropTarget );
|
virtual void SetDropTarget( wxDropTarget *dropTarget );
|
||||||
#endif // wxUSE_DRAG_AND_DROP
|
#endif // wxUSE_DRAG_AND_DROP
|
||||||
|
|
||||||
// Accept files for dragging
|
// Accept files for dragging
|
||||||
virtual void DragAcceptFiles(bool accept);
|
virtual void DragAcceptFiles(bool accept);
|
||||||
|
|
||||||
// Get the unique identifier of a window
|
// Get the unique identifier of a window
|
||||||
virtual WXWindow GetHandle() const { return GetMainWindow(); }
|
virtual WXWindow GetHandle() const { return GetMainWindow(); }
|
||||||
|
|
||||||
// implementation from now on
|
// implementation from now on
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
||||||
// accessors
|
// accessors
|
||||||
// ---------
|
// ---------
|
||||||
|
|
||||||
// Get main X11 window
|
// Get main X11 window
|
||||||
virtual WXWindow GetMainWindow() const;
|
virtual WXWindow GetMainWindow() const;
|
||||||
|
|
||||||
// Get X11 window representing the client area
|
// Get X11 window representing the client area
|
||||||
virtual WXWindow GetClientAreaWindow() const;
|
virtual WXWindow GetClientAreaWindow() const;
|
||||||
|
|
||||||
void SetLastClick(int button, long timestamp)
|
void SetLastClick(int button, long timestamp)
|
||||||
{ m_lastButton = button; m_lastTS = timestamp; }
|
{ m_lastButton = button; m_lastTS = timestamp; }
|
||||||
|
|
||||||
int GetLastClickedButton() const { return m_lastButton; }
|
int GetLastClickedButton() const { return m_lastButton; }
|
||||||
long GetLastClickTime() const { return m_lastTS; }
|
long GetLastClickTime() const { return m_lastTS; }
|
||||||
|
|
||||||
// Gives window a chance to do something in response to a size message, e.g.
|
// Gives window a chance to do something in response to a size message, e.g.
|
||||||
// arrange status bar, toolbar etc.
|
// arrange status bar, toolbar etc.
|
||||||
virtual bool PreResize();
|
virtual bool PreResize();
|
||||||
|
|
||||||
// Generates paint events from m_updateRegion
|
// Generates paint events from m_updateRegion
|
||||||
void SendPaintEvents();
|
void SendPaintEvents();
|
||||||
|
|
||||||
// Generates paint events from flag
|
// Generates paint events from flag
|
||||||
void SendNcPaintEvents();
|
void SendNcPaintEvents();
|
||||||
|
|
||||||
// Generates erase events from m_clearRegion
|
// Generates erase events from m_clearRegion
|
||||||
void SendEraseEvents();
|
void SendEraseEvents();
|
||||||
|
|
||||||
// Clip to paint region?
|
// Clip to paint region?
|
||||||
bool GetClipPaintRegion() { return m_clipPaintRegion; }
|
bool GetClipPaintRegion() { return m_clipPaintRegion; }
|
||||||
|
|
||||||
// Return clear region
|
// Return clear region
|
||||||
wxRegion &GetClearRegion() { return m_clearRegion; }
|
wxRegion &GetClearRegion() { return m_clearRegion; }
|
||||||
|
|
||||||
void NeedUpdateNcAreaInIdle( bool update = TRUE ) { m_updateNcArea = update; }
|
void NeedUpdateNcAreaInIdle( bool update = true ) { m_updateNcArea = update; }
|
||||||
|
|
||||||
// Inserting into main window instead of client
|
// Inserting into main window instead of client
|
||||||
// window. This is mostly for a wxWindow's own
|
// window. This is mostly for a wxWindow's own
|
||||||
// scrollbars.
|
// scrollbars.
|
||||||
void SetInsertIntoMain( bool insert = TRUE ) { m_insertIntoMain = insert; }
|
void SetInsertIntoMain( bool insert = true ) { m_insertIntoMain = insert; }
|
||||||
bool GetInsertIntoMain() { return m_insertIntoMain; }
|
bool GetInsertIntoMain() { return m_insertIntoMain; }
|
||||||
|
|
||||||
// sets the fore/background colour for the given widget
|
// sets the fore/background colour for the given widget
|
||||||
static void DoChangeForegroundColour(WXWindow widget, wxColour& foregroundColour);
|
static void DoChangeForegroundColour(WXWindow widget, wxColour& foregroundColour);
|
||||||
static void DoChangeBackgroundColour(WXWindow widget, wxColour& backgroundColour, bool changeArmColour = FALSE);
|
static void DoChangeBackgroundColour(WXWindow widget, wxColour& backgroundColour, bool changeArmColour = false);
|
||||||
|
|
||||||
// I don't want users to override what's done in idle so everything that
|
// I don't want users to override what's done in idle so everything that
|
||||||
// has to be done in idle time in order for wxX11 to work is done in
|
// has to be done in idle time in order for wxX11 to work is done in
|
||||||
// OnInternalIdle
|
// OnInternalIdle
|
||||||
virtual void OnInternalIdle();
|
virtual void OnInternalIdle();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Responds to colour changes: passes event on to children.
|
// Responds to colour changes: passes event on to children.
|
||||||
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
||||||
|
|
||||||
// For double-click detection
|
// For double-click detection
|
||||||
long m_lastTS; // last timestamp
|
long m_lastTS; // last timestamp
|
||||||
int m_lastButton; // last pressed button
|
int m_lastButton; // last pressed button
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
WXWindow m_mainWindow;
|
WXWindow m_mainWindow;
|
||||||
WXWindow m_clientWindow;
|
WXWindow m_clientWindow;
|
||||||
bool m_insertIntoMain;
|
bool m_insertIntoMain;
|
||||||
|
|
||||||
bool m_winCaptured;
|
bool m_winCaptured;
|
||||||
wxRegion m_clearRegion;
|
wxRegion m_clearRegion;
|
||||||
bool m_clipPaintRegion;
|
bool m_clipPaintRegion;
|
||||||
@@ -182,11 +185,11 @@ protected:
|
|||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
virtual void DoSetToolTip( wxToolTip *tip );
|
virtual void DoSetToolTip( wxToolTip *tip );
|
||||||
#endif // wxUSE_TOOLTIPS
|
#endif // wxUSE_TOOLTIPS
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// common part of all ctors
|
// common part of all ctors
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxWindowX11)
|
DECLARE_DYNAMIC_CLASS(wxWindowX11)
|
||||||
DECLARE_NO_COPY_CLASS(wxWindowX11)
|
DECLARE_NO_COPY_CLASS(wxWindowX11)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
@@ -208,12 +211,11 @@ class WXDLLEXPORT wxNoOptimize
|
|||||||
public:
|
public:
|
||||||
wxNoOptimize() { ms_count++; }
|
wxNoOptimize() { ms_count++; }
|
||||||
~wxNoOptimize() { ms_count--; }
|
~wxNoOptimize() { ms_count--; }
|
||||||
|
|
||||||
static bool CanOptimize() { return ms_count == 0; }
|
static bool CanOptimize() { return ms_count == 0; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static int ms_count;
|
static int ms_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif // _WX_WINDOW_H_
|
||||||
// _WX_WINDOW_H_
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: x11/toplevel.cpp
|
// Name: src/x11/toplevel.cpp
|
||||||
// Purpose: implements wxTopLevelWindow for X11
|
// Purpose: implements wxTopLevelWindow for X11
|
||||||
// Author: Julian Smart
|
// Author: Julian Smart
|
||||||
// Modified by:
|
// Modified by:
|
||||||
@@ -50,20 +50,20 @@ bool wxMWMIsRunning(Window w);
|
|||||||
void wxTopLevelWindowX11::Init()
|
void wxTopLevelWindowX11::Init()
|
||||||
{
|
{
|
||||||
m_iconized =
|
m_iconized =
|
||||||
m_maximizeOnShow = FALSE;
|
m_maximizeOnShow = false;
|
||||||
|
|
||||||
// unlike (almost?) all other windows, frames are created hidden
|
// unlike (almost?) all other windows, frames are created hidden
|
||||||
m_isShown = FALSE;
|
m_isShown = false;
|
||||||
|
|
||||||
// Data to save/restore when calling ShowFullScreen
|
// Data to save/restore when calling ShowFullScreen
|
||||||
m_fsStyle = 0;
|
m_fsStyle = 0;
|
||||||
m_fsIsMaximized = FALSE;
|
m_fsIsMaximized = false;
|
||||||
m_fsIsShowing = FALSE;
|
m_fsIsShowing = false;
|
||||||
|
|
||||||
m_needResizeInIdle = FALSE;
|
m_needResizeInIdle = false;
|
||||||
|
|
||||||
m_x = -1;
|
m_x = wxDefaultCoord;
|
||||||
m_y = -1;
|
m_y = wxDefaultCoord;
|
||||||
m_width = 20;
|
m_width = 20;
|
||||||
m_height = 20;
|
m_height = 20;
|
||||||
}
|
}
|
||||||
@@ -84,45 +84,45 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
|
|
||||||
SetName(name);
|
SetName(name);
|
||||||
|
|
||||||
m_windowId = id == -1 ? NewControlId() : id;
|
m_windowId = id == wxID_ANY ? NewControlId() : id;
|
||||||
|
|
||||||
if (parent)
|
if (parent)
|
||||||
parent->AddChild(this);
|
parent->AddChild(this);
|
||||||
|
|
||||||
wxTopLevelWindows.Append(this);
|
wxTopLevelWindows.Append(this);
|
||||||
|
|
||||||
Display *xdisplay = wxGlobalDisplay();
|
Display *xdisplay = wxGlobalDisplay();
|
||||||
int xscreen = DefaultScreen( xdisplay );
|
int xscreen = DefaultScreen( xdisplay );
|
||||||
Visual *xvisual = DefaultVisual( xdisplay, xscreen );
|
Visual *xvisual = DefaultVisual( xdisplay, xscreen );
|
||||||
Window xparent = RootWindow( xdisplay, xscreen );
|
Window xparent = RootWindow( xdisplay, xscreen );
|
||||||
Colormap cm = DefaultColormap( xdisplay, xscreen );
|
Colormap cm = DefaultColormap( xdisplay, xscreen );
|
||||||
|
|
||||||
if (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG)
|
if (GetExtraStyle() & wxTOPLEVEL_EX_DIALOG)
|
||||||
m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
|
m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
|
||||||
else
|
else
|
||||||
m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE);
|
m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE);
|
||||||
m_backgroundColour.CalcPixel( (WXColormap) cm );
|
m_backgroundColour.CalcPixel( (WXColormap) cm );
|
||||||
m_hasBgCol = TRUE;
|
m_hasBgCol = true;
|
||||||
|
|
||||||
m_x = pos.x;
|
m_x = pos.x;
|
||||||
if (m_x < -1)
|
if (m_x < -1)
|
||||||
m_x = 10;
|
m_x = 10;
|
||||||
|
|
||||||
m_y = pos.y;
|
m_y = pos.y;
|
||||||
if (m_y < 0)
|
if (m_y < 0)
|
||||||
m_y = 10;
|
m_y = 10;
|
||||||
|
|
||||||
m_width = size.x;
|
m_width = size.x;
|
||||||
if (m_width < 0)
|
if (m_width < 0)
|
||||||
m_width = 500;
|
m_width = 500;
|
||||||
|
|
||||||
m_height = size.y;
|
m_height = size.y;
|
||||||
if (m_height < 0)
|
if (m_height < 0)
|
||||||
m_height = 380;
|
m_height = 380;
|
||||||
|
|
||||||
#if !wxUSE_NANOX
|
#if !wxUSE_NANOX
|
||||||
XSetWindowAttributes xattributes;
|
XSetWindowAttributes xattributes;
|
||||||
|
|
||||||
long xattributes_mask =
|
long xattributes_mask =
|
||||||
CWBorderPixel | CWBackPixel;
|
CWBorderPixel | CWBackPixel;
|
||||||
|
|
||||||
@@ -134,27 +134,27 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
xattributes_mask |= CWOverrideRedirect;
|
xattributes_mask |= CWOverrideRedirect;
|
||||||
xattributes.override_redirect = True;
|
xattributes.override_redirect = True;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!HasFlag( wxFULL_REPAINT_ON_RESIZE ))
|
if (!HasFlag( wxFULL_REPAINT_ON_RESIZE ))
|
||||||
{
|
{
|
||||||
xattributes_mask |= CWBitGravity;
|
xattributes_mask |= CWBitGravity;
|
||||||
xattributes.bit_gravity = NorthWestGravity;
|
xattributes.bit_gravity = NorthWestGravity;
|
||||||
}
|
}
|
||||||
|
|
||||||
xattributes_mask |= CWEventMask;
|
xattributes_mask |= CWEventMask;
|
||||||
xattributes.event_mask =
|
xattributes.event_mask =
|
||||||
ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
|
ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
|
||||||
ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask |
|
ButtonMotionMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask |
|
||||||
KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask |
|
KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask |
|
||||||
PropertyChangeMask;
|
PropertyChangeMask;
|
||||||
|
|
||||||
Window xwindow = XCreateWindow( xdisplay, xparent, m_x, m_y, m_width, m_height,
|
Window xwindow = XCreateWindow( xdisplay, xparent, m_x, m_y, m_width, m_height,
|
||||||
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
|
0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
|
||||||
#else
|
#else
|
||||||
long backColor, foreColor;
|
long backColor, foreColor;
|
||||||
backColor = GR_RGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue());
|
backColor = GR_RGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue());
|
||||||
foreColor = GR_RGB(m_foregroundColour.Red(), m_foregroundColour.Green(), m_foregroundColour.Blue());
|
foreColor = GR_RGB(m_foregroundColour.Red(), m_foregroundColour.Green(), m_foregroundColour.Blue());
|
||||||
|
|
||||||
Window xwindow = XCreateWindowWithColor( xdisplay, xparent, m_x, m_y, m_width, m_height,
|
Window xwindow = XCreateWindowWithColor( xdisplay, xparent, m_x, m_y, m_width, m_height,
|
||||||
0, 0, InputOutput, xvisual, backColor, foreColor);
|
0, 0, InputOutput, xvisual, backColor, foreColor);
|
||||||
#endif
|
#endif
|
||||||
@@ -213,11 +213,11 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
size_hints.height = m_height;
|
size_hints.height = m_height;
|
||||||
size_hints.win_gravity = NorthWestGravity;
|
size_hints.win_gravity = NorthWestGravity;
|
||||||
XSetWMNormalHints( xdisplay, xwindow, &size_hints);
|
XSetWMNormalHints( xdisplay, xwindow, &size_hints);
|
||||||
|
|
||||||
XWMHints wm_hints;
|
XWMHints wm_hints;
|
||||||
wm_hints.flags = InputHint | StateHint;
|
wm_hints.flags = InputHint | StateHint;
|
||||||
if (GetParent())
|
if (GetParent())
|
||||||
{
|
{
|
||||||
wm_hints.flags |= WindowGroupHint;
|
wm_hints.flags |= WindowGroupHint;
|
||||||
wm_hints.window_group = (Window) GetParent()->GetMainWindow();
|
wm_hints.window_group = (Window) GetParent()->GetMainWindow();
|
||||||
}
|
}
|
||||||
@@ -231,12 +231,12 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
|
|||||||
XSetWMProtocols( xdisplay, xwindow, wm_protocols, 2);
|
XSetWMProtocols( xdisplay, xwindow, wm_protocols, 2);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxSetWMDecorations( xwindow, style);
|
wxSetWMDecorations( xwindow, style);
|
||||||
|
|
||||||
SetTitle(title);
|
SetTitle(title);
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxTopLevelWindowX11::~wxTopLevelWindowX11()
|
wxTopLevelWindowX11::~wxTopLevelWindowX11()
|
||||||
@@ -259,7 +259,7 @@ wxTopLevelWindowX11::~wxTopLevelWindowX11()
|
|||||||
void wxTopLevelWindowX11::OnInternalIdle()
|
void wxTopLevelWindowX11::OnInternalIdle()
|
||||||
{
|
{
|
||||||
wxWindow::OnInternalIdle();
|
wxWindow::OnInternalIdle();
|
||||||
|
|
||||||
// Do this only after the last idle event so that
|
// Do this only after the last idle event so that
|
||||||
// all windows have been updated before a new
|
// all windows have been updated before a new
|
||||||
// round of size events is sent
|
// round of size events is sent
|
||||||
@@ -268,8 +268,8 @@ void wxTopLevelWindowX11::OnInternalIdle()
|
|||||||
wxSizeEvent event( GetClientSize(), GetId() );
|
wxSizeEvent event( GetClientSize(), GetId() );
|
||||||
event.SetEventObject( this );
|
event.SetEventObject( this );
|
||||||
GetEventHandler()->ProcessEvent( event );
|
GetEventHandler()->ProcessEvent( event );
|
||||||
|
|
||||||
m_needResizeInIdle = FALSE;
|
m_needResizeInIdle = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,15 +282,15 @@ bool wxTopLevelWindowX11::Show(bool show)
|
|||||||
if (show)
|
if (show)
|
||||||
{
|
{
|
||||||
wxSizeEvent event(GetSize(), GetId());
|
wxSizeEvent event(GetSize(), GetId());
|
||||||
|
|
||||||
event.SetEventObject(this);
|
event.SetEventObject(this);
|
||||||
GetEventHandler()->ProcessEvent(event);
|
GetEventHandler()->ProcessEvent(event);
|
||||||
|
|
||||||
m_needResizeInIdle = FALSE;
|
m_needResizeInIdle = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ret = wxWindowX11::Show(show);
|
bool ret = wxWindowX11::Show(show);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,7 +306,7 @@ void wxTopLevelWindowX11::Maximize(bool maximize)
|
|||||||
bool wxTopLevelWindowX11::IsMaximized() const
|
bool wxTopLevelWindowX11::IsMaximized() const
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxTopLevelWindowX11::Iconize(bool iconize)
|
void wxTopLevelWindowX11::Iconize(bool iconize)
|
||||||
@@ -315,7 +315,7 @@ void wxTopLevelWindowX11::Iconize(bool iconize)
|
|||||||
{
|
{
|
||||||
if (XIconifyWindow(wxGlobalDisplay(),
|
if (XIconifyWindow(wxGlobalDisplay(),
|
||||||
(Window) GetMainWindow(), DefaultScreen(wxGlobalDisplay())) != 0)
|
(Window) GetMainWindow(), DefaultScreen(wxGlobalDisplay())) != 0)
|
||||||
m_iconized = TRUE;
|
m_iconized = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ void wxTopLevelWindowX11::Restore()
|
|||||||
if (m_iconized && GetMainWindow())
|
if (m_iconized && GetMainWindow())
|
||||||
{
|
{
|
||||||
XMapWindow(wxGlobalDisplay(), (Window) GetMainWindow());
|
XMapWindow(wxGlobalDisplay(), (Window) GetMainWindow());
|
||||||
m_iconized = FALSE;
|
m_iconized = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,24 +343,24 @@ bool wxTopLevelWindowX11::ShowFullScreen(bool show, long style)
|
|||||||
if (show)
|
if (show)
|
||||||
{
|
{
|
||||||
if (IsFullScreen())
|
if (IsFullScreen())
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
m_fsIsShowing = TRUE;
|
m_fsIsShowing = true;
|
||||||
m_fsStyle = style;
|
m_fsStyle = style;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!IsFullScreen())
|
if (!IsFullScreen())
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
m_fsIsShowing = FALSE;
|
m_fsIsShowing = false;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ bool wxTopLevelWindowX11::SetShape(const wxRegion& region)
|
|||||||
void wxTopLevelWindowX11::SetTitle(const wxString& title)
|
void wxTopLevelWindowX11::SetTitle(const wxString& title)
|
||||||
{
|
{
|
||||||
m_title = title;
|
m_title = title;
|
||||||
|
|
||||||
if (GetMainWindow())
|
if (GetMainWindow())
|
||||||
{
|
{
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
@@ -467,12 +467,12 @@ void wxTopLevelWindowX11::DoSetClientSize(int width, int height)
|
|||||||
|
|
||||||
m_width = width;
|
m_width = width;
|
||||||
m_height = height;
|
m_height = height;
|
||||||
|
|
||||||
if (m_width == old_width && m_height == old_height)
|
if (m_width == old_width && m_height == old_height)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// wxLogDebug("DoSetClientSize: %s (%ld) %dx%d", GetClassInfo()->GetClassName(), GetId(), width, height);
|
// wxLogDebug("DoSetClientSize: %s (%ld) %dx%d", GetClassInfo()->GetClassName(), GetId(), width, height);
|
||||||
|
|
||||||
#if !wxUSE_NANOX
|
#if !wxUSE_NANOX
|
||||||
XSizeHints size_hints;
|
XSizeHints size_hints;
|
||||||
size_hints.flags = PSize;
|
size_hints.flags = PSize;
|
||||||
@@ -480,7 +480,7 @@ void wxTopLevelWindowX11::DoSetClientSize(int width, int height)
|
|||||||
size_hints.height = height;
|
size_hints.height = height;
|
||||||
XSetWMNormalHints( wxGlobalDisplay(), (Window) GetMainWindow(), &size_hints );
|
XSetWMNormalHints( wxGlobalDisplay(), (Window) GetMainWindow(), &size_hints );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxWindowX11::DoSetClientSize(width, height);
|
wxWindowX11::DoSetClientSize(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -491,24 +491,24 @@ void wxTopLevelWindowX11::DoSetSize(int x, int y, int width, int height, int siz
|
|||||||
int old_width = m_width;
|
int old_width = m_width;
|
||||||
int old_height = m_height;
|
int old_height = m_height;
|
||||||
|
|
||||||
if (x != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (x != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
m_x = x;
|
m_x = x;
|
||||||
|
|
||||||
if (y != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (y != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
m_y = y;
|
m_y = y;
|
||||||
|
|
||||||
if (width != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (width != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
m_width = width;
|
m_width = width;
|
||||||
|
|
||||||
if (height != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (height != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
m_height = height;
|
m_height = height;
|
||||||
|
|
||||||
if (m_x == old_x && m_y == old_y && m_width == old_width && m_height == old_height)
|
if (m_x == old_x && m_y == old_y && m_width == old_width && m_height == old_height)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// wxLogDebug("DoSetSize: %s (%ld) %d, %d %dx%d", GetClassInfo()->GetClassName(), GetId(), x, y, width, height);
|
// wxLogDebug("DoSetSize: %s (%ld) %d, %d %dx%d", GetClassInfo()->GetClassName(), GetId(), x, y, width, height);
|
||||||
|
|
||||||
#if !wxUSE_NANOX
|
#if !wxUSE_NANOX
|
||||||
XSizeHints size_hints;
|
XSizeHints size_hints;
|
||||||
size_hints.flags = 0;
|
size_hints.flags = 0;
|
||||||
size_hints.flags |= PPosition;
|
size_hints.flags |= PPosition;
|
||||||
@@ -521,7 +521,7 @@ void wxTopLevelWindowX11::DoSetSize(int x, int y, int width, int height, int siz
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxWindowX11::DoSetSize(x, y, width, height, sizeFlags);
|
wxWindowX11::DoSetSize(x, y, width, height, sizeFlags);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
Display *display = wxGlobalDisplay();
|
Display *display = wxGlobalDisplay();
|
||||||
Window root = RootWindowOfScreen(DefaultScreenOfDisplay(display));
|
Window root = RootWindowOfScreen(DefaultScreenOfDisplay(display));
|
||||||
@@ -551,20 +551,20 @@ void wxTopLevelWindowX11::DoSetSize(int x, int y, int width, int height, int siz
|
|||||||
windowChanges.stack_mode = 0;
|
windowChanges.stack_mode = 0;
|
||||||
int valueMask = CWX | CWY | CWWidth | CWHeight;
|
int valueMask = CWX | CWY | CWWidth | CWHeight;
|
||||||
|
|
||||||
if (x != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (x != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
{
|
{
|
||||||
valueMask |= CWX;
|
valueMask |= CWX;
|
||||||
}
|
}
|
||||||
if (y != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (y != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
{
|
{
|
||||||
valueMask |= CWY;
|
valueMask |= CWY;
|
||||||
}
|
}
|
||||||
if (width != -1)
|
if (width != wxDefaultCoord)
|
||||||
{
|
{
|
||||||
windowChanges.width = wxMax(1, width);
|
windowChanges.width = wxMax(1, width);
|
||||||
valueMask |= CWWidth;
|
valueMask |= CWWidth;
|
||||||
}
|
}
|
||||||
if (height != -1)
|
if (height != wxDefaultCoord)
|
||||||
{
|
{
|
||||||
windowChanges.height = wxMax(1, height);
|
windowChanges.height = wxMax(1, height);
|
||||||
valueMask |= CWHeight;
|
valueMask |= CWHeight;
|
||||||
@@ -651,7 +651,7 @@ void wxTopLevelWindowX11::DoGetPosition(int *x, int *y) const
|
|||||||
#define MWM_INPUT_FULL_APPLICATION_MODAL 3
|
#define MWM_INPUT_FULL_APPLICATION_MODAL 3
|
||||||
#define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL
|
#define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL
|
||||||
|
|
||||||
#define MWM_TEAROFF_WINDOW (1L<<0)
|
#define MWM_TEAROFF_WINDOW (1L<<0)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -729,18 +729,18 @@ bool wxSetWMDecorations(Window w, long style)
|
|||||||
}
|
}
|
||||||
|
|
||||||
GrSetWMProperties(w, & wmProp);
|
GrSetWMProperties(w, & wmProp);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
Atom mwm_wm_hints = XInternAtom(wxGlobalDisplay(),"_MOTIF_WM_HINTS", False);
|
Atom mwm_wm_hints = XInternAtom(wxGlobalDisplay(),"_MOTIF_WM_HINTS", False);
|
||||||
if (mwm_wm_hints == 0)
|
if (mwm_wm_hints == 0)
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
MwmHints hints;
|
MwmHints hints;
|
||||||
hints.flags = MWM_HINTS_DECORATIONS | MWM_HINTS_FUNCTIONS;
|
hints.flags = MWM_HINTS_DECORATIONS | MWM_HINTS_FUNCTIONS;
|
||||||
hints.decorations = 0;
|
hints.decorations = 0;
|
||||||
hints.functions = 0;
|
hints.functions = 0;
|
||||||
|
|
||||||
if ((style & wxSIMPLE_BORDER) || (style & wxNO_BORDER))
|
if ((style & wxSIMPLE_BORDER) || (style & wxNO_BORDER))
|
||||||
{
|
{
|
||||||
// leave zeros
|
// leave zeros
|
||||||
@@ -752,25 +752,25 @@ bool wxSetWMDecorations(Window w, long style)
|
|||||||
|
|
||||||
if ((style & wxCAPTION) != 0)
|
if ((style & wxCAPTION) != 0)
|
||||||
hints.decorations |= MWM_DECOR_TITLE;
|
hints.decorations |= MWM_DECOR_TITLE;
|
||||||
|
|
||||||
if ((style & wxSYSTEM_MENU) != 0)
|
if ((style & wxSYSTEM_MENU) != 0)
|
||||||
hints.decorations |= MWM_DECOR_MENU;
|
hints.decorations |= MWM_DECOR_MENU;
|
||||||
|
|
||||||
if ((style & wxCLOSE_BOX) != 0)
|
if ((style & wxCLOSE_BOX) != 0)
|
||||||
hints.functions |= MWM_FUNC_CLOSE;
|
hints.functions |= MWM_FUNC_CLOSE;
|
||||||
|
|
||||||
if ((style & wxMINIMIZE_BOX) != 0)
|
if ((style & wxMINIMIZE_BOX) != 0)
|
||||||
{
|
{
|
||||||
hints.functions |= MWM_FUNC_MINIMIZE;
|
hints.functions |= MWM_FUNC_MINIMIZE;
|
||||||
hints.decorations |= MWM_DECOR_MINIMIZE;
|
hints.decorations |= MWM_DECOR_MINIMIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((style & wxMAXIMIZE_BOX) != 0)
|
if ((style & wxMAXIMIZE_BOX) != 0)
|
||||||
{
|
{
|
||||||
hints.functions |= MWM_FUNC_MAXIMIZE;
|
hints.functions |= MWM_FUNC_MAXIMIZE;
|
||||||
hints.decorations |= MWM_DECOR_MAXIMIZE;
|
hints.decorations |= MWM_DECOR_MAXIMIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((style & wxRESIZE_BORDER) != 0)
|
if ((style & wxRESIZE_BORDER) != 0)
|
||||||
{
|
{
|
||||||
hints.functions |= MWM_FUNC_RESIZE;
|
hints.functions |= MWM_FUNC_RESIZE;
|
||||||
@@ -779,13 +779,11 @@ bool wxSetWMDecorations(Window w, long style)
|
|||||||
}
|
}
|
||||||
|
|
||||||
XChangeProperty(wxGlobalDisplay(),
|
XChangeProperty(wxGlobalDisplay(),
|
||||||
w,
|
w,
|
||||||
mwm_wm_hints, mwm_wm_hints,
|
mwm_wm_hints, mwm_wm_hints,
|
||||||
32, PropModeReplace,
|
32, PropModeReplace,
|
||||||
(unsigned char *) &hints, PROP_MOTIF_WM_HINTS_ELEMENTS);
|
(unsigned char *) &hints, PROP_MOTIF_WM_HINTS_ELEMENTS);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: windows.cpp
|
// Name: src/x11/windows.cpp
|
||||||
// Purpose: wxWindow
|
// Purpose: wxWindow
|
||||||
// Author: Julian Smart
|
// Author: Julian Smart
|
||||||
// Modified by:
|
// Modified by:
|
||||||
@@ -96,24 +96,24 @@ void wxWindowX11::Init()
|
|||||||
// X11-specific
|
// X11-specific
|
||||||
m_mainWindow = (WXWindow) 0;
|
m_mainWindow = (WXWindow) 0;
|
||||||
m_clientWindow = (WXWindow) 0;
|
m_clientWindow = (WXWindow) 0;
|
||||||
m_insertIntoMain = FALSE;
|
m_insertIntoMain = false;
|
||||||
m_updateNcArea = FALSE;
|
m_updateNcArea = false;
|
||||||
|
|
||||||
m_winCaptured = FALSE;
|
m_winCaptured = false;
|
||||||
m_needsInputFocus = FALSE;
|
m_needsInputFocus = false;
|
||||||
m_isShown = TRUE;
|
m_isShown = true;
|
||||||
m_lastTS = 0;
|
m_lastTS = 0;
|
||||||
m_lastButton = 0;
|
m_lastButton = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// real construction (Init() must have been called before!)
|
// real construction (Init() must have been called before!)
|
||||||
bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
const wxSize& size,
|
const wxSize& size,
|
||||||
long style,
|
long style,
|
||||||
const wxString& name)
|
const wxString& name)
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( parent, FALSE, wxT("can't create wxWindow without parent") );
|
wxCHECK_MSG( parent, false, wxT("can't create wxWindow without parent") );
|
||||||
|
|
||||||
CreateBase(parent, id, pos, size, style, wxDefaultValidator, name);
|
CreateBase(parent, id, pos, size, style, wxDefaultValidator, name);
|
||||||
|
|
||||||
@@ -148,16 +148,16 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
|||||||
size2.y = 20;
|
size2.y = 20;
|
||||||
|
|
||||||
wxPoint pos2(pos);
|
wxPoint pos2(pos);
|
||||||
if (pos2.x == -1)
|
if (pos2.x == wxDefaultCoord)
|
||||||
pos2.x = 0;
|
pos2.x = 0;
|
||||||
if (pos2.y == -1)
|
if (pos2.y == wxDefaultCoord)
|
||||||
pos2.y = 0;
|
pos2.y = 0;
|
||||||
|
|
||||||
#if wxUSE_TWO_WINDOWS
|
#if wxUSE_TWO_WINDOWS
|
||||||
bool need_two_windows =
|
bool need_two_windows =
|
||||||
((( wxSUNKEN_BORDER | wxRAISED_BORDER | wxSIMPLE_BORDER | wxHSCROLL | wxVSCROLL ) & m_windowStyle) != 0);
|
((( wxSUNKEN_BORDER | wxRAISED_BORDER | wxSIMPLE_BORDER | wxHSCROLL | wxVSCROLL ) & m_windowStyle) != 0);
|
||||||
#else
|
#else
|
||||||
bool need_two_windows = FALSE;
|
bool need_two_windows = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if wxUSE_NANOX
|
#if wxUSE_NANOX
|
||||||
@@ -314,7 +314,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Is a subwindow, so map immediately
|
// Is a subwindow, so map immediately
|
||||||
m_isShown = TRUE;
|
m_isShown = true;
|
||||||
|
|
||||||
// Without this, the cursor may not be restored properly (e.g. in splitter
|
// Without this, the cursor may not be restored properly (e.g. in splitter
|
||||||
// sample).
|
// sample).
|
||||||
@@ -325,7 +325,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
|
|||||||
// for example
|
// for example
|
||||||
// SetSize(pos.x, pos.y, size.x, size.y);
|
// SetSize(pos.x, pos.y, size.x, size.y);
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
@@ -336,7 +336,7 @@ wxWindowX11::~wxWindowX11()
|
|||||||
if (g_captureWindow == this)
|
if (g_captureWindow == this)
|
||||||
g_captureWindow = NULL;
|
g_captureWindow = NULL;
|
||||||
|
|
||||||
m_isBeingDeleted = TRUE;
|
m_isBeingDeleted = true;
|
||||||
|
|
||||||
DestroyChildren();
|
DestroyChildren();
|
||||||
|
|
||||||
@@ -385,11 +385,11 @@ void wxWindowX11::SetFocus()
|
|||||||
wxLogTrace( _T("focus"), _T("wxWindowX11::SetFocus: %s"), GetClassInfo()->GetClassName());
|
wxLogTrace( _T("focus"), _T("wxWindowX11::SetFocus: %s"), GetClassInfo()->GetClassName());
|
||||||
// XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToParent, CurrentTime );
|
// XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToParent, CurrentTime );
|
||||||
XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToNone, CurrentTime );
|
XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToNone, CurrentTime );
|
||||||
m_needsInputFocus = FALSE;
|
m_needsInputFocus = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_needsInputFocus = TRUE;
|
m_needsInputFocus = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -419,9 +419,9 @@ wxWindow *wxWindowBase::DoFindFocus()
|
|||||||
bool wxWindowX11::Enable(bool enable)
|
bool wxWindowX11::Enable(bool enable)
|
||||||
{
|
{
|
||||||
if ( !wxWindowBase::Enable(enable) )
|
if ( !wxWindowBase::Enable(enable) )
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxWindowX11::Show(bool show)
|
bool wxWindowX11::Show(bool show)
|
||||||
@@ -441,7 +441,7 @@ bool wxWindowX11::Show(bool show)
|
|||||||
XUnmapWindow(xdisp, xwindow);
|
XUnmapWindow(xdisp, xwindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Raise the window to the top of the Z order
|
// Raise the window to the top of the Z order
|
||||||
@@ -458,11 +458,22 @@ void wxWindowX11::Lower()
|
|||||||
XLowerWindow( wxGlobalDisplay(), (Window) m_mainWindow );
|
XLowerWindow( wxGlobalDisplay(), (Window) m_mainWindow );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxWindowX11::SetLabel(const wxString& WXUNUSED(label))
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString wxWindowX11::GetLabel() const
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return wxEmptyString;
|
||||||
|
}
|
||||||
|
|
||||||
void wxWindowX11::DoCaptureMouse()
|
void wxWindowX11::DoCaptureMouse()
|
||||||
{
|
{
|
||||||
if ((g_captureWindow != NULL) && (g_captureWindow != this))
|
if ((g_captureWindow != NULL) && (g_captureWindow != this))
|
||||||
{
|
{
|
||||||
wxASSERT_MSG(FALSE, wxT("Trying to capture before mouse released."));
|
wxASSERT_MSG(false, wxT("Trying to capture before mouse released."));
|
||||||
|
|
||||||
// Core dump now
|
// Core dump now
|
||||||
int *tmp = NULL;
|
int *tmp = NULL;
|
||||||
@@ -502,7 +513,7 @@ void wxWindowX11::DoCaptureMouse()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_winCaptured = TRUE;
|
m_winCaptured = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -522,7 +533,7 @@ void wxWindowX11::DoReleaseMouse()
|
|||||||
|
|
||||||
// wxLogDebug( "Ungrabbed pointer in %s", GetName().c_str() );
|
// wxLogDebug( "Ungrabbed pointer in %s", GetName().c_str() );
|
||||||
|
|
||||||
m_winCaptured = FALSE;
|
m_winCaptured = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxWindowX11::SetFont(const wxFont& font)
|
bool wxWindowX11::SetFont(const wxFont& font)
|
||||||
@@ -530,10 +541,10 @@ bool wxWindowX11::SetFont(const wxFont& font)
|
|||||||
if ( !wxWindowBase::SetFont(font) )
|
if ( !wxWindowBase::SetFont(font) )
|
||||||
{
|
{
|
||||||
// nothing to do
|
// nothing to do
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxWindowX11::SetCursor(const wxCursor& cursor)
|
bool wxWindowX11::SetCursor(const wxCursor& cursor)
|
||||||
@@ -541,12 +552,12 @@ bool wxWindowX11::SetCursor(const wxCursor& cursor)
|
|||||||
if ( !wxWindowBase::SetCursor(cursor) )
|
if ( !wxWindowBase::SetCursor(cursor) )
|
||||||
{
|
{
|
||||||
// no change
|
// no change
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Window xwindow = (Window) m_clientWindow;
|
Window xwindow = (Window) m_clientWindow;
|
||||||
|
|
||||||
wxCHECK_MSG( xwindow, FALSE, wxT("invalid window") );
|
wxCHECK_MSG( xwindow, false, wxT("invalid window") );
|
||||||
|
|
||||||
wxCursor cursorToUse;
|
wxCursor cursorToUse;
|
||||||
if (m_cursor.Ok())
|
if (m_cursor.Ok())
|
||||||
@@ -558,7 +569,7 @@ bool wxWindowX11::SetCursor(const wxCursor& cursor)
|
|||||||
|
|
||||||
XDefineCursor( wxGlobalDisplay(), xwindow, xcursor );
|
XDefineCursor( wxGlobalDisplay(), xwindow, xcursor );
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Coordinates relative to the window
|
// Coordinates relative to the window
|
||||||
@@ -727,7 +738,7 @@ void wxWindowX11::DoSetToolTip(wxToolTip * WXUNUSED(tooltip))
|
|||||||
|
|
||||||
bool wxWindowX11::PreResize()
|
bool wxWindowX11::PreResize()
|
||||||
{
|
{
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get total size
|
// Get total size
|
||||||
@@ -838,25 +849,25 @@ void wxWindowX11::DoSetSize(int x, int y, int width, int height, int sizeFlags)
|
|||||||
int new_w = attr.width;
|
int new_w = attr.width;
|
||||||
int new_h = attr.height;
|
int new_h = attr.height;
|
||||||
|
|
||||||
if (x != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (x != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
{
|
{
|
||||||
int yy = 0;
|
int yy = 0;
|
||||||
AdjustForParentClientOrigin( x, yy, sizeFlags);
|
AdjustForParentClientOrigin( x, yy, sizeFlags);
|
||||||
new_x = x;
|
new_x = x;
|
||||||
}
|
}
|
||||||
if (y != -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
if (y != wxDefaultCoord || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
|
||||||
{
|
{
|
||||||
int xx = 0;
|
int xx = 0;
|
||||||
AdjustForParentClientOrigin( xx, y, sizeFlags);
|
AdjustForParentClientOrigin( xx, y, sizeFlags);
|
||||||
new_y = y;
|
new_y = y;
|
||||||
}
|
}
|
||||||
if (width != -1)
|
if (width != wxDefaultCoord)
|
||||||
{
|
{
|
||||||
new_w = width;
|
new_w = width;
|
||||||
if (new_w <= 0)
|
if (new_w <= 0)
|
||||||
new_w = 20;
|
new_w = 20;
|
||||||
}
|
}
|
||||||
if (height != -1)
|
if (height != wxDefaultCoord)
|
||||||
{
|
{
|
||||||
new_h = height;
|
new_h = height;
|
||||||
if (new_h <= 0)
|
if (new_h <= 0)
|
||||||
@@ -1047,16 +1058,16 @@ int wxWindowX11::GetCharWidth() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void wxWindowX11::GetTextExtent(const wxString& string,
|
void wxWindowX11::GetTextExtent(const wxString& string,
|
||||||
int *x, int *y,
|
int *x, int *y,
|
||||||
int *descent, int *externalLeading,
|
int *descent, int *externalLeading,
|
||||||
const wxFont *theFont) const
|
const wxFont *theFont) const
|
||||||
{
|
{
|
||||||
wxFont fontToUse = GetFont();
|
wxFont fontToUse = GetFont();
|
||||||
if (theFont) fontToUse = *theFont;
|
if (theFont) fontToUse = *theFont;
|
||||||
|
|
||||||
wxCHECK_RET( fontToUse.Ok(), wxT("invalid font") );
|
wxCHECK_RET( fontToUse.Ok(), wxT("invalid font") );
|
||||||
|
|
||||||
if (string.IsEmpty())
|
if (string.empty())
|
||||||
{
|
{
|
||||||
if (x) (*x) = 0;
|
if (x) (*x) = 0;
|
||||||
if (y) (*y) = 0;
|
if (y) (*y) = 0;
|
||||||
@@ -1201,7 +1212,7 @@ void wxWindowX11::SendPaintEvents()
|
|||||||
{
|
{
|
||||||
// wxLogDebug("SendPaintEvents: %s (%ld)", GetClassInfo()->GetClassName(), GetId());
|
// wxLogDebug("SendPaintEvents: %s (%ld)", GetClassInfo()->GetClassName(), GetId());
|
||||||
|
|
||||||
m_clipPaintRegion = TRUE;
|
m_clipPaintRegion = true;
|
||||||
|
|
||||||
wxPaintEvent paint_event( GetId() );
|
wxPaintEvent paint_event( GetId() );
|
||||||
paint_event.SetEventObject( this );
|
paint_event.SetEventObject( this );
|
||||||
@@ -1209,7 +1220,7 @@ void wxWindowX11::SendPaintEvents()
|
|||||||
|
|
||||||
m_updateRegion.Clear();
|
m_updateRegion.Clear();
|
||||||
|
|
||||||
m_clipPaintRegion = FALSE;
|
m_clipPaintRegion = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindowX11::SendNcPaintEvents()
|
void wxWindowX11::SendNcPaintEvents()
|
||||||
@@ -1249,7 +1260,7 @@ void wxWindowX11::SendNcPaintEvents()
|
|||||||
nc_paint_event.SetEventObject( this );
|
nc_paint_event.SetEventObject( this );
|
||||||
GetEventHandler()->ProcessEvent( nc_paint_event );
|
GetEventHandler()->ProcessEvent( nc_paint_event );
|
||||||
|
|
||||||
m_updateNcArea = FALSE;
|
m_updateNcArea = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -1300,7 +1311,7 @@ void wxWindowX11::OnInternalIdle()
|
|||||||
|
|
||||||
// If it couldn't set the focus now, there's
|
// If it couldn't set the focus now, there's
|
||||||
// no point in trying again.
|
// no point in trying again.
|
||||||
m_needsInputFocus = FALSE;
|
m_needsInputFocus = false;
|
||||||
}
|
}
|
||||||
g_GettingFocus = NULL;
|
g_GettingFocus = NULL;
|
||||||
}
|
}
|
||||||
@@ -1315,13 +1326,13 @@ static bool DoAddWindowToTable(wxWindowHash *hash, Window w, wxWindow *win)
|
|||||||
{
|
{
|
||||||
wxLogDebug( wxT("Widget table clash: new widget is 0x%08x, %s"),
|
wxLogDebug( wxT("Widget table clash: new widget is 0x%08x, %s"),
|
||||||
(unsigned int)w, win->GetClassInfo()->GetClassName());
|
(unsigned int)w, win->GetClassInfo()->GetClassName());
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxLogTrace( wxT("widget"), wxT("XWindow 0x%08x <-> window %p (%s)"),
|
wxLogTrace( wxT("widget"), wxT("XWindow 0x%08x <-> window %p (%s)"),
|
||||||
(unsigned int) w, win, win->GetClassInfo()->GetClassName());
|
(unsigned int) w, win, win->GetClassInfo()->GetClassName());
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline wxWindow *DoGetWindowFromTable(wxWindowHash *hash, Window w)
|
static inline wxWindow *DoGetWindowFromTable(wxWindowHash *hash, Window w)
|
||||||
@@ -1478,11 +1489,11 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window,
|
|||||||
{
|
{
|
||||||
eventType = wxEVT_RIGHT_UP;
|
eventType = wxEVT_RIGHT_UP;
|
||||||
}
|
}
|
||||||
else return FALSE;
|
else return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxevent.SetEventType(eventType);
|
wxevent.SetEventType(eventType);
|
||||||
@@ -1508,10 +1519,10 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window,
|
|||||||
wxevent.SetId(win->GetId());
|
wxevent.SetId(win->GetId());
|
||||||
wxevent.SetEventObject(win);
|
wxevent.SetEventObject(win);
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win), XEvent *xevent, bool isAscii)
|
bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win), XEvent *xevent, bool isAscii)
|
||||||
@@ -1551,7 +1562,7 @@ bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Window WXUNUSED(win
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -1572,15 +1583,15 @@ bool wxWindowX11::SetBackgroundColour(const wxColour& col)
|
|||||||
// the background ourselves.
|
// the background ourselves.
|
||||||
// XSetWindowBackground( xdisplay, (Window) m_clientWindow, m_backgroundColour.GetPixel() );
|
// XSetWindowBackground( xdisplay, (Window) m_clientWindow, m_backgroundColour.GetPixel() );
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxWindowX11::SetForegroundColour(const wxColour& col)
|
bool wxWindowX11::SetForegroundColour(const wxColour& col)
|
||||||
{
|
{
|
||||||
if ( !wxWindowBase::SetForegroundColour(col) )
|
if ( !wxWindowBase::SetForegroundColour(col) )
|
||||||
return FALSE;
|
return false;
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -1662,7 +1673,7 @@ bool wxWinModule::OnInit()
|
|||||||
g_eraseGC = XCreateGC( xdisplay, xroot, 0, NULL );
|
g_eraseGC = XCreateGC( xdisplay, xroot, 0, NULL );
|
||||||
XSetFillStyle( xdisplay, g_eraseGC, FillSolid );
|
XSetFillStyle( xdisplay, g_eraseGC, FillSolid );
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWinModule::OnExit()
|
void wxWinModule::OnExit()
|
||||||
@@ -1670,5 +1681,3 @@ void wxWinModule::OnExit()
|
|||||||
Display *xdisplay = wxGlobalDisplay();
|
Display *xdisplay = wxGlobalDisplay();
|
||||||
XFreeGC( xdisplay, g_eraseGC );
|
XFreeGC( xdisplay, g_eraseGC );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user