don't lose the scroll offset when the window is repositioned
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -60,6 +60,9 @@ private:
|
||||
|
||||
// override wxWindow methods which must be implemented by a new control
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
virtual void DoSetSize(int x, int y,
|
||||
int width, int height,
|
||||
int sizeFlags = wxSIZE_AUTO);
|
||||
|
||||
// override MSW-specific methods needed for new control
|
||||
virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
|
||||
@@ -81,6 +84,9 @@ private:
|
||||
// the image list: initially NULL, created on demand
|
||||
wxImageList *m_imageList;
|
||||
|
||||
// the offset of the window used to emulate scrolling it
|
||||
int m_scrollOffset;
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxHeaderCtrl)
|
||||
};
|
||||
|
||||
|
@@ -50,6 +50,7 @@ extern int WXDLLIMPEXP_CORE wxMSWGetColumnClicked(NMHDR *nmhdr, POINT *ptClick);
|
||||
void wxHeaderCtrl::Init()
|
||||
{
|
||||
m_imageList = NULL;
|
||||
m_scrollOffset = 0;
|
||||
}
|
||||
|
||||
bool wxHeaderCtrl::Create(wxWindow *parent,
|
||||
@@ -96,6 +97,14 @@ wxHeaderCtrl::~wxHeaderCtrl()
|
||||
// wxHeaderCtrl scrolling
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void wxHeaderCtrl::DoSetSize(int x, int y,
|
||||
int w, int h,
|
||||
int sizeFlags)
|
||||
{
|
||||
wxHeaderCtrlBase::DoSetSize(x + m_scrollOffset, y, w - m_scrollOffset, h,
|
||||
sizeFlags);
|
||||
}
|
||||
|
||||
void wxHeaderCtrl::DoScrollHorz(int dx)
|
||||
{
|
||||
// as the native control doesn't support offsetting its contents, we use a
|
||||
@@ -104,7 +113,11 @@ void wxHeaderCtrl::DoScrollHorz(int dx)
|
||||
// itself: to be precise, offset it 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);
|
||||
m_scrollOffset += dx;
|
||||
|
||||
wxHeaderCtrlBase::DoSetSize(GetPosition().x + dx, -1,
|
||||
GetSize().x - dx, -1,
|
||||
wxSIZE_USE_EXISTING);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user