| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/x11/window.h
- // Purpose: wxWindow class
- // Author: Julian Smart
- // Modified by:
- // Created: 17/09/98
- // Copyright: (c) Julian Smart
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_WINDOW_H_
- #define _WX_WINDOW_H_
- #include "wx/region.h"
- // ----------------------------------------------------------------------------
- // wxWindow class for Motif - see also wxWindowBase
- // ----------------------------------------------------------------------------
- class WXDLLIMPEXP_CORE wxWindowX11 : public wxWindowBase
- {
- friend class WXDLLIMPEXP_FWD_CORE wxDC;
- friend class WXDLLIMPEXP_FWD_CORE wxWindowDC;
- public:
- wxWindowX11() { Init(); }
- wxWindowX11(wxWindow *parent,
- wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxPanelNameStr)
- {
- Init();
- Create(parent, id, pos, size, style, name);
- }
- virtual ~wxWindowX11();
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxPanelNameStr);
- virtual void Raise();
- virtual void Lower();
- virtual void SetLabel(const wxString& label);
- virtual wxString GetLabel() const;
- virtual bool Show( bool show = true );
- virtual bool Enable( bool enable = true );
- virtual void SetFocus();
- virtual void WarpPointer(int x, int y);
- virtual void Refresh( bool eraseBackground = true,
- const wxRect *rect = (const wxRect *) NULL );
- virtual void Update();
- virtual bool SetBackgroundColour( const wxColour &colour );
- virtual bool SetForegroundColour( const wxColour &colour );
- virtual bool SetCursor( const wxCursor &cursor );
- virtual bool SetFont( const wxFont &font );
- virtual int GetCharHeight() const;
- virtual int GetCharWidth() const;
- virtual void ScrollWindow( int dx, int dy, const wxRect* rect = NULL );
- #if wxUSE_DRAG_AND_DROP
- virtual void SetDropTarget( wxDropTarget *dropTarget );
- #endif // wxUSE_DRAG_AND_DROP
- // Accept files for dragging
- virtual void DragAcceptFiles(bool accept);
- // Get the unique identifier of a window
- virtual WXWindow GetHandle() const { return X11GetMainWindow(); }
- // implementation from now on
- // --------------------------
- // accessors
- // ---------
- // Get main X11 window
- virtual WXWindow X11GetMainWindow() const;
- // Get X11 window representing the client area
- virtual WXWindow GetClientAreaWindow() const;
- void SetLastClick(int button, long timestamp)
- { m_lastButton = button; m_lastTS = timestamp; }
- int GetLastClickedButton() const { return m_lastButton; }
- long GetLastClickTime() const { return m_lastTS; }
- // Gives window a chance to do something in response to a size message, e.g.
- // arrange status bar, toolbar etc.
- virtual bool PreResize();
- // Generates paint events from m_updateRegion
- void SendPaintEvents();
- // Generates paint events from flag
- void SendNcPaintEvents();
- // Generates erase events from m_clearRegion
- void SendEraseEvents();
- // Clip to paint region?
- bool GetClipPaintRegion() { return m_clipPaintRegion; }
- // Return clear region
- wxRegion &GetClearRegion() { return m_clearRegion; }
- void NeedUpdateNcAreaInIdle( bool update = true ) { m_updateNcArea = update; }
- // Inserting into main window instead of client
- // window. This is mostly for a wxWindow's own
- // scrollbars.
- void SetInsertIntoMain( bool insert = true ) { m_insertIntoMain = insert; }
- bool GetInsertIntoMain() { return m_insertIntoMain; }
- // sets the fore/background colour for the given widget
- static void DoChangeForegroundColour(WXWindow widget, wxColour& foregroundColour);
- 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
- // has to be done in idle time in order for wxX11 to work is done in
- // OnInternalIdle
- virtual void OnInternalIdle();
- protected:
- // Responds to colour changes: passes event on to children.
- void OnSysColourChanged(wxSysColourChangedEvent& event);
- // For double-click detection
- long m_lastTS; // last timestamp
- int m_lastButton; // last pressed button
- protected:
- WXWindow m_mainWindow;
- WXWindow m_clientWindow;
- bool m_insertIntoMain;
- bool m_winCaptured;
- wxRegion m_clearRegion;
- bool m_clipPaintRegion;
- bool m_updateNcArea;
- bool m_needsInputFocus; // Input focus set in OnIdle
- // implement the base class pure virtuals
- virtual void DoGetTextExtent(const wxString& string,
- int *x, int *y,
- int *descent = NULL,
- int *externalLeading = NULL,
- const wxFont *font = NULL) const;
- virtual void DoClientToScreen( int *x, int *y ) const;
- virtual void DoScreenToClient( int *x, int *y ) const;
- virtual void DoGetPosition( int *x, int *y ) const;
- virtual void DoGetSize( int *width, int *height ) const;
- virtual void DoGetClientSize( int *width, int *height ) const;
- virtual void DoSetSize(int x, int y,
- int width, int height,
- int sizeFlags = wxSIZE_AUTO);
- virtual void DoSetClientSize(int width, int height);
- virtual void DoMoveWindow(int x, int y, int width, int height);
- virtual void DoSetSizeHints(int minW, int minH,
- int maxW, int maxH,
- int incW, int incH);
- virtual void DoCaptureMouse();
- virtual void DoReleaseMouse();
- #if wxUSE_TOOLTIPS
- virtual void DoSetToolTip( wxToolTip *tip );
- #endif // wxUSE_TOOLTIPS
- private:
- // common part of all ctors
- void Init();
- DECLARE_DYNAMIC_CLASS(wxWindowX11)
- wxDECLARE_NO_COPY_CLASS(wxWindowX11);
- DECLARE_EVENT_TABLE()
- };
- // ----------------------------------------------------------------------------
- // A little class to switch off `size optimization' while an instance of the
- // object exists: this may be useful to temporarily disable the optimisation
- // which consists to do nothing when the new size is equal to the old size -
- // although quite useful usually to avoid flicker, sometimes it leads to
- // undesired effects.
- //
- // Usage: create an instance of this class on the stack to disable the size
- // optimisation, it will be reenabled as soon as the object goes out from scope.
- // ----------------------------------------------------------------------------
- class WXDLLIMPEXP_CORE wxNoOptimize
- {
- public:
- wxNoOptimize() { ms_count++; }
- ~wxNoOptimize() { ms_count--; }
- static bool CanOptimize() { return ms_count == 0; }
- protected:
- static int ms_count;
- };
- #endif // _WX_WINDOW_H_
|