Commit Graph

310 Commits

Author SHA1 Message Date
Vadim Zeitlin
749f13d4a2 Avoid g++ warnings about breaking strict aliasing rules in wxTreeCtrl.
The standard TreeView_GetItemRect() macro resulted in warnings about breaking
strict aliasing rules as it passed a variable of one type via a pointer to
another one. Fix this by using a union and our own custom macro instead.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-07-02 10:29:07 +00:00
Dimitri Schoolwerth
4c51a665c6 Fixed various typos.
Applied patch by snowleopard2 fixing a bunch of typos such as misspellings and double words in the documentation. Combined the patch with some local queued typos waiting to be committed as well as adding new typo fixes inspired by the patch.

Function names with American spelling were not changed nor was third-party code touched. The only code changes involve some changes in strings that are translated ("Can not" -> "Cannot").

Closes #13063 (again).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-22 14:17:38 +00:00
Vadim Zeitlin
e615d356fc Use Explorer style for wxTreeCtrl with wxTR_TWIST_BUTTONS in wxMSW.
The tree control style used by Explorer uses rotating triangles instead of the
standard "+/-" buttons and so seems to correspond relatively well to this
style. And this provides a possibility to have a more standard-looking tree
controls in wxWidgets programs.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-06 01:00:48 +00:00
Vadim Zeitlin
1f77d487b7 Clean up wxMSW wxTreeCtrl code by removing obsolete workarounds.
Remove wxUSE_COMCTL32_SAFELY that hasn't been needed for years, the current
code seems to work just fine on all the systems so remove this obsolete
workaround to simplify it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66849 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-06 01:00:40 +00:00
Stefan Csomor
2895324520 merging back XTI branch part 2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-04 08:31:53 +00:00
Vadim Zeitlin
942f40ca24 Avoid duplicate wxEVT_COMMAND_TREE_SEL_CHANG{ING,ED} events in wxMSW.
When changing the selected item programmatically 2 CHANGING and CHANGED events
were sent because the assumption that comctl32.dll didn't send these events
itself was not correct any more, it does send them at least since XP. However
to avoid the tests for its exact version it's simpler to just ignore the
events it generates and continue sending our own ones.

