Commit Graph

265 Commits

Author SHA1 Message Date
Stefan Csomor
d58e3e3ce6 Fix returning wrong client size for some controls in wxOSX
Make sure we are not neglecting the layout insets, for controls like
button, choice and gauge, otherwise client sizes became larger than
control sizes.

Closes #18717.
2020-07-21 15:42:10 +02:00
Stefan Csomor
b2d4a9dedc adding data-transfer direction when getting native datatypes
we are publishing exactly what we have internally when data has to be get, and when setting, we might have more formats we can support
2020-07-12 17:53:10 +02:00
Stefan Csomor
9be2c3717d Improve native keyDown handling in wxOSX
Provide API for dealing with m_lastKeyDownEvent instead of using it
directly and extend it to avoid sending duplicate events for keys which
are mapped to multiple selectors, such as Ctrl-O with the default key
bindings.

Closes https://github.com/wxWidgets/wxWidgets/pull/1928
2020-07-06 00:13:18 +02:00
Stefan Csomor
89761300c8 always available with 10.11 SDK 2020-07-04 21:03:41 +02:00
Stefan Csomor
d49875f34f SDK 10.11 minimum 2020-07-04 20:47:20 +02:00
Vadim Zeitlin
3c87ffdaec Fix dumping wrong selector in wxOSX trace message
No real changes, just pass the correct (and interesting) value to
wxLogTrace() to actually see which selector are we called for.
2020-07-04 14:10:45 +02:00
Stefan Csomor
f739fd13ca switching to 10.10+ API 2020-06-29 22:37:01 +02:00
Stefan Csomor
199a3f51ef remove older code for new macos 10.10 base requirement 2020-06-28 08:47:50 +02:00
Stefan Csomor
31581c0f41 supporting native large control sizes 2020-06-25 16:12:55 +02:00
Stefan Csomor
80610cb383 switching from AvailabilityMacros.h to Availability.h
The old version is not updated for 10.16 therefore switch to the ‚newer‘ version - that existed since 10.6 - starting with double underscores
2020-06-25 15:59:53 +02:00
tellowkrinkle
9278c3e01c Round frame sizes up, not down in wxOSX
On Retina display macs, those values can contain halves.  If you round
them down, you end up cutting off content (e.g. cutting off the last
letter in a text label).

Closes https://github.com/wxWidgets/wxWidgets/pull/1905
2020-06-23 01:34:54 +02:00
Stefan Csomor
59d1cb8756 improving autorelease memory handling
life sample was using up memory when running in a tight loop, because the normal event autorelease pool was never reached
2019-11-20 16:23:52 +01:00
Stefan Csomor
294c8a6b23 moving datatransfer.h to source files
former place in private.h broke Audacity builds
2019-11-05 19:20:51 +01:00
Vadim Zeitlin
85b5337160 Try to improve CanFocus() behaviour for hidden windows
This should be less important now that we don't rely on CanFocus() to
determine if we should set focus to the window any longer, but it seems
to still be better to try to make it work better for hidden windows, so
at least return true from it when full keyboard access is on.

When it's off, the behaviour is the same as before, but this doesn't
affect wxTextCtrl, whose peer NSView overrides CanFocus() to always
return true.

We almost certainly need to override CanFocus() in other views, notably
wxDataViewCtrl, wxSearchCtrl, and any other controls that can have focus
even when full keyboard access is off.

See #17340.
2019-10-27 01:42:26 +02:00
Vadim Zeitlin
a5d719dc19 Fix setting initial focus in wxOSX
Previously calls to SetFocus() during construction/initialization of the
parent window simply didn't do anything for windows other than
wxTextCtrl because CanFocus() always returned false for them because
they were not shown yet (while wxTextCtrl implementation overrides
CanFocus() to always return true, probably to work around the same
problem).

Now use [NSView setInitialFirstResponder:] if the window is currently
hidden to try to focus it when it's shown. This might still fail if the
window is really not focusable (e.g. for non-text windows when full
keyboard access is off), but it's not worse than what happens now, and
it also may work -- unlike now.

Closes #17340.
2019-10-27 01:20:39 +02:00
Vadim Zeitlin
55da22563b Add even more focus tracing to wxOSX
Log CanFocus() results too.
2019-10-27 00:19:56 +02:00
Vadim Zeitlin
3406147690 Improve tracing of focus event in wxOSX
Give more details about the window gaining/losing focus rather than only
printing out its address.
2019-10-27 00:14:41 +02:00
Vadim Zeitlin
87bba02fef Stop handling performKeyEquivalent: in wxOSX
We can't handle the accelerators (known as "key equivalents" in Cocoa)
in this function because it is called for the views in top to bottom
order, while wx semantics is for accelerators to be handled in the
accelerator table closest to the focused window.

