Commit Graph

1345 Commits

Author SHA1 Message Date
Maarten Bent
39ff5b90e5 Replace wxDeprecatedGUIConstants enum values 2018-11-25 21:29:32 +01:00
Mick Phillips
291a880d0c Synchronize joystick events between all ports
Generate wxJoystickEvent with the same fields under all platforms by
making the Linux and macOS versions follow MSW convention of using
"1 << N" for the changed button.

Add GetButtonOrdinal() accessor which can be used to retrieve just N.

Closes #18233.
2018-11-05 19:27:36 +01:00
Jouk
41bddbd85f update for OpenVMS compilation of wxX11 2018-10-16 11:54:12 +02:00
Jouk
60f2c09bb1 Update OpenVMS build support (correction on previous commit) 2018-10-11 14:50:48 +02:00
Jouk
17e243a5e4 Update OpenVMS build support 2018-10-11 11:41:55 +02:00
Vadim Zeitlin
ded2894b78 Add wxDisplay::GetPPI() to use instead of wxGetDisplayPPI()
While this is not done for all the ports yet, the new API allows
returning different PPI values for different monitors, unlike the old
(and still existing, but implemented in terms of the new one) global
function.
2018-10-08 13:04:38 +02:00
Vadim Zeitlin
24b5e256df Add wxDisplay::GetDepth() and use it for wxDisplayDepth()
Allow getting the depth of any display, not just the primary one, even
though this is not implemented for Unix ports currently.

Mostly do this for consistency with the other display-related functions.
2018-10-07 00:30:12 +02:00
Vadim Zeitlin
e0ba727dec Extract X11 functions used by wxGTK in a separate header
This makes src/unix/displayx11.cpp almost readable as it's not littered
by "#ifndef __WXGTK20__" checks everywhere any more -- instead this file
is just not compiled as part of wxGTK2 at all any longer (it is still
included in wxGTK1 as well as wxX11 itself and wxMotif).

wxGTK code also can just include the new wx/unix/private/displayx11.h
instead of having to declare all the X11 functions it uses manually.

There should be no changes in behaviour, this is just a clean up.
2018-10-04 17:07:11 +02:00
Vadim Zeitlin
9cc1424b84 Return empty string from wxDisplayImpl::GetName() by default
Simplify the code by not making this function pure virtual as all the
ports except MSW had to override it just to return an empty string.

Instead, just return empty string by default as it's not critical to
force the derived classes to override this function.
2018-10-04 16:37:12 +02:00
Vadim Zeitlin
f704c40207 Don't use wxDisplayFactorySingleX11 in wxGTK if wxUSE_DISPLAY==0
wxDisplay::CreateFactory() shouldn't be defined in this file when
building wxGTK, whether wxUSE_DISPLAY==1 or 0.
2018-10-04 16:31:55 +02:00
Vadim Zeitlin
c2162792cf Implement wxDisplaySize() and wxClientDisplayRect() via wxDisplay
Instead of forwarding to these functions from wxDisplay implementation
in wxUSE_DISPLAY==0 case, make the functions themselves wrappers around
wxDisplay, which may, or not, depending on the platform, have a simpler
implementation in wxUSE_DISPLAY==0 case, but is always available in any
case.

As part of this change, only use src/osx/core/display.cpp in macOS
builds, not iOS ones and update the Xcode project accordingly too.

This cuts down on code duplication, especially in wxGTK, and facilitates
further additions to wxDisplay API.
2018-09-30 23:07:45 +02:00
Vadim Zeitlin
141d7b826d Fix weird indentation in X11 display code
No real changes.
2018-09-30 00:38:26 +02:00
Vadim Zeitlin
bac28b95cd Move wx/display_impl.h to wx/private/display.h
This shows more clearly that this header is private to wxWidgets and
can't be included by user code.

No real changes.
2018-09-30 00:38:26 +02:00
Vadim Zeitlin
90dd87ee65 Fix wxGTK1 build after wxFont API changes
Implement the new {Get,Set}{FractionalPointSize,NumericWeight} methods.

