Commit Graph

27554 Commits

Author SHA1 Message Date
Vadim Zeitlin
b0607dd221 Add support for custom attributes to wxOSX/Cocoa wxDataViewCustomRenderer.
Virtualize applying the attributes in a new OSXApplyAttr() function and simply
store the attribute in its wxDataViewCustomRenderer version so that it could
be reused later in Render().

The attributes now work correctly in wxOSX/Cocoa dataview sample too.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62599 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:42:24 +00:00
Vadim Zeitlin
508f680769 Don't overwrite background in custom renderer in OSX/Cocoa.
Erasing background seems to be unnecessary and was actively harmful for the
selected items which didn't appear with the correct background colour. Just
don't do it at all.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:42:04 +00:00
Vadim Zeitlin
c80cde0001 Add support for custom attributes to wxGTK wxDataViewCustomRenderer.
Call SetAttr() to store them in wxDataViewCustomRenderer before rendering it
and also honour the attributes in RenderText() (by reusing the same code we
already use for wxDataViewTextRenderer).

The attributes now work correctly in dataview sample under wxGTK as well.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62596 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:58 +00:00
Vadim Zeitlin
2a454ffdbd Correct text position in wxDataViewCustomRenderer::RenderText() in wxGTK.
It simply ignored the passed in rectangle meaning that the text was always
drawn at the top left corner of the cell rectangle.

Also more code cleanup: collect all render call parameters in a single struct
and provide a public function to set them all at once instead of making them
public.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:50 +00:00
Vadim Zeitlin
a923d77fc5 Pass full cell rectangle to WXCallRender().
There is no need to ask the item for its size in gtk_wx_cell_renderer_render()
as WXCallRender() will already do it (correctly, accounting for badly
implemented GetSize() unlike this version) internally on its own.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:42 +00:00
Vadim Zeitlin
9d02e49483 Add helper wxRectFromGDKRect() function and use it.
No real changes, just another small refactoring.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:35 +00:00
Vadim Zeitlin
70884c6fc8 No real changes, just remove some unnecessary casts.
Use correct GdkRectangle* type for wxDataViewCustomRenderer::xxx_area members
instead of casting them to and from void*.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:28 +00:00
Vadim Zeitlin
c2a738e372 Avoid setting attributes in GTK wxDataViewRenderer if not supported.
If the native renderer doesn't support the properties which we map our
attributes to, trying to set them is useless and results in GTK+ warnings so
don't do it.

Add wxDataViewRenderer::GtkSupportsAttrs() which can be overridden to indicate
whether the renderer supports attributes or not. We probably could use
g_object_class_find_property() instead to detect it automatically but for now
these properties are all supported only by GtkCellRendererText and not
supported anywhere else so using a single virtual function seems tidier.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:22 +00:00
Vadim Zeitlin
62265c2c67 Allow custom wxDataViewCtrl renderers to easily use attributes.
Set up the DC passed to wxDataViewCustomRenderer::Render() to use the font and
colour defined by the item attribute by default so that any calls to
RenderText() from it will use them automatically.

Also added public wxDataViewCustomRenderer::GetAttr() to allow retrieving the
attribute explicitly in Render().

The column using custom renderer in the dataview sample now works as expected
in the generic version; the native ones will be corrected in the upcoming
commits.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:41:11 +00:00
Vadim Zeitlin
6eec70b984 Big wxDataViewCtrl renderer classes refactoring.
This commit adds no changes in functionality but paves way for the upcoming
improvements of wxDataViewCustomRenderer.

First, introduce wxDataViewCustomRendererBase class in order to allow
implementing behaviour common to custom renderers in all ports in this class
instead of triplicating it.

This required splitting monolithic dataview.h in more parts, now we have
wx/dvrenderer.h which defines wxDataViewRendererBase and the new
wxDataViewCustomRendererBase and includes wx/port/dvrenderer.h which define
wxDataViewRenderer and wx/port/dvrenderers.h which defines all the other
renderer classes.

