Commit Graph

552 Commits

Author SHA1 Message Date
Vadim Zeitlin
f2bf2d71c1 No changes, just make wxDataViewMainWindow::GetRowCount() const.
This is clearly an accessor function, so make it const, even if it requires a
const_cast<> inside it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70716 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-02-27 18:53:58 +00:00
Václav Slavík
eb7df491e1 Improve default wxDVC line height on Windows >= Vista.
Explorer in Vista/Win7 uses slightly larger rows, so mimic it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-02-27 14:27:47 +00:00
Václav Slavík
a739b8b2df Fix r70318 to skip unhandled events.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-02-25 12:55:46 +00:00
Vadim Zeitlin
4bdc891f54 Implement wxDV_ROW_LINES for generic wxDataViewCtrl.
Provide wxDataViewCtrl::SetAlternateRowColour() to specify the colour to use
for odd rows explicitly but determine it automatically from the background
colour if no explicit colour was specified.

Closes #12834.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-02-12 22:19:04 +00:00
Václav Slavík
907f09f44b Replace wxDataViewCtrl::StartEditor() with EditItem().
This is more consistent with other wxDVC methods (taking column pointer
as its argument) and other DVC-like classes where the name EditLabel()
is used for similar purposes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70377 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-17 14:05:17 +00:00
Václav Slavík
9944f9c6f3 Removed unused, wrong wxDataViewCtrl code.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-17 14:05:11 +00:00
Václav Slavík
ee1377e1fa Add wxDataViewCtrl::GetCurrentColumn().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-17 14:05:07 +00:00
Václav Slavík
5313727812 Make column width calculations in wxDataViewCtrl and wxHeaderCtrl consistent.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70338 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-14 16:51:57 +00:00
Václav Slavík
49f89f4d4b Don't react to Enter/Space/F2 with modifiers in generic wxDataViewCtrl.
Doing so was in conflict with system shortcuts; Alt+Space in particular
is used by Windows.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-11 13:42:53 +00:00
Václav Slavík
f52f37959d Don't crash in generic wxDataViewCtrl if selected column is removed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-09 18:59:23 +00:00
Václav Slavík
cf5d4c76af Implement wxDataViewModel::IsEnabled() support in generic implementation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-30 14:28:13 +00:00
Vadim Zeitlin
1c959a62ce Add possibility to set item background in generic wxDataViewCtrl.
Added wxDataViewItemAttr::SetBackgroundColour() and code to honour it in the
generic implementation of wxDataViewCtrl.

Closes #12621.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70050 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-19 12:54:38 +00:00
Václav Slavík
eff1c3e8ec Don't change horizontal scroll position needlessly in wxDataViewCtrl.
When ScrollTo() or EnsureVisible() was called in the generic
wxDataViewCtrl implementation with unspecified column, horizontal scroll
position was reset to left-most position, which doesn't make much sense.
Instead, leave horizontal position unchanged in this case and only
change it when explicitly requested.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70001 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-14 15:53:28 +00:00
Václav Slavík
78e18e8d53 Ensure that current column is visible in generic wxDataViewCtrl.
When navigating between columns using keyboard, ensure visibility of the
newly selected column.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70000 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-14 15:53:25 +00:00
Vadim Zeitlin
64ac3db840 Update all controls using in-place editors to handle Escape/Return correctly.
Define EVT_CHAR_HOOK handlers to ensure that pressing Escape/Return while an
in-place edit control is active affects only it and is not used for the
keyboard navigation.

Closes #9102.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-02 00:50:41 +00:00
Václav Slavík
0fdeaabe4d Account for indentation in wxDataViewCtrl::GetBestColumnWidth().
Generic control only accounted for actual content, but didn't consider
indentation level when calculating width of the expander column.

Fixes #13629.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69819 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-11-25 18:11:16 +00:00
Václav Slavík
a2a4e18c10 Make generic wxDataViewCtrl rows a bit taller.
They now use the same height that Windows 7's Explorer uses. This makes
more inline editor controls fit comfortably.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69800 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-11-23 13:43:04 +00:00
Václav Slavík
0fff3dfcbb Use Enter and Space for cell editing in generic wxDVC too.
If the normal Enter or Space processing (sending activate event or doing
activatable editing respectively) isn't handled by the control, use
these keys to trigger inline editing too, as F2 does.

This makes the Windows control more similar to OS X and GTK+ ones and
makes discovering editability easier.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69695 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-11-08 10:53:49 +00:00
Václav Slavík
5bb82ad49f Fix incorrect handling of ItemsAdded() in wxDataViewCtrl.
When adding items to the model in bulk and then calling ItemsAdded(),
internal representation in both the generic and GTK+ versions wasn't
updated correctly if the order of the notifications was such that an
item would be inserted after other new, but not yet inserted, items.