Also change wxLoadQueryFont() to use wxNativeFontInfo methods as a side
effect, to reduce code duplication and reuse the existing support for
numeric weights and fractional point sizes in wxNativeFontInfo.
2018-09-17 15:24:42 +02:00
Vadim Zeitlin
aff4b82663 Don't assert in wxNativeFontInfo::SetStyle() in wxGTK1
Add missing "break" statement.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
720e1372e4 Allow leaving the point size unspecified for ports using XLFD
Rather than defaulting to the normal font size, just leave the font size
unspecified as it might result in better font size being chosen.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
22839b865d Fix bug with point sizes in wxX11 without Pango
XLFD strings specify size in tens of points, so add the missing factor
of 10.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
ff5766a8fb Move GetWeightClosestToNumericValue() to wxFontInfo too
This is similar to a recent commit which moved float to int point size
conversions to wxFontInfo and is done for the same reasons: wxFont and
wxNativeFontInfo can depend on wxFontInfo, but the converse is not true.

No real changes.
2018-09-17 15:24:41 +02:00
Vadim Zeitlin
7500a999bd Add numeric weights support for ports using XLFD-based fonts
Translate numeric weight to the symbolic name too instead of only doing
it in the other direction in GetNumericWeight().
2018-09-17 15:24:40 +02:00
Vadim Zeitlin
e05a732666 Switch to using float for point size in wxNativeFontInfo
Use float as the fundamental type for the font size and implement
wxNativeFontInfo::{Set,Get}PointSize() as wrappers around the new
{Set,Get}FractionalPointSize().

Update wxNativeFontInfo for all platforms and replace the use of its
SetPointSize() method with SetFractionalPointSize() in wxFont for the
platforms already supporting fractional point sizes (don't change the
others just yet).

