X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/52c8d32a71bb7553dd89324fa6d56faac95eb5d0..aa8cbe0b64fb84cadf0fbf7da1690a922085ca5f:/include/wx/dfb/window.h diff --git a/include/wx/dfb/window.h b/include/wx/dfb/window.h index e30d2ae436..89ee39d46f 100644 --- a/include/wx/dfb/window.h +++ b/include/wx/dfb/window.h @@ -20,8 +20,11 @@ wxDFB_DECLARE_INTERFACE(IDirectFBSurface); struct wxDFBWindowEvent; -class WXDLLIMPEXP_CORE wxFont; -class WXDLLIMPEXP_CORE wxTopLevelWindowDFB; +class WXDLLIMPEXP_FWD_CORE wxFont; +class WXDLLIMPEXP_FWD_CORE wxNonOwnedWindow; + +class wxOverlayImpl; +class wxDfbOverlaysList; // --------------------------------------------------------------------------- // wxWindow @@ -72,10 +75,6 @@ public: virtual void Refresh(bool eraseBackground = true, const wxRect *rect = (const wxRect *) NULL); virtual void Update(); - virtual void Clear(); - virtual void Freeze(); - virtual void Thaw(); - bool IsFrozen() const { return m_frozenness > 0; } virtual bool SetCursor(const wxCursor &cursor); virtual bool SetFont(const wxFont &font) { m_font = font; return true; } @@ -105,10 +104,12 @@ public: wxIDirectFBSurfacePtr GetDfbSurface(); // returns toplevel window the window belongs to - wxTopLevelWindowDFB *GetTLW() const { return m_tlw; } + wxNonOwnedWindow *GetTLW() const { return m_tlw; } void OnInternalIdle(); + virtual bool IsDoubleBuffered() const { return true; } + protected: // implement the base class pure virtuals virtual void DoClientToScreen(int *x, int *y) const; @@ -124,6 +125,8 @@ protected: virtual void DoCaptureMouse(); virtual void DoReleaseMouse(); + virtual void DoThaw(); + // move the window to the specified location and resize it: this is called // from both DoSetSize() and DoSetClientSize() and would usually just call // ::MoveWindow() except for composite controls which will want to arrange @@ -140,11 +143,23 @@ protected: void InvalidateDfbSurface(); // called by parent to render (part of) the window - void PaintWindow(const wxRect& rect, bool eraseBackground); + void PaintWindow(const wxRect& rect); - // implementation of Refresh() - void DoRefreshWindow(bool eraseBack = true); - virtual void DoRefreshRect(const wxRect& rect, bool eraseBack = true); + // paint window's overlays (if any) on top of window's surface + void PaintOverlays(const wxRect& rect); + + // refreshes the entire window (including non-client areas) + void DoRefreshWindow(); + // refreshes given rectangle of the window (in window, _not_ client coords) + virtual void DoRefreshRect(const wxRect& rect); + // refreshes given rectangle; unlike RefreshRect(), the argument is in + // window, not client, coords and unlike DoRefreshRect() and like Refresh(), + // does nothing if the window is hidden or frozen + void RefreshWindowRect(const wxRect& rect); + + // add/remove overlay for this window + void AddOverlay(wxOverlayImpl *overlay); + void RemoveOverlay(wxOverlayImpl *overlay); // DirectFB events handling void HandleKeyEvent(const wxDFBWindowEvent& event_); @@ -153,11 +168,11 @@ private: // common part of all ctors void Init(); // counterpart to SetFocus - void KillFocus(); + void DFBKillFocus(); protected: // toplevel window (i.e. DirectFB window) this window belongs to - wxTopLevelWindowDFB *m_tlw; + wxNonOwnedWindow *m_tlw; private: // subsurface of TLW's surface covered by this window @@ -167,15 +182,16 @@ private: // don't access it directly) wxRect m_rect; - // number of calls to Freeze() minus number of calls to Thaw() - unsigned m_frozenness; + // overlays for this window (or NULL if it doesn't have any) + wxDfbOverlaysList *m_overlays; - friend class wxTopLevelWindowDFB; // for HandleXXXEvent + friend class wxNonOwnedWindow; // for HandleXXXEvent + friend class wxOverlayImpl; // for Add/RemoveOverlay + friend class wxWindowDCImpl; // for PaintOverlays DECLARE_DYNAMIC_CLASS(wxWindowDFB) DECLARE_NO_COPY_CLASS(wxWindowDFB) DECLARE_EVENT_TABLE() }; - #endif // _WX_DFB_WINDOW_H_