move ScrollWindow() implementation to the base class and call private DoScrollHorz() from it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57135 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -141,12 +141,18 @@ public:
|
|||||||
// the user doesn't need to TAB to this control
|
// the user doesn't need to TAB to this control
|
||||||
virtual bool AcceptsFocusFromKeyboard() const { return false; }
|
virtual bool AcceptsFocusFromKeyboard() const { return false; }
|
||||||
|
|
||||||
|
// this method is only overridden in order to synchronize the control with
|
||||||
|
// the main window when it is scrolled, the derived class must implement
|
||||||
|
// DoScrollHorz()
|
||||||
|
virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual unsigned int DoGetCount() const = 0;
|
virtual unsigned int DoGetCount() const = 0;
|
||||||
virtual void DoInsert(const wxHeaderColumn& col, unsigned int idx) = 0;
|
virtual void DoInsert(const wxHeaderColumn& col, unsigned int idx) = 0;
|
||||||
virtual void DoDelete(unsigned int idx) = 0;
|
virtual void DoDelete(unsigned int idx) = 0;
|
||||||
virtual void DoShowColumn(unsigned int idx, bool show) = 0;
|
virtual void DoShowColumn(unsigned int idx, bool show) = 0;
|
||||||
virtual void DoShowSortIndicator(unsigned int idx, int sortOrder) = 0;
|
virtual void DoShowSortIndicator(unsigned int idx, int sortOrder) = 0;
|
||||||
|
virtual void DoScrollHorz(int dx) = 0;
|
||||||
|
|
||||||
// this window doesn't look nice with the border so don't use it by default
|
// this window doesn't look nice with the border so don't use it by default
|
||||||
virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
|
virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
|
||||||
|
@@ -47,10 +47,6 @@ public:
|
|||||||
virtual ~wxHeaderCtrl();
|
virtual ~wxHeaderCtrl();
|
||||||
|
|
||||||
|
|
||||||
// this method is only overridden in order to synchronize the control with
|
|
||||||
// the main window when it is scrolled
|
|
||||||
virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// implement base class pure virtuals
|
// implement base class pure virtuals
|
||||||
virtual unsigned int DoGetCount() const;
|
virtual unsigned int DoGetCount() const;
|
||||||
@@ -58,6 +54,7 @@ private:
|
|||||||
virtual void DoDelete(unsigned int idx);
|
virtual void DoDelete(unsigned int idx);
|
||||||
virtual void DoShowColumn(unsigned int idx, bool show);
|
virtual void DoShowColumn(unsigned int idx, bool show);
|
||||||
virtual void DoShowSortIndicator(unsigned int idx, int sortOrder);
|
virtual void DoShowSortIndicator(unsigned int idx, int sortOrder);
|
||||||
|
virtual void DoScrollHorz(int dx);
|
||||||
|
|
||||||
// override wxWindow methods which must be implemented by a new control
|
// override wxWindow methods which must be implemented by a new control
|
||||||
virtual wxSize DoGetBestSize() const;
|
virtual wxSize DoGetBestSize() const;
|
||||||
|
@@ -42,3 +42,18 @@ void wxHeaderCtrlBase::DeleteAllColumns()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void wxHeaderCtrlBase::ScrollWindow(int dx,
|
||||||
|
int WXUNUSED_UNLESS_DEBUG(dy),
|
||||||
|
const wxRect * WXUNUSED_UNLESS_DEBUG(rect))
|
||||||
|
|
||||||
|
{
|
||||||
|
// this doesn't make sense at all
|
||||||
|
wxASSERT_MSG( !dy, "header window can't be scrolled vertically" );
|
||||||
|
|
||||||
|
// this would actually be nice to support for "frozen" headers but it isn't
|
||||||
|
// supported currently
|
||||||
|
wxASSERT_MSG( !rect, "header window can't be scrolled partially" );
|
||||||
|
|
||||||
|
DoScrollHorz(dx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -90,22 +90,14 @@ wxHeaderCtrl::~wxHeaderCtrl()
|
|||||||
// wxHeaderCtrl scrolling
|
// wxHeaderCtrl scrolling
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
// as the native control doesn't support offsetting its contents, we use a hack
|
void wxHeaderCtrl::DoScrollHorz(int dx)
|
||||||
// here to make it appear correctly when the parent is scrolled: instead of
|
|
||||||
// scrolling or repainting we simply move the control window itself
|
|
||||||
void wxHeaderCtrl::ScrollWindow(int dx,
|
|
||||||
int WXUNUSED_UNLESS_DEBUG(dy),
|
|
||||||
const wxRect * WXUNUSED_UNLESS_DEBUG(rect))
|
|
||||||
{
|
{
|
||||||
// this doesn't make sense at all
|
// as the native control doesn't support offsetting its contents, we use a
|
||||||
wxASSERT_MSG( !dy, "header window can't be scrolled vertically" );
|
// hack here to make it appear correctly when the parent is scrolled:
|
||||||
|
// instead of scrolling or repainting we simply move the control window
|
||||||
// this would actually be nice to support for "frozen" headers
|
// itself: to be precise, offset it by the scroll increment to the left and
|
||||||
wxASSERT_MSG( !rect, "header window can't be scrolled partially" );
|
// increment its width to still extend to the right boundary to compensate
|
||||||
|
// for it (notice that dx is negative when scrolling to the right)
|
||||||
// offset the window by the scroll increment to the left and increment its
|
|
||||||
// width to still extend to the right boundary to compensate for it (notice
|
|
||||||
// that dx is negative when scrolling to the right)
|
|
||||||
SetSize(GetPosition().x + dx, -1, GetSize().x - dx, -1, wxSIZE_USE_EXISTING);
|
SetSize(GetPosition().x + dx, -1, GetSize().x - dx, -1, wxSIZE_USE_EXISTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user