X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fc7a2a602b4bd9308be21bc07e40a680f483438e..ef57807f2789ef9495912bd323541b85b9f0d51e:/include/wx/generic/scrolwin.h diff --git a/include/wx/generic/scrolwin.h b/include/wx/generic/scrolwin.h index 85cd9e8e06..c4f4a0b292 100644 --- a/include/wx/generic/scrolwin.h +++ b/include/wx/generic/scrolwin.h @@ -1,107 +1,53 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wx/generic/scrolwin.h -// Purpose: wxGenericScrolledWindow class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 +// Purpose: generic wxScrollHelper +// Author: Vadim Zeitlin +// Created: 2008-12-24 (replacing old file with the same name) // RCS-ID: $Id$ -// Copyright: (c) Julian Smart +// Copyright: (c) 2008 Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_GENERIC_SCROLLWIN_H_ #define _WX_GENERIC_SCROLLWIN_H_ -#if defined(__GNUG__) && !defined(__APPLE__) - #pragma interface "genscrolwin.h" -#endif - -// ---------------------------------------------------------------------------- -// headers and constants -// ---------------------------------------------------------------------------- - -#include "wx/window.h" -#include "wx/panel.h" - -WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr; - -// default scrolled window style -#ifndef wxScrolledWindowStyle - #define wxScrolledWindowStyle (wxHSCROLL | wxVSCROLL) -#endif - -// avoid triggering this stupid VC++ warning -#ifdef __VISUALC__ - #pragma warning(disable:4355) // 'this' used in base member initializer list -#endif - // ---------------------------------------------------------------------------- -// wxGenericScrolledWindow +// generic wxScrollHelper implementation // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxGenericScrolledWindow : public wxPanel, - public wxScrollHelper +class WXDLLIMPEXP_CORE wxScrollHelper : public wxScrollHelperBase { public: - wxGenericScrolledWindow() : wxScrollHelper(this) { } - wxGenericScrolledWindow(wxWindow *parent, - wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxScrolledWindowStyle, - const wxString& name = wxPanelNameStr) - : wxScrollHelper(this) - { - Create(parent, id, pos, size, style, name); - } + wxScrollHelper(wxWindow *winToScroll); - virtual ~wxGenericScrolledWindow(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxScrolledWindowStyle, - const wxString& name = wxPanelNameStr); - - virtual void PrepareDC(wxDC& dc) { DoPrepareDC(dc); } - - // lay out the window and its children - virtual bool Layout(); - - virtual void DoSetVirtualSize(int x, int y); - -#if WXWIN_COMPATIBILITY - virtual void GetScrollUnitsPerPage(int *x_page, int *y_page) const; - virtual void CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const; - // Need to do this otherwise the compiler gets confuced - // between float and int calls to this function. - void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const - { wxScrollHelper::CalcScrolledPosition(x, y, xx, yy); } - wxPoint CalcUnscrolledPosition(const wxPoint& pt) const - { return wxScrollHelper::CalcScrolledPosition(pt); } -#endif // WXWIN_COMPATIBILITY + // implement base class pure virtuals + virtual void AdjustScrollbars(); protected: - // this is needed for wxEVT_PAINT processing hack described in - // wxScrollHelperEvtHandler::ProcessEvent() - void OnPaint(wxPaintEvent& event); - - // we need to return a special WM_GETDLGCODE value to process just the - // arrows but let the other navigation characters through -#ifdef __WXMSW__ - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); -#endif // __WXMSW__ + virtual void DoScroll(int x, int y); + virtual void DoShowScrollbars(wxScrollbarVisibility horz, + wxScrollbarVisibility vert); private: - DECLARE_DYNAMIC_CLASS_NO_COPY(wxGenericScrolledWindow) - DECLARE_EVENT_TABLE() + // helper of AdjustScrollbars(): does the work for the single scrollbar + // + // notice that the parameters passed by non-const references are modified + // by this function + void DoAdjustScrollbar(int orient, + int clientSize, + int virtSize, + int pixelsPerUnit, + int& scrollUnits, + int& scrollPosition, + int& scrollLinesPerPage, + wxScrollbarVisibility visibility); + + + wxScrollbarVisibility m_xVisibility, + m_yVisibility; + + wxDECLARE_NO_COPY_CLASS(wxScrollHelper); }; -#ifdef __VISUALC__ - #pragma warning(default:4355) -#endif - -#endif - // _WX_GENERIC_SCROLLWIN_H_ +#endif // _WX_GENERIC_SCROLLWIN_H_