Fixes bug #13587.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-26 17:10:27 +00:00
Václav Slavík
dc73d7f5d4 Cleanup of wxDataViewCtrl cell activation code.
Fix confusion of what cell activation is and inconsistence with native
handling in GTK+. Document the distinction between activating (~
editing) a cell and activating (double-clicking) the whole item.

Deprecate wxDataViewCustomRenderer::LeftClick() and Activate() methods,
replace them with single ActivateCell() that is called for both kinds of
activation.

Fix implementations so that ActivateCell() is not called on
double-click, when it shouldn't, and vice versa: don't send
wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED for cell activation.

Partially reverts r67099 -- restores old 2.9 signatures of compatibility
LeftClick() and Activate() methods.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-19 16:20:17 +00:00
Václav Slavík
1d3a930e82 Use wxDatePickerCtrl in wxDataViewDateRenderer.
Inline editor is more in line with the behavior of other editors,
requiring double click to edit values was unexpected.

Also merge the two almost-but-not-quite identical implementations in
generic and GTK+ versions.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-19 16:20:06 +00:00
Václav Slavík
28fefd45f9 Return true from wxDataViewMainWindow::ItemDeleted().
Presumably, 'false' indicates failure, but there's no failure here: if
an item is not visible, because its parent wasn't expanded yet, it's
perfectly OK that we don't need to do anything.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-09 13:07:10 +00:00
Václav Slavík
a67e6b86f6 Handle inline editing in generic wxDataViewCtrl as Windows 7 does.
Mimic the behavior of Windows 7's Explorer: edit the item that has focus
if it is selected or the first selected item if focus is out of
selection.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-07 17:24:06 +00:00
Václav Slavík
1c8e71c92d Add columns focus and keyboard navigation to generic wxDataViewCtrl.
The UI tries to mimic Windows 7's Explorer's approach as much as
possible, taking inspiration in the GTK+ implementation when
appropriate. In particular, as long as the user doesn't use horizontal
navigation keys, everything looks as before and the user isn't bothered
with the existence of per-cell focus.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69322 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-07 15:03:02 +00:00
Vadim Zeitlin
fb5f677b6a Fix harmless gcc initialization order warning.
Put the initializes in wxDataViewTreeNode constructor initialization list in
order of their declaration.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69282 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-02 11:28:32 +00:00
Vadim Zeitlin
7ed24cb652 Send EVT_DATAVIEW_ITEM_CONTEXT_MENU events even when not clicking on an item.
Always send this event, even if the user right clicked outside of the client
area. This is useful for showing item-independent commands in the context
menu.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-21 15:07:56 +00:00
Vadim Zeitlin
15b8afdcb8 Reset previous sort column in generic wxDataViewColumn::SetSortOrder().
The sort indicator on the column previously used for sorting was only reset
when the user clicked on the column header (by wxDataViewHeaderWindow code
that explicitly called wxDataViewCtrl::SetSortingColumnIndex()) but not when
wxDataViewCtrl::SetSortOrder() was called directly.

Fix this and take care of updating everything in SetSortOrder() itself. This
makes the code simpler and also means that calling SetSortOrder() from the
program now works as expected (it resulted in having sort indicators in two
columns at once before).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69175 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-21 15:07:49 +00:00
Vadim Zeitlin
aadbdd1699 Remove wxHeaderColumn::SetAsSortKey() and only use SetSortOrder().
The two member functions, SetAsSortKey() and SetSortOrder(), were doing almost
the same thing but differently and the former was only used in the generic
wxDataViewCtrl implementation and not implemented in the native GTK/OS X one.

Remove SetAsSortKey() entirely and only keep UnsetAsSortKey() which is still
needed by generic/MSW wxDataViewCtrl. But only SetSortOrder() should now be
called to indicate that the column is used for sorting.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69174 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-21 15:07:46 +00:00
Vadim Zeitlin
1841f0790d Add GetExpanderColumnOrFirstOne() to avoid code duplication in generic wxDVC.
There were two strictly identical code snippets setting the expander column to
be the first one if it hadn't been set before, replace both of them with a
call to GetExpanderColumnOrFirstOne() function.

Also use this function instead of just GetExpanderColumn() (which might return
NULL) in a couple of places.