Also bring renderers hierarchy in the generic version closer to other ports:
all standard renderer classes now inherit from wxDataViewRenderer and not
wxDataViewCustomRenderer in for consistency with the other ports.
wxDataViewRenderer itself still does derive from wxDataViewCustomRendererBase,
unlike elsewhere, but this is unavoidable considering that all generic
renderers are custom ones.

Finally do some cleanup in OS X part of the code: correct indentation,
spacing, comment style.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62589 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:40:58 +00:00
Paul Cornett
f0368d28bf wxSpinCtrl values are always integral, they don't need to be rounded
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62586 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 17:36:53 +00:00
Vadim Zeitlin
0738b901b1 Fix discrepancy between different ways of measuring text extents under Mac.
wxGraphicsContext::GetTextExtent() didn't round the returned double result to
int but truncated it instead and so returned different extent than
GetPartialTextExtents() which did round it up.

Moreover, wxGraphicsContext::GetPartialTextExtents() didn't round it up
correctly: it wrongly added 0.5 to the value still stored as double and which
was hence rounded up (correctly, this time) when converted to int in
wxDC::GetPartialTextExtents().

These two errors combined to produce difference of up to 2 pixels between the
last offset returned by wxDC::GetPartialTextExtents() and the total string
extent returned by wxDC::GetTextExtent() which thoroughly confused the code in
wxControlBase::DoEllipsizeSingleLine() (and probably not only there).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-10 00:13:57 +00:00
Vadim Zeitlin
c8b6d5a049 Fix fatal bug when changing wxDataViewCtrl model in wxGTK.
wxDataViewCtrl::AssociateModel() wrongly delete m_notifier itself if the
control already had a model even though the notifier was registered using
AddNotifier() which also scheduled it for deletion when the old model itself
was destroyed. This resulted in double deletion and reproducible crash
whenever the model was changed.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-09 01:57:47 +00:00
Paul Cornett
845a6bbf74 avoid causing idle event from GetValue(), fixes #11013
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-08 23:50:46 +00:00
Peter Cawley
7d8c1fbc47 Replaced hard-coded font size in ribbon art provider with a system defined font size (see #11341).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-08 21:50:06 +00:00
Kevin Ollivier
b6dc21e768 Make wxSTAY_ON_TOP and other window styles toggleable via SetWindowStyleFlag under OS X Cocoa.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-08 03:03:06 +00:00
Vadim Zeitlin
5414d62e3a Change interpretation of font height in wxMSW to mean character height.
Accept both positive and negative height values in wxFont::SetPixelSize() in
wxMSW and map them both to a negative height when passing to MSW API in order
to request mapping against the character height and not the total cell height.

For positive heights this is more consistent with the other ports and also
expectations of people using this function. We keep the possibility to use
the negative heights inly for compatibility with the existing code which
worked around the (incorrect) interpretation of the positive height as cell
heights in the previous wxMSW versions by passing a negative height
explicitly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-06 20:47:52 +00:00
Vadim Zeitlin
aa2444bd9e Prefer to use standard selection colour in wxDataViewCustomRenderer.
We currently don't allow customizing the background colour of the selected
items which is always the system standard colour and so we should also use the
system standard selection foreground colour as a combination of a custom
foreground and standard background may be completely unreadable.

Notice that it is still possible to use custom colour if really needed from a
custom renderer by removing wxDATAVIEW_CELL_SELECTED from the flags before
calling the base class version of RenderText().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-06 20:47:44 +00:00
Stefan Csomor
f2d5064cca adding support for wxShowEvent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-06 17:33:55 +00:00
Vadim Zeitlin
636a334145 Compilation fix after r62562.
Use char*, not wxChar*, for format specification strings.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-05 15:37:48 +00:00
Vadim Zeitlin
651548666a Change wxLongLongFmtSpec to be a non-wide string.
As with other ANSI/Unicode unification changes, we choose to preserve
compatibility with the existing code using wxLongLongFmtSpec in ANSI build
and require people using it in Unicode build to change their code.

Closes #11372.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-05 14:59:55 +00:00
Vadim Zeitlin
7b611a3ae9 Recognize UNCs starting with forward slashes too in wxFileName.
Treat \\share\path and //share/path in the same way (for wxPATH_DOS paths).

Add a test for UNC parsing to the unit test.

Closes #11376.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-05 14:59:39 +00:00
Vadim Zeitlin
2b76dfb048 Implement wxFindWindowAtPoint() correctly for wxOSX/Carbon.
Use Carbon FindWindow() function instead of the generic wx version which
doesn't take the relative windows Z-order into account correctly.

Closes #11412.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-05 14:59:14 +00:00
Kevin Ollivier
32e806fe7f Create an autorelease pool to catch objects created during several special situations, like customized initialization, so that we don't leak there.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-05 00:31:36 +00:00
Vadim Zeitlin
a3873c6f9c Revert "trivial" change of r61772.
The "slight code simplification" of r61772 broke the code as it could now
crash if dangling m_Cell pointer was used during parsing. Revert it and add a
comment explaining why the code is written in the way it is.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-04 16:15:52 +00:00
Paul Cornett
69cecdb1c4 work around probable bug in GTK+ 2.18 when calling WriteText on a new, empty control, #11409
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-04 05:18:38 +00:00
Jaakko Salli
ddadf560da Some wxComboCtrlBase member functions were enclosed within incorrect compatibility condition
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-02 14:57:35 +00:00
Kevin Ollivier
16671f229a Start on Get/SetStyle support for OS X Cocoa wxTextCtrl.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-01 00:58:04 +00:00
Kevin Ollivier
19b4098602 wxColour -> NSColor conversion.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-01 00:56:23 +00:00
Kevin Ollivier
f7946addb2 NSFont -> wxFont conversion.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-31 23:00:04 +00:00
Kevin Ollivier
b478f24288 Adding NSColor -> wxColour conversion.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-31 22:20:27 +00:00
Paul Cornett
e88f9403f0 make sure ShowWithoutActivating only takes effect once
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-31 16:29:19 +00:00
Vadim Zeitlin
0ead57d528 No real changes, just fix a typo in wxDataViewModel::Compare().
Return -1 from the comparison function instead of -11 when comparing
wxDateTime values. It shouldn't matter which value is returned as long as it's
negative but it is definitely tidier.

Closes #11381.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-31 15:57:58 +00:00
Vadim Zeitlin
d831e2db16 Return the real column width from wxOSX wxDataViewColumn::GetWidth().
Code used to return the last programmatically set width value instead of the
real column width which could have been changed by user if the column was
resizeable, fix this by returning the current NSTableColumn:width value.

Closes #11397.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-31 15:57:51 +00:00
Paul Cornett
52802b0727 implement ShowWithoutActivating for GTK+
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-30 07:39:58 +00:00
Kevin Ollivier
335b5afa77 Compilation fix for last commit.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-30 06:01:16 +00:00
Kevin Ollivier
dbc7ceb925 Initial ShowWithoutActivating implementations for Mac and Windows, and attempt to improve IsActive behavior on Mac. Also adding ShowWithoutActivating() and Show/Hide tests, but until the mainloop issues are resolved, not adding them to tests.bkl.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-30 05:04:47 +00:00
Jaakko Salli
a795a5fd99 Fixed backslash escaping in wxArrayStringProperty::StringToValue()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62506 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-28 15:57:58 +00:00
Jouk Jansen
4c9147881b omitting assert that makes no sense for OpenVMS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-28 12:05:18 +00:00
Vadim Zeitlin
eb74a51f7e No changes, just add a comment to the button focus handling code.
The workarounds for the button focus issues should become unnecessary if we
switch to setting the focus correctly as explained in the linked post.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-27 16:44:16 +00:00
Vadim Zeitlin
2feacb6eb3 Add wxDataViewListModel base class for list models.
Introduce a base class for wxDataViewIndexListModel and
wxDataViewVirtualListModel instead of duplicating the same code in both of
them making the code difficult to maintain and change.

For now this class is not documented as it is used just to avoid duplication
in the implementation but maybe we should make it public to allow defining
other flat list data models (if this can be made to work in Carbon version).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62499 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-24 21:41:54 +00:00
Vadim Zeitlin
43c64cc6c9 Create model and column in wxDataViewTreeCtrl::Create(), not ctor.
Old code created the tree model and its unique built-in column only in
wxDataViewTreeCtrl ctor but not in Create(), meaning that the behaviour was
very different depending on whether you used base class ctor call or Create()
in a derived class. This was confusing and completely inconsistent with wx API
in which using the default ctor and Create() is supposed to always have
exactly the same effect as using non-default ctor so change this to create the
model in Create() so that it's always done.

Slightly update the documentation and also add wxDataViewTreeCtrl::Init() for
consistency.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-24 21:41:44 +00:00
Vadim Zeitlin
bf68a18d3c No real changes, just make wxDataViewCtrl::Init() private in wxGTK.
The usual convention is for Init() method to be private and to call it from
constructor, follow it in GTK implementation of wxDataViewCtrl too instead of
making it public and calling it from Create().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-24 21:41:30 +00:00
Stefan Csomor
65536c9221 support for auto-rotate on iphone
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62496 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-24 19:28:50 +00:00
Stefan Csomor
502113941d switching to explicit flush mode, otherwise clientdc destruction lead to contention in customrenderers in osx
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62495 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-24 19:22:40 +00:00
Vadim Zeitlin
eda34276d6 Don't show anything in the cells which should be empty in Cocoa wxDVC.
Implement a custom NSTableColumn-derived class to return nil for the cells
which shouldn't show anything at all because they are part of a container row.

This finally fixes the totally wrong display of the first page of the dataview
sample under OS X.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-24 01:03:36 +00:00
Vadim Zeitlin
9461dd8c71 Use virtual functions to convert NSObject to the correct type in wxDVC.
Instead of trying to determine the type of the value which should be extracted
from the NSObject we receive from NSOutlineView, just pass it to a virtual
method in the renderer which knows which type does it need.

This fixes the problem with editing boolean/checkbox columns and makes the
code more elegant.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-23 23:49:26 +00:00
Vadim Zeitlin
795dac4c86 Add wxDataViewModel::ChangeValue() and use it in wxDVC implementation.
ChangeValue() is a trivial wrapper calling both SetValue() and ValueChanged().
It allows to replace many calls to SetValue() immediately followed by
ValueChanged() with a single function call which is significantly shorter and
less error-prone (e.g. most of the existing code didn't test SetValue() return
code at all).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62489 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-23 23:49:16 +00:00
Vadim Zeitlin
fe5816f08f Compilation fix for PCH-less OS X build after wxFSW merge.
Include wx/log.h explicitly as we use wxLogTrace().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-22 16:53:57 +00:00
Vadim Zeitlin
5cd9986613 Refactor wxEventLoopSource-related code.
Currently wxEventLoopSource can't be created directly and can only be used to
monitor file descriptors so reduce the API to just wxEventLoop::AddSourceForFD()
and remove AddSource(), RemoveSource() and RemoveAllSources() which couldn't
be implemented for all ports. This makes the code much simpler without any
loss of functionality.

Make wxEventLoopSource responsible for removing itself from the event loop
when it is deleted. This allows to remove IsOk() and Invalidate() methods
making the code simpler and gets rid of various sets/maps which were used
before.

This also allows to support event loop sources in Carbon as well: wxOSX/Carbon
now compiles and works with wxUSE_FSWATCHER==1.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-10-22 11:36:35 +00:00