void RemoveSortIndicator();
protected:
+ // implement/override base class methods
virtual wxHeaderColumnBase& GetColumn(unsigned int idx);
+ virtual bool UpdateColumnWidthToFit(unsigned int idx, int widthTitle);
+
+ // and define another one to be overridden in the derived classes: it
+ // should return the best width for the given column contents or -1 if not
+ // implemented, we use it to implement UpdateColumnWidthToFit()
+ virtual int GetBestFittingWidth(unsigned int WXUNUSED(idx)) const
+ {
+ return -1;
+ }
private:
// functions implementing our public API
The column to remove sort indicator for.
*/
void RemoveSortIndicator(unsigned int idx);
+
+protected:
+ /**
+ This function can be overridden in the classes deriving from this
+ control instead of overriding UpdateColumnWidthToFit().
+
+ To implement automatic column resizing to fit its contents width when
+ the column divider is double clicked, you need to simply return the
+ fitting width for the given column @a idx from this method, the control
+ will automatically use the biggest value between the one returned from
+ here and the one needed for the display of the column title itself.
+
+ The base class version returns -1 indicating that this function is not
+ implemented.
+ */
+ virtual int GetBestFittingWidth(unsigned int idx) const;
};
/**
}
}
+bool
+wxHeaderCtrlSimple::UpdateColumnWidthToFit(unsigned int idx, int widthTitle)
+{
+ const int widthContents = GetBestFittingWidth(idx);
+ if ( widthContents == -1 )
+ return false;
+
+ m_cols[idx].SetWidth(wxMax(widthContents, widthTitle));
+ UpdateColumn(idx);
+
+ return true;
+}
+
// ============================================================================
// wxHeaderCtrlEvent implementation
// ============================================================================