Commit Graph

436 Commits

Author SHA1 Message Date
Václav Slavík
373a4816d4 Check for invalid items in generic wxDataViewCtrl::GetSelections().
This shouldn't normally happen, but if some bug causes it, detect it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-08 10:23:19 +00:00
Václav Slavík
04675edfb1 Remove selection methods taking int from generic wxDataViewCtrl.
Current public API uses wxDataViewItem, this code dated back to 2.8.
They were now protected instead of public, the code wasn't used
anywhere and wasn't portable, it existed only in the generic version.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-08 10:11:04 +00:00
Václav Slavík
8c7b871156 Use ChangeCurrentRow() in wxDataViewMainWindow::ItemDeleted().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-07 17:29:50 +00:00
Václav Slavík
b625294905 Clean up wxDataViewMainWindow::ItemDeleted() a bit.
Reuse shared code instead of duplicating it. No real changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68582 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-07 17:29:47 +00:00
Václav Slavík
c3b0247de1 wxDataViewSelection private type doesn't need to be exported.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-07 17:29:44 +00:00
Václav Slavík
43d2d359ce Remove unused ItemList type from datavgen.cpp.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-07 17:29:41 +00:00
Vadim Zeitlin
ff7bc95e6f Send wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED for generic version too.
Send this event when the column used for sorting changed in the generic
implementation of wxDataViewCtrl too.

Closes #13005.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68322 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-07-21 13:50:17 +00:00
Vadim Zeitlin
311c4a7a85 Fix drawing of expander columns not at 0 position in generic wxDVC.
The drawing code in the generic version of wxDataViewCtrl incorrectly supposed
that the expander column was always at position 0. This resulted in the
expander column not being drawn at all if it was not really the first one.

Fix the test to use wxDataViewCtrl::GetExpanderColumn() to correct this.

Closes #12870.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68321 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-07-21 13:50:14 +00:00
Vadim Zeitlin
4385e70296 Correct test for maximal row index in generic wxDataViewCtrl.
The comparison in EVT_CHAR handler was incorrect for an empty control without
any rows as it subtracting 1 from 0 resulted in UINT_MAX and not -1 as all the
values were unsigned.

Fix this by checking that the new row is valid instead, this is correct for
both signed and unsigned values.

Closes #13356.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-07-21 13:50:10 +00:00
Vadim Zeitlin
a09da78b03 Refresh the old current row when right clicking in wxDataViewCtrl.
the generic implementation of wxDataViewCtrl left the old current still
focused after selecting another row as current when it was right clicked.
Fix this by refreshing the previously current row after unfocusing it.

Closes #13330.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-07-19 22:35:57 +00:00
Vadim Zeitlin
cd9b34ef83 Refresh the generic wxDataViewCtrl header if it was made too small.
Although normally the control header is not supposed to be resized below its
minimal vertical size, sometimes this can still happen and in this case ugly
artefacts were displayed because it wasn't refreshed properly. Do refresh it
to avoid them.

Closes #13313.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-07-09 23:36:55 +00:00
Vadim Zeitlin
99ef43728a Change the loop condition to avoid comparing unsigned value with 0.
This resulted in (useful) g++ warning and didn't make any sense in any case.

Check for the loop variable value being 0 at the end of the loop instead now.
If the old code was correct it shouldn't change its behaviour and if not, this
might fix a bug.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-06-29 17:50:32 +00:00
Vadim Zeitlin
bbfd454841 Add wxDataViewCtrl::SetRowHeight() and provide its generic implementation.
Allow changing the (fixed) row height without using wxDV_VARIABLE_LINE_HEIGHT
which may slow down the control display too much.

The new method is not implemented for the native GTK and OS X implementations
yet but should be simple to implement there.

See #12749.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-06-07 22:49:56 +00:00
Dimitri Schoolwerth
a1b806b982 Replaced Ok() occurrences with IsOk() throughout trunk.
Additionally renamed wxOSX' private wxNativePrinterDC::Ok() function to IsOk().