Closes #11274.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65906 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-24 22:41:08 +00:00
Vadim Zeitlin
1da2783c33 Don't grab focus when calling wxTreeCtrl::SelectItem().
The workaround for the unexpected events order introduced in r49588 should
only apply to the situation when the user selects an item in the tree, not
when it's done programmatically as this results in unexpected focus changes
(see #11274).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65905 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-24 22:41:03 +00:00
Vadim Zeitlin
22993989b4 Don't send wxEVT_COMMAND_TREE_ITEM_MENU event without valid item in wxMSW.
The generic wxTreeCtrl version only sends this event when the mouse is right
clicked on a valid item so do the same in wxMSW version too for consistency.

This is also consistent with wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK event and
avoids strange problems with unexpected wxEVT_COMMAND_TREE_ITEM_MENU events
generated on right double click.

Finally, replace the checks for item validity in the event handler in the
sample with asserts which should loudly complain if it happens to be invalid.

Closes #11226.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65903 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-24 22:40:52 +00:00
Vadim Zeitlin
b6885972ee Fixes to key codes in keyboard events generated by wxMSW.
Only set Unicode key code if the event corresponds to a character key and set
it to (newly added) WXK_NONE for the other ones to avoid nonsensical values in
it for e.g. "Home" key presses.

Also set non-Unicode key to WXK_NONE for the characters that can't be
represented in the current locale. This is consistent with wxGTK and avoids
conflicts between special key values and Unicode keys.

Clearly document the above behaviour.

Notice that implementing the correct behaviour in wxMSW involved untangling
previously interwoven WM_KEY{DOWN,UP} and WM_CHAR messages handlers. Clearly
separate them now as they get different input (key codes for the former,
characters for the latter) and especially don't try to convert from both kinds
of input using a single wxCharCodeMSWToWX() function. As this function doesn't
need to distinguish between keys and characters any more it can simply return
the converted value in all cases instead of returning 0 sometimes to indicate
a character value instead of a key. Simplify the code using this function
accordingly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-09-11 10:18:47 +00:00
Vadim Zeitlin
5276b0a53c Use wxDELETE() and wxDELETEA() when possible.
Use wxDELETE[A]() functions which automatically NULL out their arguments after
deleting them instead of doing it manually.

Closes #9685.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-06-20 18:18:23 +00:00
Vadim Zeitlin
5708ae18f2 Add wxTreeCtrl::{Clear,Set}FocusedItem().
Allow changing just the currently focused (not selected) item and also
removing the focus completely.

Closes #11599.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-05-02 12:01:30 +00:00
Vadim Zeitlin
5cb3a695e0 Add wxTreeCtrl::SelectChildren() method.
Add MSW and generic implementation, documentation and change to the sample
showing it.

Closes #11620.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-26 12:43:39 +00:00
Vadim Zeitlin
f19259fce0 Invalidate stored wxTreeItemIds when the corresponding item is deleted in wxMSW.
m_htSelStart and m_htClickedItem stored in wxTreeCtrl must be invalidated when
the item they point to is deleted (which also happens when all the items are
deleted), otherwise the selection doesn't behave correctly after doing it.

Closes #11619.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63170 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-18 00:28:47 +00:00
Vadim Zeitlin
d6d857b124 Generate wxEVT_KEY_DOWN events for navigation keys in wxMSW wxTreeCtrl.
We only generated wxEVT_COMMAND_TREE_KEY_DOWN events for the keys which can be
used for tree control navigation and which are handled specially in the code
but not the wxEVT_KEY_DOWN ones. This was inconsistent with the other keys and
incompatible with wx 2.8 and other ports, so generate both events unless the
wxEVT_KEY_DOWN one was handled by the user code.

Closes #11621.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63169 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-18 00:28:41 +00:00
Vadim Zeitlin
3c8cbc12ca Improve hit detection in wxMSW wxTreeCtrl with wxTR_FULL_ROW_HIGHLIGHT style.
When wxTR_FULL_ROW_HIGHLIGHT is used, the item visually takes up the entire
breadth of the window so clicking both to the left or to the right of the item
should have the same effect as clicking on it.

So add a MSWIsOnItem() helper which tests for whether a point is above the
item correctly and use it in order to:

1. In multi selection mode, allow clicking anywhere to select the item(s)
   when Ctrl or Shift is pressed (Closes #11598).
2. Generate activation event when clicking to the right of the item too
   (Closes #11602).
3. Detect item bounds correctly in WM_LBUTTONUP handler (although it's
   not really clear what does this code do and hence what problem does this
   fix...).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63089 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-07 13:16:01 +00:00
Vadim Zeitlin
d301c44093 Fix selection events generation in multi-select wxTreeCtrl.
Only deselect the items when the mouse is released if really necessary: add a
flag indicating when it is instead of trying to deduce it in the mouse up
handler.

Closes #11099 (thanks to Jonathan Liu).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61784 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-30 17:24:53 +00:00
Vadim Zeitlin
f2fec40d2c Don't generate duplicated events for clicks on tree +/- buttons.
In multiple selection mode we process mouse events manually in wxTreeCtrl
itself and already take care of mouse clicks on the buttons there so don't
pass them on to the base class which would generate another event.

Closes #11098 (thanks to Jonathan Liu).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61783 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-30 17:24:45 +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
Vadim Zeitlin
3c01c59511 implement wxTreeCtrl::GetFocusedItem() for wxMSW too (see #10859)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-19 23:48:50 +00:00
Vadim Zeitlin
8664669368 make wxTreeCtrl::SelectItem(false) work in single selection controls under MSW (fixing the recently added unit test); also set the previously selected item in the selection changing/changed messages
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60921 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-06-06 22:56:57 +00:00
Vadim Zeitlin
d2f434e428 (harmless) Borland release build warning fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-04-25 14:07:38 +00:00
Vadim Zeitlin
7dac12efa7 more bug fixes to multiple selection mode (see #626, comment 47)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-18 10:01:36 +00:00
Vadim Zeitlin
47e105413f fix generation of key events with Alt pressed broken by r59369 (see #626)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-07 14:07:45 +00:00
Vadim Zeitlin
aa8166dd51 fix duplicate events for selection keys after the last change (see #626)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59369 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-06 16:13:23 +00:00
Vadim Zeitlin
25f701e632 don't use WPARAM in the header (build fix after r59336)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-05 16:32:56 +00:00
Vadim Zeitlin
c7d9c476ea fix multiple problems with selection in controls with wxTR_MULTIPLE style (closes #626)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59336 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-05 14:13:19 +00:00
Vadim Zeitlin
2ec94d6b96 add missing stdcall to fix crash when using state image lists after r58572
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58959 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-17 09:57:10 +00:00
Vadim Zeitlin
c0c133e13b add wx-prefixed and semicolon-requiring versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 11:45:59 +00:00
Vadim Zeitlin
c27dce1818 load ImageList_Copy() dynamically to allow wx apps to start up under Win95 (state image display in wxTreeCtrl still won't work though)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-31 21:54:11 +00:00
Vadim Zeitlin
d57f1dd7fe undo r58380 as it breaks tree control background repainting (see #9832)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-25 19:07:11 +00:00
Vadim Zeitlin
838ab05ede allow using wxBG_STYLE_CUSTOM even with the native controls and use it in wxTreeCtrl (see #9832)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-25 11:40:41 +00:00
Vadim Zeitlin
fa97ee2490 implement wxTreeCtrl::ItemHasChildren() properly for virtual root item; added unit test for it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-17 13:16:25 +00:00
Vadim Zeitlin
ae322a4870 undid change accidentally committed as part of r57093 but which didn't have anything to do with it and resulted in #10253
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-22 13:34:12 +00:00
Vadim Zeitlin
56873923f3 extract (and expand and clean up and document) the header window implementation used inside the generic wxDataViewCtrl in a separate wxHeaderCtrl class which could be reused in (generic) wxListCtrl and, most importantly, wxGrid later
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57093 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-03 21:53:10 +00:00
Vadim Zeitlin
0e2ad3233b don't reuse the double click handled in activation event handler for toggling the item (#9761)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57025 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-29 14:49:47 +00:00
Robert Roebling
4754ab1630 Next part of tree state icon patches
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-06-24 12:48:01 +00:00
Robert Roebling
03966fcb3f #9591: Item state (icons) for wxTreeCtrl on any platform
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-06-16 17:50:40 +00:00
Vadim Zeitlin
4a36036eb2 don't ask for bounding rectangle of a hidden root, this fixes a crash introduced by the previous patch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53084 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-04-07 20:12:57 +00:00
Vadim Zeitlin
7e45c15989 refresh the item after adding its first child as, apparently, otherwise the '+' is not always drawn immediately (patch 1927179)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53051 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-04-06 15:37:52 +00:00
Benjamin Williams
396f85bac5 vista tree crash fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-03-17 22:05:01 +00:00
Václav Slavík
937013e0fd 1. added wxEvtHandler::SafelyProcessEvent() and wxWindow::HandleWindowEvent() to correctly handle exceptions in even handlers in wxGTK
2. use HandleWindowEvent() everywhere as more obvious and convenient shortcut for GetEventHandler()->ProcessEvent(); also for consistency with wxGTK where it's required

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50329 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-29 17:00:58 +00:00
Vadim Zeitlin
6719c06a97 no real changes, just some cleanup: add wxIsAltDown() in addition to the existing wxIsShift/CtrlDown() and wxIsAnyModifiedDown() to test for all of them at once (slightly modified patch 1833235)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50013 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-17 00:24:07 +00:00
Julian Smart
20bdddadd5 Don't suppress accelerators that include Enter just because a tree control is focused
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49993 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-16 13:12:20 +00:00
Vadim Zeitlin
e0bf68d697 unselect all selected items, not just the currently focused one, when the mouse is right clicked outside of selection to minimize user confusion (patch 1702201, bug 1676471)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49916 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-13 17:18:58 +00:00
Benjamin Williams
5fe302ef74 bug fix for vista in multi-selection tree
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-04 21:26:56 +00:00
Vadim Zeitlin
cb776b6671 set the focus to the tree before generating the selection change events to have a more expected (and compatible with other platforms) order of tree and focus events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49588 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-11-01 20:26:11 +00:00
Vadim Zeitlin
5188000b1d refresh the item being collapsed when using comctl32.dll v6 as otherwise parts of its selection rectangle may be left on screen
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-10-26 23:24:06 +00:00
Vadim Zeitlin
f73eddd2a5 made wxTreeCtrl::GetNextVisible() behave in the same way in Win32 as in the generic version and implemented GetPrevVisible() in the generic version
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49085 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-10-07 21:58:51 +00:00
Vadim Zeitlin
0edeeb6d96 use wxWindow::NewControlId() instead of wxNewId() to avoid clashes with user-defined ids; bug fixes in wxMSW for negative menu and toolbar items ids
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-09-20 22:58:55 +00:00
Václav Slavík
e0a050e347 more changes to make wx compile without implicit wxString->char* conversion (for STL build)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-06-20 07:44:45 +00:00