Note that wxNativeFontInfo::{Get,Set}PointSize() are preserved for
backwards compatibility but shouldn't be used in any code inside the
library itself any more (again, this is not the case yet, but will be
soon).
2018-09-13 19:58:17 +02:00
Stefan Csomor
4580cdb9ad Extending wxFont API & OSX Core Text Implementation (#877)
* Switch to pure Core Text Implementation, Start extended Font API

* mac fixes

* First msw implementation

* Fixing paste error

* fixing typo

* Rearranging lines to former fallthrough order

* Blind fixes for covering new abstract methods

* Blind gtk implementations

* Fixing according to travis ..

* Removing method defined in base

* formatting adaptions

* Extending the schema definition for new weights

* fixing typo, using wxRound, other fixes according to comments

* changes according to suggestions

* fixing init order, before the init of m_info was overridden by Init()

* redo

* redo

* redo

* Cleanup

Removing obsolete code snippets, proper traces for font names

* Moving common code

Only the Get/SetNumericWeight calls should now be implemented in the native part, the ‚old‘ Get/SetWeight are common code and use the numeric counterparts.

* Updating docs

* commit wa missing changes.txt

* Doc fixes

* Full stops added
2018-09-01 19:42:18 +02:00
Vadim Zeitlin
5442edbbe9 Fix wrong udata type in wxFileSystemWatcher code under NetBSD
NetBSD kqueue struct uses "intptr_t" as type of the user data pointer
and not "void*" as all the other platforms using kqueue, so account for
it in this code.

Closes https://github.com/wxWidgets/wxWidgets/pull/885

Closes #18199.
2018-08-18 15:05:58 +02:00
Vadim Zeitlin
cec14a334c Document that wxThread::SetPriority() is broken under Unix
The code setting thread priority doesn't work without changing the
scheduling policy as thread priorities are simply ignored when using the
default SCHED_OTHER (at least under Linux and NetBSD, but probably other
systems too).

See #18195.
2018-08-16 13:14:19 +02:00
Vadim Zeitlin
51c8496087 Don't change thread priority if it is default under Unix
Skip all the code dealing with the priority/scheduling parameters if the
priority is just wxPRIORITY_DEFAULT anyhow, as it's unnecessary to do
anything in this case and it can result in spurious errors.

Also extract this code into a separate SetThreadPriority() function to
make wxThreadInternal::Create() itself shorter and more clear.

Closes #18195.
2018-08-16 13:08:52 +02:00
Vadim Zeitlin
29c218f1b4 Slightly de-uglify Unix version of wxThreadInternal::Create()
Just use wxUnusedVar() instead of defining and using the ugly
WXUNUSED_STACKSIZE() macro.

Also change an out of date comment as the thread priority is not the
only attribute being changed here.

No real changes.
2018-08-16 12:46:09 +02:00
Vadim Zeitlin
a74058a958 Fix wxGetKeyState() compilation with wxGTK 1
This was broken back in a73251a80d which
added check for GDK_WINDOWING_X11 which is not defined by GTK+ 1.

See #14469.
2018-07-10 14:54:19 +02:00
Vadim Zeitlin
8ebcfebc5c Fix wxGTK 1 build after gtk/gtk.h wrapper header addition
Changes of c0b0562533 to common code broke
wxGTK1 build, as wx/gtk/private/wrapgtk.h is for wxGTK 2+ only.

Fix this by handling wxGTK 1 separately and including gtk/gtk.h directly
for it.

Hopefully this code will be removed, together with the rest of wxGTK1
support, in some not so distant future.
2018-07-10 14:54:19 +02:00
Paul Cornett
32db375e46 Avoid assertion failure in wxGLContext ctor
Check for NULL pointers directly rather than making assumptions based
on a version check.
See #18155
2018-06-28 10:38:14 -07:00
Vadim Zeitlin
950b1a9d51 Merge branch 'replace-connect-bind'
Replace almost all occurrences of wxEvtHandler::Connect() with Bind().

See https://github.com/wxWidgets/wxWidgets/pull/820
2018-06-01 18:31:59 +02:00
Vadim Zeitlin
a69cbd3d0c Merge branch 'wrap-gtk.h'
Add a wrapper for gtk/gtk.h allowing to avoid gcc 8 warnings when
including the GTK+ header directly.

See https://github.com/wxWidgets/wxWidgets/pull/814
2018-05-31 01:28:40 +02:00
Vadim Zeitlin
d4f380e16e Use Bind() instead of Connect() in wxWidgets code
Use more modern function which allows to avoid wxXXXEventHandler()
macros use.

No real changes.
2018-05-30 13:06:20 +02:00
Jouk
896e2d472c set wxUSE_DISPLAY=1 for OpenVMS 2018-05-24 08:11:46 +02:00
Vadim Zeitlin
c0b0562533 Avoid many -Wparentheses warnings from gtk/gtk.h with gcc8
Add wx/gtk/private/wrapgtk.h wrapping gtk/gtk.h in pragmas disabling
these warnings and include it everywhere instead of directly including
gtk/gtk.h.

Also include wx/gtk/private/gtk2-compat.h from this wrapper header as it
was included by 90% of the files including gtk/gtk.h itself and it seems
to be better and simpler to just always include it.
2018-05-21 12:34:04 +02:00
Scott Talbert
e905b94436 Fix video sink fallback in wxMediaCtrl when xvimagesink present but not working
In certain cases (e.g., virtual machines), the XVideo extension may be
present, but there are no working adaptors.  In this case, wxMediaCtrl
will select xvimagesink, but then when it tries to actually play some
media, it will fail.  Fix this by attemping to set the video sink to
GST_STATE_READY in TryVideoSink().  Doing this causes gstreamer to run
some checks against the XVideo extension.  If this fails, then we should
fall back to the next sink type (ximagesink).
2018-04-15 22:32:41 -04:00
Vadim Zeitlin
2ff1e633e9 Use KDE 4 and 5 directories in Unix wxMimeTypesManager too
KDE 3 is throughly outdated, but keep support for it too because it
doesn't cost much.

Closes #16704.
2018-01-30 23:01:39 +01:00
Vadim Zeitlin
a0cc098ef0 Use only existing directories in Unix wxMimeTypesManager
Avoid using directories under /opt if they don't exist anyhow.

This also makes the code easier to modify in the future, see #16704.
2018-01-30 22:58:08 +01:00
John Roberts
4ad61f3048 Fix LAN detection in wxDialUpManager for macOS
Check for enX interface name for Darwin.

Closes https://github.com/wxWidgets/wxWidgets/pull/676
2018-01-17 10:15:30 +01:00
Vadim Zeitlin
c010efc172 Avoid integer overflow when computing the sample size
While it seems to be harmless in this particular case, it still prevents
testing this code with UBSAN by triggering it here, so check that
multiplication doesn't overflow.
2017-12-30 18:52:57 +01:00
Vadim Zeitlin
61c7cf9a9c Fix yet another division by 0 when parsing WAV data
Ensure that the size of one sample (including all the channels) is non
zero before dividing by it.
2017-12-30 18:52:57 +01:00
Vadim Zeitlin
932f384c87 Avoid division by 0 when parsing WAV data
Don't divide by waveformat.uiBlockAlign which could be 0, but rather
multiply by it and verify that we get the expected result. This is more
robust, as it prevents crashes on malformed input and also slightly more
efficient even for correct input.
2017-12-30 18:52:57 +01:00
Vadim Zeitlin
45e8d13e13 Add format sub-chunk size check to WAV parsing
This fixes a crash due to reading beyond the buffer bounds when checking
for "data" if WAVEFORMAT::uiSize was too big.
2017-12-30 18:52:57 +01:00
nowhere
69cd6039eb Make parsing WAV data more robust
Check that we have enough data in the input instead of happily reading
out of bounds memory.

This fixes the most common problem of crashing on bad data which doesn't
look like WAV at all, but doesn't fix problems with parsing input which
does look like WAV, but is incorrect -- this will be done in subsequent
commits.
2017-12-30 18:52:36 +01:00
Rafael Kitover
aceefac2c9 GTK4: show_uri() is gone
Use show_uri_on_window() instead of show_uri() for GTK+4, show_uri() is
not available.
2017-12-12 08:48:36 -08:00
Rafael Kitover
c2ef9ba275 GTK3/4: use widget scale instead of screen scale
GTK+4 does not support the gdk_screen_get_monitor_scale_factor() API
(since gdk has become more backend independent.)

Use gtk_widget_get_scale_factor() API instead on the app top window.

TODO: This does not solve the multi-monitor problem, for that it would
be necessary to use the scale factor of the widget on which the action
is being peformed.
2017-12-12 08:48:36 -08:00
Paul Cornett
db00ab9c02 Avoid gtk_show_uri() with GTK+3.9x 2017-12-07 10:51:57 -08:00
Vadim Zeitlin
d6af0236c5 Simplify GTK+ 2 version checks with a helper function
Use wx_is_at_least_gtk2(minor) instead of gtk_check_version(2, minor)
because it is more clear and also works as expected (i.e. returns true)
when using GTK+ 3 instead of creating difficult to notice bugs in the
code by failing the version check in this case.

See #18004.
2017-11-23 13:15:31 +01:00
Vadim Zeitlin
2558c91ae8 Don't fail to okay all mono WAVs in OSS wxSound backend
Ever since the changes of 544c4a3bde
(almost 14 years ago), playing mono WAVs with wxSound completely failed
if setting the sound device to mono using SNDCTL_DSP_STEREO ioctl
failed. This doesn't look like a wise thing to do, so don't consider
this as a fatal failure, but just play mono as stereo (and even possibly
stereo as mono) instead.

This fixes the sound sample being broken out of the box on many (all?)
Linux systems.
2017-11-19 22:44:57 +01:00
Vadim Zeitlin
d788588cfc Use wxMutexLocker instead of manual Lock/Unlock() calls
This is safer and also makes the code simpler and shorter.
2017-11-19 22:37:36 +01:00
Vadim Zeitlin
6c1a557a0f Lock and unlock mutex in both wxSound threads using it
The code was completely broken as it locked the mutex in only one thread
and then tried to unlock it in another one, which made no sense, didn't
protect against anything and resulted in errors and assert failures.

Fix this by locking and unlocking the mutex in both threads before
accessing shared data or playing sound.

Closes #17990.
2017-11-19 22:37:36 +01:00
Vadim Zeitlin
6ebc56939f Acquire mutex before modifying variable in wxSoundSyncOnlyAdaptor
The mutex must be locked to avoid data races with the thread actually
playing the sound.
2017-11-19 22:37:36 +01:00