Commit Graph

53 Commits

Author SHA1 Message Date
Maarten Bent
fd9df06d35 Fix applying header style of wxMSWHeaderCtrl
Call SetWindowStyleFlag when creating the control. Apply wxHD_BITMAP_ON_RIGHT
style. Get rid of the helper function.
2020-01-19 14:55:39 +01:00
Vadim Zeitlin
669e97c016 Ignore attempts to set order of empty wxMSWHeaderCtrl
This can happen when using wxGrid and calling UseNativeColHeader()
before adding any columns and shouldn't be fatal, so simply don't do
anything in this case.
2019-10-23 19:57:40 +02:00
Paul Cornett
cfdcc3c29d Remove unreachable code 2019-10-14 09:32:40 -07:00
Paul Cornett
29e0da97d1 Remove invalid flag from HDITEM mask
HDF_LEFT is zero, so it had no effect, but it doesn't belong there
2019-10-14 09:27:50 -07:00
Maarten Bent
54d514489e Update custom header font after DPI change 2019-09-28 23:37:01 +02:00
Ilya Sinitsyn
120b33746a Implement scrolling for MSW wxHeaderCtrl correctly
Due to lack of support for horizontal scrolling in the native control,
scrolling it was implementing by offsetting the entire control window.
However this didn't work correctly when the window was not positioned
at the leftmost border of its parent window, as the part of it that was
scrolled off could still be visible in this case, and this is exactly
what happened when the native header was used in wxGrid: scrolling it
overwrote the corner part of wxGrid.

Fix this by embedding the actual native control inside an outer wxWindow,
to ensure that the scrolled off part is clipped by the parent window.

Note that this commit is best viewed with "git show --color-moved" as
most of the code was just moved from the header into the implementation
file and is not really new.
2019-09-05 20:11:09 +02:00
Maarten Bent
f74d756ca5 Use DPI Aware wxGetSystemMetrics
If no wxWindow is known, use wxTheApp->GetTopWindow().
Also use a wxWindow for all wxSystemSettings::GetMetric calls.
2019-07-15 00:00:18 +02:00
Paul Cornett
34a3f0512d Remove redundant condtional/unreachable code 2019-02-17 22:55:56 -08:00
Artur Wieczorek
5d40d57218 Don't process last HDN_ITEMCHANGING notification
Just skipping last HDN_ITEMCHANGING arriving after HDN_ENDTRACK (to prevent emitting EVT_HEADER_RESIZING) when current column width is less than minimal value allowed is not enough because this notification will be handled by the native control in a standard way causing column width to resize below the limit.
When current width is below the limit this last HDN_ITEMCHANGING notification has to be explicitly "vetoed" to prevent default handling from happening.

Close #18335.
2019-01-23 00:04:37 +01:00
Maarten Bent
bfe44c719b Do not let wxHeaderCtrl determine the minimum width
The minimum width will always be equal to the current size of the parent window (from wxGetClientRect).
As a result, controls using wxHeaderCtrl can never be shrunk (e.g. using SetSizeHints).
Problem is visible when a wxDataViewCtrl gets a lower DPI. The new minimum size is equal to the current size.
2018-05-17 20:20:05 +02:00
Vadim Zeitlin
fd73ae1623 Add wxHD_BITMAP_ON_RIGHT style to wxHeaderCtrl
Implement this style for wxMSW to allow putting the column images on the
right side, for consistency with wxMSW wxListCtrl.

See #13350.
2018-02-04 00:14:28 +01:00
Vadim Zeitlin
17105cfd07 Simplify changing window styles in wxMSW code
Add wxMSWWinStyleUpdater and wxMSWWinExStyleUpdater helper classes which
allow writing code changing GWL_STYLE and GWL_EXSTYLE bits,
respectively, in a shorter and more clear way.