Didn't deprecate the various Ok() functions: given the amount of changes already introduced in 3.0 a trivial one like this seems more suitable for after 3.0.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-05-03 16:29:04 +00:00
Vadim Zeitlin
da87ce5a36 Don't generate wxEVT_COMMAND_DATAVIEW_CACHE_HINT for empty control.
Don't send any cache hint events for empty wxDataViewCtrl. Sending them was
unnecessary, inconsistent with wxListCtrl (which doesn't send them when it's
empty) and the events also had incorrect range. Just don't create them at all
to avoid all these problems at once.

Closes #13132.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-23 18:01:36 +00:00
Václav Slavík
64c70359a7 Return wxWindow* from wxDataViewCustomRenderer::CreateEditorCtrl().
There's no reason to limit custom editor controls to wxControl, which
would rule out e.g. composite controls or any custom widgets.
Make appropriate changes to related functions and code too.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-22 18:25:32 +00:00
Václav Slavík
fce2dc61c3 Only react to clicks on the checkbox in wxDataViewToggleRenderer.
Previously, left click anywhere in the cell toggled the checkbox.
This was unexpected when the cursor was far from the checkbox
in a wide column. With this change, one has to be over the
checkbox to toggle it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-23 13:57:52 +00:00
Vadim Zeitlin
99f44d9704 Send wxEVT_COMMAND_DATAVIEW_CACHE_HINT to proper window.
The event was sent to wxDataViewCtrl parent instead of the control itself for
some reason, fix this.

Closes #13020.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67158 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-09 09:44:03 +00:00
Václav Slavík
548fa9c1eb Pass wxRect/wxPoint arguments to wxDataViewCustomRenderer by reference.
Instead of passing them by value, use const reference. This change
is safe to do, because these methods' signatures were different in 2.8
anyhow.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67099 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-01 12:16:49 +00:00
Václav Slavík
d2425a43ec Toggle checkboxes in generic wxDataViewCtrl with single click.
Both GTK+ and OS X native controls use single click to toggle
checkboxes, instead of double-click activation used by the generic
version. So does wxCheckListBox on Windows, so make wxDVC
behave the same way.

See #11185.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67094 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-28 21:23:10 +00:00
Václav Slavík
dbc3aec19a Get rid of WXGetAsCustom().
Instead, have WXOnActivate() and WXOnLeftClick() with same signatures as
their public API counterparts and just call Activate/LeftClick() from
them for wxDataViewCustomRenderer.

This accomplishes the same thing, but makes it easier to override
behaviour in wx's internal implementations of renderers.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67093 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-28 21:23:04 +00:00
Václav Slavík
1852bf0db5 wxDataViewCtrl: Fully prepare renderer for Activate() call.
Instead of just setting the value in the generic implementation, do full
preparation (incl. attributes etc.) as everywhere else.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-28 21:23:00 +00:00
Václav Slavík
3999336cb9 Fix vertical rules rendering in generic wxDataViewCtrl.
Vertical rules are now drawn in the last pixel of a column instead of in
the first, so that they align perfectly with native MSW wxHeaderCtrl as
well as for consistency with MSW native list control.  There's no
vertical rule at the most-left side of the control anymore.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66821 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-31 16:54:03 +00:00
Václav Slavík
c6b223ca49 Remove incorrect comment.
UpdateColumnWidthToFit() is in fact used when double-clicking columns separators.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-24 14:35:30 +00:00
Václav Slavík
3d825e0613 wxDataViewCtrl: fix autosized columns recalculation.
The code and its assumptions were correct only for generic wxHeaderCtrl,
it didn't work for MSW implementation. Fixed by updating all columns
every time.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66729 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-22 19:02:02 +00:00
Václav Slavík
40fc5b2f71 Fix typo and a leftover.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-06 14:33:19 +00:00
Robert Roebling
b9293331c6 Don't let anything, such as pressing F2, start editing an entry if the renderer is set to wxDATAVIEW_CELL_INERT
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-12-21 19:38:52 +00:00
Robert Roebling
d93cc83080 model column and index of column in the dataview can be different, correct this and also make wxGTK and wxMSW report the same thing in the event following wxDataViewModel::SetValue(), fixes #12755: wxDataViewCtrl bug when the column is mapped to different model column. Also commit some older change reseting the cursor under the mouse.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-12-21 19:27:35 +00:00
Vadim Zeitlin
98f8e6666b Add the possibility to disable invisible wxDataViewCtrl items.
Add new wxDataViewModel::IsEnabled() and wxDataViewListStore::IsEnabledByRow()
methods and implement support for actually disabling the items in wxOSX/Cocoa
native implementation of wxDataViewCtrl and limited support for it in the
generic version.

