initial commit
Signed-off-by: Peter Siegmund <mars3142@noreply.mars3142.dev>
This commit is contained in:
197
libs/wxWidgets-3.3.1/include/wx/gtk/toplevel.h
Normal file
197
libs/wxWidgets-3.3.1/include/wx/gtk/toplevel.h
Normal file
@@ -0,0 +1,197 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/gtk/toplevel.h
|
||||
// Purpose:
|
||||
// Author: Robert Roebling
|
||||
// Copyright: (c) 1998 Robert Roebling, Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_GTK_TOPLEVEL_H_
|
||||
#define _WX_GTK_TOPLEVEL_H_
|
||||
|
||||
class WXDLLIMPEXP_FWD_CORE wxGUIEventLoop;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxTopLevelWindowGTK
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxTopLevelWindowGTK : public wxTopLevelWindowBase
|
||||
{
|
||||
typedef wxTopLevelWindowBase base_type;
|
||||
public:
|
||||
// construction
|
||||
wxTopLevelWindowGTK() { Init(); }
|
||||
wxTopLevelWindowGTK(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE,
|
||||
const wxString& name = wxASCII_STR(wxFrameNameStr))
|
||||
{
|
||||
Init();
|
||||
|
||||
Create(parent, id, title, pos, size, style, name);
|
||||
}
|
||||
|
||||
bool Create(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE,
|
||||
const wxString& name = wxASCII_STR(wxFrameNameStr));
|
||||
|
||||
virtual ~wxTopLevelWindowGTK();
|
||||
|
||||
// implement base class pure virtuals
|
||||
virtual void Maximize(bool maximize = true) override;
|
||||
virtual bool IsMaximized() const override;
|
||||
virtual void Iconize(bool iconize = true) override;
|
||||
virtual bool IsIconized() const override;
|
||||
virtual void SetIcons(const wxIconBundle& icons) override;
|
||||
virtual void Restore() override;
|
||||
|
||||
virtual bool EnableCloseButton(bool enable = true) override;
|
||||
|
||||
virtual void ShowWithoutActivating() override;
|
||||
virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL) override;
|
||||
virtual bool IsFullScreen() const override { return m_fsIsShowing; }
|
||||
|
||||
virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO) override;
|
||||
|
||||
virtual void SetWindowStyleFlag( long style ) override;
|
||||
|
||||
virtual bool Show(bool show = true) override;
|
||||
|
||||
virtual void Raise() override;
|
||||
|
||||
virtual bool IsActive() override;
|
||||
|
||||
virtual void SetTitle( const wxString &title ) override;
|
||||
virtual wxString GetTitle() const override { return m_title; }
|
||||
|
||||
virtual void SetLabel(const wxString& label) override { SetTitle( label ); }
|
||||
virtual wxString GetLabel() const override { return GetTitle(); }
|
||||
|
||||
virtual wxVisualAttributes GetDefaultAttributes() const override;
|
||||
|
||||
virtual bool SetTransparent(wxByte alpha) override;
|
||||
virtual bool CanSetTransparent() override;
|
||||
|
||||
// Experimental, to allow help windows to be
|
||||
// viewable from within modal dialogs
|
||||
virtual void AddGrab();
|
||||
virtual void RemoveGrab();
|
||||
virtual bool IsGrabbed() const;
|
||||
|
||||
|
||||
virtual void Refresh( bool eraseBackground = true,
|
||||
const wxRect *rect = (const wxRect *) nullptr ) override;
|
||||
|
||||
// implementation from now on
|
||||
// --------------------------
|
||||
|
||||
// GTK callbacks
|
||||
virtual void GTKHandleRealized() override;
|
||||
|
||||
void GTKConfigureEvent(int x, int y);
|
||||
|
||||
// do *not* call this to iconize the frame, this is a private function!
|
||||
void SetIconizeState(bool iconic);
|
||||
|
||||
GtkWidget *m_mainWidget;
|
||||
|
||||
bool m_fsIsShowing; /* full screen */
|
||||
int m_fsSaveGdkFunc, m_fsSaveGdkDecor;
|
||||
wxRect m_fsSaveFrame;
|
||||
|
||||
// m_windowStyle translated to GDK's terms
|
||||
int m_gdkFunc,
|
||||
m_gdkDecor;
|
||||
|
||||
// size of WM decorations
|
||||
struct DecorSize
|
||||
{
|
||||
int left = 0,
|
||||
right = 0,
|
||||
top = 0,
|
||||
bottom = 0;
|
||||
};
|
||||
DecorSize m_decorSize;
|
||||
|
||||
// private gtk_timeout_add result for mimicking wxUSER_ATTENTION_INFO and
|
||||
// wxUSER_ATTENTION_ERROR difference, -2 for no hint, -1 for ERROR hint, rest for GtkTimeout handle.
|
||||
int m_urgency_hint;
|
||||
// timer for detecting WM with broken _NET_REQUEST_FRAME_EXTENTS handling
|
||||
unsigned m_netFrameExtentsTimerId;
|
||||
|
||||
void GTKUpdateDecorSize(const DecorSize& decorSize);
|
||||
|
||||
void GTKDoAfterShow();
|
||||
|
||||
#ifdef __WXGTK3__
|
||||
void GTKUpdateClientSizeIfNecessary();
|
||||
|
||||
virtual void SetMinSize(const wxSize& minSize) override;
|
||||
|
||||
virtual void WXSetInitialFittingClientSize(int flags, wxSizer* sizer = nullptr) override;
|
||||
|
||||
private:
|
||||
// Flags to call WXSetInitialFittingClientSize() with if != 0.
|
||||
int m_pendingFittingClientSizeFlags;
|
||||
#endif // __WXGTK3__
|
||||
|
||||
protected:
|
||||
// give hints to the Window Manager for how the size
|
||||
// of the TLW can be changed by dragging
|
||||
virtual void DoSetSizeHints( int minW, int minH,
|
||||
int maxW, int maxH,
|
||||
int incW, int incH) override;
|
||||
// move the window to the specified location and resize it
|
||||
virtual void DoMoveWindow(int x, int y, int width, int height) override;
|
||||
|
||||
// take into account WM decorations here
|
||||
virtual void DoSetSize(int x, int y,
|
||||
int width, int height,
|
||||
int sizeFlags = wxSIZE_AUTO) override;
|
||||
|
||||
virtual void DoSetClientSize(int width, int height) override;
|
||||
virtual void DoGetClientSize(int *width, int *height) const override;
|
||||
|
||||
// string shown in the title bar
|
||||
wxString m_title;
|
||||
|
||||
bool m_deferShow;
|
||||
|
||||
private:
|
||||
void Init();
|
||||
DecorSize& GetCachedDecorSize();
|
||||
|
||||
// return the size of the window without WM (i.e. SSD, as opposed to CSD)
|
||||
// decorations but only take them into account for resizeable windows
|
||||
wxSize GTKDoGetSize(bool isResizeable) const;
|
||||
|
||||
|
||||
// size hint increments
|
||||
int m_incWidth, m_incHeight;
|
||||
|
||||
// position before it last changed
|
||||
wxPoint m_lastPos;
|
||||
|
||||
// is the frame currently iconized?
|
||||
bool m_isIconized;
|
||||
|
||||
// is the frame currently grabbed explicitly by the application?
|
||||
wxGUIEventLoop* m_grabbedEventLoop;
|
||||
|
||||
bool m_updateDecorSize;
|
||||
bool m_deferShowAllowed;
|
||||
|
||||
#ifdef __WXGTK3__
|
||||
// last known scale factor value
|
||||
double m_scaleFactor;
|
||||
#endif // __WXGTK3__
|
||||
};
|
||||
|
||||
#endif // _WX_GTK_TOPLEVEL_H_
|
||||
Reference in New Issue
Block a user