There should be no real changes in behaviour.
2017-12-10 17:47:16 +01:00
Artur Wieczorek
1033a1636d Process HDN_ITEMCHANGING notifications only when column is being resized
When column resizing is finished, after HDN_ENDTRACK notification there is
also sent one (and last) HDN_ITEMCHANGING notification. We have to skip it
to prevent from sending EVT_HEADER_RESIZING after EVT_HEADER_END_RESIZE
because EVT_HEADER_END_RESIZE should be really the last one event
in the sequence of resizing events (like it's assumed in wxGrid).

Closes #16390.
2017-11-20 21:57:05 +01:00
Václav Slavík
92a1f643ba Set HDS_NOSIZING in wxHeaderCtrl when appropriate
Native Windows header control doesn't have the ability to show
per-column resizing cursor and it's only possible to enable or disable
it for the entire control, so we can't fully support the wxHeaderColumn
API. But we can at least hide the resizing cursor if none of the columns
are resizable.
2016-10-21 17:08:54 +02:00
Vadim Zeitlin
c15f75b81d Use custom draw in wxMSW wxHeaderCtrl to support colours
Add a helper wxMSWImpl::CustomDraw class which will be reused in the other
places too and, for now, use it just to implement support for custom colours
in wxHeaderCtrl.

Notice that the control took care of the custom font on its anyhow and that
background colour is ignored when themes are enabled, so the net effect of
this change is that now changing the header foreground colour works, while
it was ignored before.
2016-04-17 17:01:08 +02:00
Vadim Zeitlin
b17b0ab151 Work around or suppress gcc -Wunused-value warnings in wxMSW code.
TDM-GCC 4.9.2 gave many of these warnings for the calls to Windows common
controls macros, avoid them by adding error reporting where it makes sense or
just suppressing the warning by explicitly casting to void elsewhere (e.g. for
the macros which have no meaningful return value at all or return something
that we're not interested in instead of just success/failure indicator).
2015-07-27 03:55:01 +02:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Vadim Zeitlin
ce7fe42e84 Provide shorter synonyms for wxEVT_XXX constants.
Use the same short names as are used by the event table macros for the event
type constants themselves. This makes them much more comfortable to use, e.g.
Bind(wxEVT_BUTTON) compared to Bind(wxEVT_COMMAND_BUTTON_CLICKED).

The old long names are still kept for backwards compatibility and shouldn't be
removed as it doesn't really cost anything to continue providing them, but all
new event types should only use the short versions.

Closes #10661.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-04-25 10:11:03 +00:00
Vadim Zeitlin
421a5048b7 Fix bug with dragging non-draggable columns in wxMSW wxHeaderCtrl.
Properly ignore HDN_BEGINDRAG events for the columns without wxCOL_REORDERABLE
flag. This fixes dragging non-draggable columns in wxDataViewCtrl under MSW.

Closes #14940.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73389 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-01-20 02:08:51 +00:00
Vadim Zeitlin
f69306fe61 Process HDN_TRACK in wxMSW wxHeaderCtrl just in case.
This message is not supposed to be sent but apparently some buggy comctl32.dll
versions do send it instead of HDN_ITEMCHANGING, so handle it too.

Closes #13506.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-12-28 16:03:16 +00:00
Vadim Zeitlin
017dc06b50 Use wxString::t_str() in calls to Windows API functions in wxMSW.
Use t_str() instead of wx_str() to make the code work correctly in UTF-8 build
in which wx_str() returns a pointer to UTF-8 buffer while we need a wchar_t
pointer for Windows.

Closes #14371.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-03 19:16:59 +00:00
Dimitri Schoolwerth
d13b34d3f2 No code changes, fixed various typos.
Applied patch by snowleopard2 fixing typos in interface/. Extended the fixes throughout trunk.

Closes #13076.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-03 20:31:32 +00:00
Vadim Zeitlin
8478ed64d7 Update column order in MSW native wxHeaderCtrl after drag.
We must update the internally stored columns order even if the end reorder
event was processed (but not vetoed), otherwise we don't reflect the new order
in the our public functions such as GetColumnsOrder() which broke wxDVC
display under MSW.

Closes #11300.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-17 16:13:37 +00:00
Vadim Zeitlin
5c858faa15 Suppress harmless mingw32 warning about unused value.
Add an explicit cast to void to Header_SetImageList() call to avoid "warning:
value computed is not used".

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62038 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-23 14:29:04 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Francesco Montorsi
cf3fd63e38 do not use HDS_FLAT by default
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-05 21:47:59 +00:00
Vadim Zeitlin
36e5a9a7c4 fix (harmless) warnings in release mingw32 build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59108 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-23 21:15:45 +00:00
Vadim Zeitlin
9b66a1d31a compilation fix for old SDKs (VC6...) which don't define HDM_SETBITMAPMARGIN/Header_SetBitmapMargin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-18 15:09:52 +00:00
Vadim Zeitlin
9485b24f43 reduce the margins around bitmaps to avoid truncating the label unnecessarily
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-18 14:23:19 +00:00
Vadim Zeitlin
e721a2a2a4 added wxUSE_HEADERCTRL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58009 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-11 00:57:08 +00:00
Vadim Zeitlin
613de0e89e handle actions of the columns popup menu in wxHeaderCtrl itself (but the derived class must implement UpdateColumnVisibility()); also renamed wxHD_DRAGDROP to wxHD_ALLOW_REORDER as it will be possible to reorder columns interactively using a customization dialog and not just by dragging them soon
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-15 22:42:37 +00:00
Vadim Zeitlin
2e733ec74c fix several bugs in index/position translation code between wx and MSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-14 22:54:34 +00:00
Vadim Zeitlin
040b9528d1 don't use the hack with adding hidden columns to the native control because it doesn't play well with resizing; maintain the mapping between wx and MSW column indices internally even if this is much more work
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-14 22:06:58 +00:00
Vadim Zeitlin
38cd07c431 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
2008-12-11 22:06:55 +00:00
Vadim Zeitlin
93e4e62b92 generate EVT_HEADER_RESIZING events from HDN_ITEMCHANGING, not from HDN_TRACK which we don't seem to be getting at all
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-11 18:57:03 +00:00
Vadim Zeitlin
dcb6cbecc8 extract setters from wxHeaderColumnBase into a separate wxSettableHeaderColumn class as we don't always need to implement them in order to use this class; also renamed wxHeaderColumnBase to just wxHeaderColumn as we didn't have any wxHeaderColumn at all
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-11 13:05:48 +00:00
Vadim Zeitlin
565804f2b9 added EVT_HEADER_DRAGGING_CANCELLED event sent when either resizing or reordering operation is cancelled instead of having a special cancelled flag in normal END_RESIZE/REORDER events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-10 16:05:21 +00:00
Vadim Zeitlin
702f5349c6 implement column reordering support in wxMSW wxHeaderCtrl; use it in wxDataViewCtrl (and make difference between column indices and positions more clear in it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-10 15:56:11 +00:00
Vadim Zeitlin
4de60a27a7 recreate the column instead of trying to update it in place, it's much simpler like this
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-09 00:14:11 +00:00
Vadim Zeitlin
89c73d546a always update the column icon field when updating the item as it could be reset to nothing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 21:22:26 +00:00
Vadim Zeitlin
0b2e14832a don't allow resizing non-resizeable columns in wxHeaderCtrl itself, no need to do it in wxDataViewCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 17:36:11 +00:00
Vadim Zeitlin
a45caa71bf honour column min width when resizing in wxHeaderCtrl, no need to do it in wxDataViewCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 17:33:03 +00:00
Vadim Zeitlin
396825dced rename wxHeaderCtrl DRAG events into RESIZE ones as we're also going to have column drag-reodering
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 16:38:56 +00:00
Vadim Zeitlin
0c9c5b4376 buildbot VC6 apparently can't compile variable declaration inside a switch statement even though my own VC6 SP5 can
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 16:24:39 +00:00
Vadim Zeitlin
aef252d9da implement column resizing events in wxHeaderCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57190 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 14:40:42 +00:00
Vadim Zeitlin
3bfaa5a7e4 add wxEVT_COMMAND_HEADER_SEPARATOR_DCLICK and semi-automatic header resizing support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 12:15:17 +00:00
Vadim Zeitlin
fa3d4aaf0f implement click events in wxHeaderCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-08 00:57:53 +00:00
Vadim Zeitlin
e2bfe6731e - Rewrite wxHeaderCtrl to be virtual-like: even if we don't need an infinite
number of columns in it, it turns out that getting column information from
  the associated control is much easier than copying it into the control.
- Provide wxHeaderCtrlSimple derived class which can be used easily if
  callback approach of wxHeaderCtrl is not needed.
- Because of wxHeaderCtrl virtualization, port-specific implementations of
  wxHeaderColumn are not needed any more and were removed.
- Use wxHeaderCtrl in the generic wxDataViewCtrl: this means that column
  events are broken right now in it as they haven't been implemented by
  wxHeaderCtrl yet, this will be fixed a.s.a.p.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57161 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-07 14:47:55 +00:00
Vadim Zeitlin
d8fc3398ac 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
2008-12-05 22:43:37 +00:00
Vadim Zeitlin
f24f657913 emulate scrolling in wxMSW header control; document the need to call ScrollWindow() when using it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57133 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-05 22:11:27 +00:00