We need to implement this in wxGTK using GtkCellRenderer "sensitive" propriety
later.

Closes #12686.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-12-19 15:02:56 +00:00
Vadim Zeitlin
737883f20a Skip mouse events outside of item area in wxDataViewCtrl.
Don't consume mouse events outside of the area occupied by the items in the
generic implementation of wxDataViewCtrl as this prevented wxEVT_CONTEXT_MENU
events from being generated.

Closes #12706.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-24 00:42:19 +00:00
Vadim Zeitlin
ca81b52e62 Set column field of wxDVC ITEM_{ACTIVATED,CONTEXT_MENU} events.
Add missing calls to wxDataViewEvent::SetColumn() and SetDataViewColumn().

In the future it would be nice to refactor the code to have a common event
object initialization function that would make it impossible to forget to do
this.

Closes #12649.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66006 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-03 16:29:36 +00:00
Vadim Zeitlin
10875c13e9 Optimize wxDataViewMainWindow::FindNode() in generic wxDataViewCtrl.
Avoid unnecessary heap allocations and extra indirections and just use the
items pointers directly.

Also avoid copying the (potentially huge) nodes arrays.

Closes #12647.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66004 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-03 16:29:23 +00:00
Vadim Zeitlin
5ca9771ff3 Don't copy potentially big arrays in generic wxDataViewCtrl.
Use reference to hold the array of nodes instead of copying it.

(Really) closes #12587.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66003 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-03 16:29:18 +00:00
Václav Slavík
0645bd388c For large dataview controls, don't use all items to calculate best column width.
Instead, use just top and bottom N/2 items for some large enough value
of N. N is determined dynamically so that column best width calculation
doesn't take more than 50ms.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-30 15:57:59 +00:00
Václav Slavík
f0ccd2cbfa Add wxDataViewRendererBase::PrepareForItem() helper.
For calling SetValue() and SetAttr() consistently, instead of having the
same code duplicated all over the place.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65950 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-30 15:57:55 +00:00
Václav Slavík
86755098f5 Account for text attrs in generic wxDataViewCtrl's renderers.
When determining cell content's size, GetSize() measured the text using
wxDataViewCtrl's font, even though it could be renderer in bold or
italics.

Corrected by setting the attributes - and not only the value - prior to
GetSize() calls, and by using the right font in GetTextExtent() calls.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-30 15:57:49 +00:00
Václav Slavík
d0154e3a5a Add optional columns autosizing to wxDataViewCtrl.
Only implemented in the generic and GTK+ versions at the moment, OS X
support will be added later.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65948 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-30 15:57:41 +00:00
Robert Roebling
e3d358bbe4 wxDataViewCtrl::Expand() only works on items whose parents are already
expanded. The attached patch fixes this by expanding all ancestors of the
 item before expanding the item itself. Closes #12585: wxDataviewCtrl::Expand() needs to expand all ancestors

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-23 14:03:18 +00:00
Robert Roebling
3d9bff2f13 Set focus to generic wxDataViewCtrl when clicking with any mouse button, not just left, closes #12586: wxDataviewCtrl only gets focused on left mouse
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65872 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-23 14:00:15 +00:00
Vadim Zeitlin
97e5b0645e Clear selection when generic wxDataViewCtrl is cleared.
Selection could retain its old value and become invalid after calling Reset()
before.