Notice that there are still a lot of places in the code where the column 0 is
hard coded as being the expander column, this would need to be fixed to really
support non-first expander column.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-20 18:37:11 +00:00
Vadim Zeitlin
42cbde5162 Reset the expander column when clearing columns in generic wxDVC.
The expander column becomes invalid when all columns are cleared, don't keep
a dangling pointer.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-20 18:37:08 +00:00
Václav Slavík
76b92fa5c7 Fix crash in wxDataViewCtrl::UpdateColWidths().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69003 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-05 15:40:56 +00:00
Václav Slavík
a027a36f2c wxDataViewCtrl: enable F2 editing with multiple selection too.
This matches the native (and thus expected) behavior of Windows
Explorer: edit the first item in selection. It's also better than
ignoring user's key presses.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-05 14:25:31 +00:00
Václav Slavík
857f05e1bf Use ProcessWindowEvent() in generic wxDataViewCtrl code.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-03 13:14:31 +00:00
Václav Slavík
cfc2188189 Extracted wxDataViewMainWindow left/right keys handling into separate methods.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68995 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-03 13:14:28 +00:00
Václav Slavík
1dc779fc6c Rename wxDataViewMainWindow::OnArrowChar to OnVerticalNavigation.
The method handled much more than just arrow characters and it didn't
handle all arrow characters.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68994 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-03 13:14:25 +00:00
Václav Slavík
2c336e249e Slightly more efficient wxDataViewCtrl::StartEditor().
Don't compute item rect until we know for sure that the item actually is
editable.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68993 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-03 13:14:23 +00:00
Václav Slavík
c2efa4b48a Fix generic wxDataViewCtrl Enter handling to conform to Windows UI.
Spacebar is used to activate columns (e.g. toggle a checkbox).  Enter
activates the item, i.e. sends wxEVT_COMMAND_ITEM_ACTIVATED. If that
event isn't handled, Enter acts the same as Space.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68992 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-03 13:14:20 +00:00
Václav Slavík
35219832c9 Add items to correct position in wxDataViewCtrl:ItemAdded.
In both the generic and GTK+ versions, ItemAdded() always appended the
new item, regardless of its position among its siblings  in the model.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68965 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-31 09:36:27 +00:00
Václav Slavík
bed74e488f Generic wxDataViewCtrl: resize autosized columns at idle time.
This is much more efficient than doing it immediately when adding large
number of items into a control with lots of them.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68964 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-31 09:04:41 +00:00
Vadim Zeitlin
c46ecbe3b5 Fix computation of the item offset in generic wxDataViewCtrl code.
We need to account for the expander even for the items that don't have
children when computing their offset as their parent still does have it,
contributing to the total offset.

This corrects the fixes of r68836 to also work for the leaf items.

Also rename expanderOffset variable to more clear itemOffset.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68960 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-30 13:40:40 +00:00
Václav Slavík
77b555c2a4 Send wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED if WXOnActivate() returned false too.
This is consistent with wxGTK implementation and generally makes sense:
when the renderer cannot handle activation, whole-item activation should
be tried next.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-29 17:25:38 +00:00
Václav Slavík
297e2532b1 Make generic wxDataViewToggleRenderer react to activation.
Previously it only responded to single-clicks, which was to avoid the
need to double-click checkboxes. Fixed to react to activation via
double-click or keyboard too.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68953 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-29 17:25:33 +00:00
Václav Slavík
276227fcbb Activate cells from keyboard too in generic wxDataViewCtrl.
wxDataViewCtrl only called WXOnActivate() in reaction to double-click.
When Enter/Spacebar was pressed, only
wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED was sent, without calling
OnActivate() even if it was possible.

Fixed to handle both kinds of input identically.

Because there's currently no way to change current focus to a particular
column (as GtkTreeView can do), call WXOnActivate() on the first
activatable column.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68952 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-29 17:25:25 +00:00
Václav Slavík
d54f0605a9 More understandable symbolic constants in generic wxDVC's DoJob class.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68932 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-27 16:44:47 +00:00
Václav Slavík
e1f30123c9 Use spacebar to activate items in generic wxDataViewCtrl too.
Pressing Spacebar now behaves the same as Enter in the generic control,
for consistency with the GTK+ control and native Windows list controls.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68931 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-27 16:44:45 +00:00
Václav Slavík
a2d3c415d7 Remove DestroyTreeHelper(), make GetChildNodes() const, add RemoveChild().
There's no reason for DestroyTreeHelper() code, that's what destructors
are for.  On a related note, make removal of children from a node more
explicit too.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-27 16:44:42 +00:00
Václav Slavík
c2c89730e2 Add wxDataViewMainWindow::GetModel() helper.
It's slightly less verbose than GetOwner()->GetModel() used all
over the place.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68929 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-27 16:44:39 +00:00
Václav Slavík
ff3c5ad3d3 Better names in wxDataViewTreeNode.
GetChildNodes() instead of GetNodes(), AddChild() instead of AddNode().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68928 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-27 16:44:36 +00:00
Václav Slavík
dd90475f71 Use wxTE_PROCESS_ENTER with wxDataViewCtrl text controls.
wxDVC code depends on wxEVT_COMMAND_TEXT_ENTER to hide the
inline editing controls.

Fixes #13412.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68927 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-27 15:23:43 +00:00
Václav Slavík
d0cfefc4e0 Save memory in wxDataViewTreeNode.
Put data that are meaningful only for non-leaf nodes into a separate
struct that is only allocated for branch nodes. This makes branch
nodes larger by sizeof(void*), but leaf nodes save >50% of memory.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68914 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-27 13:24:22 +00:00