So just remove this code and rely on accelerator handling happening in
wxWindowMac::OSXHandleKeyEvent() instead.

Closes #13937.
2019-10-27 00:02:29 +02:00
Vadim Zeitlin
df689e739a Add tracing to key event handling functions
No real changes, just make it simpler to understand what's going in
wxOSX code when handling key events by sprinkling it with wxLogTrace
calls.
2019-10-26 23:50:01 +02:00
Stefan Csomor
f83577df45 Changing datatransfer implementation from CFPasteboard to NSPasteboard API (#1264)
* changing datatransfer from CFPasteboard to NSPasteboard API

* factoring and cleaning up

* Switching back naming

* missed file

* getting wxCFStringRef to be independent of system headers

* add unichar include

* using wxCFStringRef in header

* moving to private headers, change method name

* adapting to lesser content in cfstring.h

* Removing malloc/free usage

* use wxScopedArray throughout

* using wxMemoryBuffer instead of char[]

* fixing nonprecomp headers

* missing forward decl in non-precomp builds
2019-10-08 06:32:44 +02:00
Artur Wieczorek
c7643cefe0 Avoid compilation warnings under OS X 10.11
Warnings about incompatible pointer are generated
with 10.11 SDK so function arguments should be
constrained also for this SDK version.
2019-10-02 20:37:46 +02:00
Jeff Davidson
04dfe90e55 Fix wxWindow::setBackgroundColour(wxNullColour) on OS X
Commit 91aa6ba36e introduced a
regression causing this to crash. We need to validate that the color
is valid before attempting to call OSXGetNSColor; if it is not, we
should clear any previously-set background color.

Closes #18470.

Closes https://github.com/wxWidgets/wxWidgets/pull/1503
2019-08-24 21:04:47 +02:00
Brian Clark
ee0cffe9bf Handle the fact that, in OSX 10.15 (Catalina) some osx controls newly respond to the contentView selector and return nil. (#1487)
This has the effect of suppressing wxEVT_PAINT events, because the rectangle in which to draw/paint is calculated incorrectly.
2019-08-20 14:03:13 +02:00
Stefan Csomor
5020a810db Fix macOS memory leaks, also avoid false positive warnings from clang analyzer
__clang_analyzer__ is a constant that only is defined during analyze build, this helps avoiding false positives as long as there is no specific way to silence analyzer messages
2019-04-21 23:52:37 +02:00
Stefan Csomor
f8bdd27164 Fixing warning when compiling against SDK < 10.14 2019-04-19 09:40:38 +02:00
Vadim Zeitlin
fe311b9cc5 Use __builtin_available() when available in wxMac builds
The advantage of using this compiler builtin instead of our own platform
checks is that the compiler will warn us (if -Wunguarded-availability is
turned on for APIs introduced before 10.13 or by default for later ones)
if a check is forgotten, which is not the case for the manual checks.

Update the code to use WX_IS_MACOS_AVAILABLE() macro, which expands to
__builtin_available() when supported, and also use API_AVAILABLE() where
it makes sense to avoid having too many checks.
2019-04-18 00:02:34 +02:00
Stefan Csomor
f163578c94 macOS expose scroll invertion in event
applied patch from #18358, thanks for the patch Andy
2019-03-12 12:22:41 +01:00
Stefan Csomor
e5e6ee7e77 macOS wxWidgetImpl constructor with flags
replacing bools with int flag
2019-01-03 20:02:24 +01:00
Stefan Csomor
5581e5079f separate non-native mouse handling from IsUserPane
NSOpenGLView is needed under 10.14 as native view, in order to reuse wx touch and mouse handling we trigger this separately from IsUserPane being true
2019-01-03 16:28:19 +01:00
Stefan Csomor
a29ea16ccd separate non-native key handling from IsUserPane
NSOpenGLView is needed under 10.14 as a native view, but it doesn’t have its own native key handling, therefore use the same code we have for non-native custom views.
2019-01-03 13:26:50 +01:00
Stefan Csomor
e484a2db19 force subview refresh on macOS 10.14
even on dark mode not all NSViews have their own layer, therefore don’t take that as a condition, because a child of such a view still might be layer-backed and need an explicit redraw.
Avoid spurious redraws for not visible windows (especiall important for not-yet fully constructed views or views during destruction)
2018-11-08 15:04:42 +01:00
Stefan Csomor
b77aa4782d Forcing paint after show on 10.14
layer-backed views do not get a refresh when shown, but wx-user code might depend on the assumption that they do
2018-11-05 14:37:54 +01:00
Stefan Csomor
f257780771 Implement shaped windows closer to other platforms
wxFRAME_SHAPED is not needed anymore under OSX and a shaped window can just have a background color, does not need a paint handler.
2018-10-25 20:13:40 +02:00
Václav Slavík
81ef669c6d Fix wxPreferencesPage rendering in macOS dark mode
In 10.14's dark mode, all views are layer-backed and the assumption that child
windows are redrawn with their parent may not be correct. Change Refresh() to
explicitly refresh child windows too.

Also explicitly refresh the page before showing it in wxPreferences, because
otherwise generic windows wouldn't be drawn correctly.
2018-09-20 19:19:15 +02:00
Stefan Csomor
2ab430965c Fixing wxGLCanvas under 10.14, preparing for layer based drawing
see https://github.com/wxWidgets/wxWidgets/pull/846 , thanks to dkulp
2018-06-30 16:57:57 +02:00
Stefan Csomor
616f0ca7f9 Fixing notebook drawing
Workaround for drawing problems under 10.14 as we do not draw the notebook ourselves, this should be ok on all system versions, for details see #18146
2018-06-27 18:33:23 +02:00
Maarten Bent
ef539a68d7 Prevent use of uninitialized variable 2018-03-06 23:31:06 +01:00
Vadim Zeitlin
cad824d089 Let windows with wxWANTS_CHARS have TAB presses under Mac
This notably fixes the use of TAB in wxStyledTextCtrl, where it's
supposed to be handled by the control itself and not as a navigation
key, but is more general than this.

Fixes a regression from 8bca6deda3.

Closes #17999.
2018-02-18 21:22:41 +01:00
Vadim Zeitlin
b552efedfc Remove commented out line in wxOSX SetFocus()
No real changes, just remove a "TODO" comment as it seems it's safe to
do it after 5+ years (see f897d9ed1a which
added it).
2018-02-16 15:57:05 +01:00
Vadim Zeitlin
ca5e944a67 Merge branch 'mac'
Assorted macOS fixes, see https://github.com/wxWidgets/wxWidgets/pull/625
2018-01-14 18:51:31 +01:00
sbrowne
d3f20c3837 Fix hang when reparenting a frozen window in wxOSX
The wrong order of changing parent and freezing/thawing could result in
hanging the application when reparenting frozen windows, e.g. when
switching order of pages in a notebook.

Closes #16722.
2018-01-14 18:51:02 +01:00
John Roberts
f36973875e Silence uninitialized variable warning in wxMac PanGestureEvent
Even though the value of this variable is not actually used in this
case, we still must initialize it to something before comparing with
NSGestureRecognizerState{Began,Ended} below.

Closes https://github.com/wxWidgets/wxWidgets/pull/645
2017-12-24 15:54:51 +01:00
Vadim Zeitlin
df2f0321fb Some simplification and tidying up of the previous commit
Explain why the order here is important.

Also get rid of now unnecessary temporary variable.
2017-12-15 16:52:41 +01:00
tommash
3de6d1eb17 MouseEvent crash fix on wxWindow Destroy
If the event handler destroys the wxWindow, then the subsequent call to SetupCursor(event) will miserably fail .
Moved setting the cursor before the event is handled.
2017-12-15 15:01:26 +01:00
Vadim Zeitlin
020c598c18 Rename wxExternalField methods to not mention "Window"
This class doesn't have to be used with wxWindow or similar as object
type, so use a more neutral "Object" instead of "Window".
2017-11-22 03:05:03 +01:00
Vadim Zeitlin
6fd435b83f Extract "external field" approach in a reusable class
Add wxExternalField<> template that can be used for other fields and/or
in other ports too.
2017-11-22 03:05:03 +01:00
Vadim Zeitlin
9cb1f25a25 Use global map for storing wxCocoaGesturesImpl
This decreases the speed of access to this struct (which shouldn't
matter that much) but avoids allocating an extra and almost always
unneeded pointer for each and every window, which seems like a good
trade-off.
2017-11-22 03:05:03 +01:00
Vadim Zeitlin
3aefb679e4 Encapsulate gestures-related data in wxCocoaGesturesImpl
Avoid allocating a lot of almost never used data for every window and
use just a single pointer for holding all of it instead.
2017-11-22 03:05:02 +01:00
Vadim Zeitlin
fd3a3e607b Extract SetupCoordinates() from wxWidgetCocoaImpl
Add a free function that can be used from outside wxWidgetCocoaImpl
class too and keep the old method as a trivial wrapper around it.

No changes, this is a pure refactoring.
2017-11-22 03:05:02 +01:00
Vadim Zeitlin
a8dfaa569b Allow enabling individual touch gesture events
Implement support for enabling just some gesture events instead of
having to choose between getting none or all of them.

Also make wxTOUCH_NONE really disable the gestures events generation
instead of just doing nothing as before.
2017-11-22 03:05:02 +01:00