Closes #12559.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65821 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-15 23:46:51 +00:00
Vadim Zeitlin
ce00f59b5b No changes whatsoever, just remove trailing whitespace.
There are no real changes in this commit but it removes all trailing white
space from our source files. This avoids problems when applying patches and
making diffs and it would be nice to prevent it from reappearing.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-09-30 11:44:45 +00:00
Vadim Zeitlin
80ce465c64 Add wxDataViewCtrl::{Set,Get}CurrentItem().
Current item is the same as the selected item in single selection mode but in
multiple selection mode there was no way to neither get this item nor change
it before so add the new functions to allow doing this now.

The new methods are implemented for the generic, GTK and OS X/Cocoa versions
but only stubs are provided for OS X/Carbon.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-10 12:53:03 +00:00
Vadim Zeitlin
62e9285aba Add name argument to wxDataViewCtrl ctor for consistency.
As all the other wxWidgets controls take the parameter in their ctor/Create()
it's unexpected that wxDataViewCtrl does not. Add the name parameter and pass
it to wxWindowBase::CreateBase() as usual.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-08 11:37:57 +00:00
Václav Slavík
aecf930c5e Fix DnD in generic wxDataViewCtrl when scrolled.
wxDataViewMainWindow drag and drop code incorrectly used Y coordinate
where X axis should be used to check whether the mouse is inside columns
area. This manifested itself as refusing to accept drops once the
control was sufficiently scrolled down.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65203 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-06 16:28:46 +00:00
Václav Slavík
ce5abbf9f5 Fix wxDataViewCtrl to omit expander space for all kinds of lists.
List-only models don't have expanders and so the control shouldn't
reserve any space for them; the notion of expander column doesn't make
sense here.

Previously, this was done correctly only for wxDataViewVirtualListModel;
"ordinary" list models, such as the one used by wxDataViewListCtrl, were
treated as generic tree models and 0th column had ugly empty space
reserved for (never used) expander.

This patch fixes it by adding IsListModel() helper function in
addition to existing IsVirtualListModel(). Some of the
IsVirtualListModel() tests were changed into IsListModel() checks as
appropriate.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65140 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-07-29 20:54:00 +00:00
Robert Roebling
a3a8d81d48 Let wxMSW report wxDataViewCustomRenderer::LeftClick() report the click position relative to the inner cell, not the window - as in wxGTK, fixes #12270: wxDataViewCustomRenderer::LeftClick behaves differently under wxGTK and
wxMSW

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65117 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-07-27 17:04:44 +00:00
Vadim Zeitlin
43fd7dbd79 Don't assert in wxDataViewCtrl::ItemDeleted() if item doesn't exist.
It seems that it might be valid to delete the items that the GUI control
doesn't know anything about, e.g. this could happen when deleting a child of a
collapsed node in a tree model. So remove the asserts which were triggered in
this case as there doesn't seem to be any way to avoid them with the current
code.

Closes #11802.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65060 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-07-23 23:33:01 +00:00
Vadim Zeitlin
63ced01b22 Generate key events in generic wxDataViewCtrl implementation.
Forward wxEVT_CHAR events from wxDataViewMainWindow to the parent window so
that they could be processed at wxDataViewCtrl level.

Call DisableKeyboardScrolling() to ensure that cursor movement keys are not
always eaten by the parent window but can be used for the navigation in the
control if they're not processed by user.

Add a test keyboard handler to the dataview sample to check that handling keys
in wxDataViewCtrl does work.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64957 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-07-14 11:12:03 +00:00
Vadim Zeitlin
6218600646 Fix activation handling in generic wxDataViewCtrl renderers.
Handling of activation in the generic implementation of standard renderers was
broken since r62589 which stopped calling their Activate() method. Restore it
by introducing a special WXOnActivate() replacing it (but clearly marked as
private and implementation-only) and calling it instead.

Closes #11460.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-06-20 17:43:30 +00:00
Robert Roebling
5d9e160561 Make wxDataViewCtrl::GetColumnPosition() return the index under MSW as per GTK and the docs (fixes #12129), give immediate visual feedback after calling e.g. wxDataViewColumn::SetHidden(true) under MSW, also per GTK+ and as I'd expect. Make GTK+ control emit header click events also for non-reorderable columns. Add a few tests for wxDataViewColumn::SetHidden() and wxDataViewCtrl::GetColumnPosition()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-06-10 11:47:18 +00:00