Commit Graph

63366 Commits

Author SHA1 Message Date
Vadim Zeitlin
7535854ec4 Embed the image into the event sample
Don't load it from the image sample directory, this doesn't necessarily
work under Unix if the image sample hadn't been built.

Just embed an XPM image directly into the sample, this is good enough
for demonstration purposes.
2017-11-22 03:05:03 +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
1863f494f3 Use wxExternalField for gestures data in wxGTK too
Don't waste memory on gesture data in all windows.
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
Vadim Zeitlin
842dd1cfd9 Add wxWindow::EnableTouchEvents()
Don't request touch event generation for all windows by default, this
has an inherent overhead and is not needed for 99% of the application
windows, so require calling EnableTouchEvents() explicitly to do it
instead.

Note that this requires properly initializing gesture recognizers in
wxOSX now that they're not always allocated, otherwise releasing them
when destroying the window would crash.
2017-11-22 02:24:24 +01:00
Vadim Zeitlin
e7f4e232fa Use "class" for wxGTK wxWindowGesturesData definition
No real changes, just be consistent with wxWindowGesturesData forward
declaration as "class", clang (and MSVC) warn about mismatching keywords
being used for declaration and definition.
2017-11-21 18:45:53 +01:00
Vadim Zeitlin
bb2887930f Use wxPoint instead of (x,y) pair in wxPanGestureEvent
Using higher level objects makes the code generating and using this
event shorter and more clear.
2017-11-21 17:45:34 +01:00
Vadim Zeitlin
db71a10b29 Set rotation angle for the initial rotate gesture event in MSW
According to MSDN, for the initial rotation even the angle is just
passed directly, so use it.
2017-11-21 17:27:42 +01:00
Vadim Zeitlin
b3e726faed Refactor MSW gesture events initialization
Don't repeat the same code for initializing events in several different
functions but put it in a helper InitGestureEvent() function and just
call it from the event-specific handlers.
2017-11-21 17:25:55 +01:00
Vadim Zeitlin
989dd36405 Style fixes in the MSW gestures code
No real changes, just reformat code and comments to fit in 80 column
lines.
2017-11-21 16:12:37 +01:00
Vadim Zeitlin
daf19c652c Use WinStruct<> to initialize GESTUREINFO
This is more concise and clear than initializing it manually.
2017-11-21 16:12:35 +01:00
Vadim Zeitlin
7ffb897810 Remove unnecessary assignments in WM_GESTURE handler code
The "processed" flag is false by default, no need to explicitly reset
it, this was just confusing.
2017-11-21 16:12:32 +01:00
Vadim Zeitlin
59f428d25e Slightly simplify GestureFuncs code
Document that the users of this class always must call IsOk() first, as
they already do, and remove the checks for ms_gestureSymbolsLoaded and
calls to LoadGestureSymbols() from all the other methods, which are
unnecessary in this case.
2017-11-21 16:12:30 +01:00
Vadim Zeitlin
bf929f9868 Use wxLoadedDLL for loading user32.dll dynamically
This avoids unnecessarily loading and unloading (except that it's not
really unloaded) a DLL which is always available anyhow.
2017-11-21 16:05:33 +01:00
Vadim Zeitlin
6ba3db7753 Destroy GtkGestures objects we create
We seem to be leaking memory otherwise.
2017-11-17 18:06:06 +01:00
Vadim Zeitlin
7b1dc191be Move wxGTK gesture-related data in a private opaque struct
This is a first step towards enabling gesture events only for the
windows that are interested in them as it will make it possible to avoid
wasting space on unused data in the windows that don't need it.

No real changes so far.
2017-11-17 18:06:06 +01:00
Vadim Zeitlin
06d936f3f7 Make tests for gestures in wxGTK code more clear
Use wxGTK_HAS_GESTURES_SUPPORT to guard gesture-related code instead of
checking for the 3.14 GTK+ version explicitly in several places.

No real changes.
2017-11-17 18:06:06 +01:00
prashantkn94
261b04b5a3 Merge multi-touch gestures event branch
This is a squashed commit of the SOC2017_GESTURES branch from
https://github.com/prashantkn94/wxWidgets.git

Closes https://github.com/wxWidgets/wxWidgets/pull/551
2017-11-17 18:06:06 +01:00
Vadim Zeitlin
aef4edb969 Merge branch 'progress-dialog-fixes'
Make native MSW wxProgressDialog much more usable and some minor
improvements to the generic version.
2017-11-17 18:00:16 +01:00
Vadim Zeitlin
ca0557a6eb Merge branch 'release-scripts' 2017-11-17 17:56:41 +01:00
Vadim Zeitlin
dc751d3f33 Add a hint about making wxProgressDialog initially wide enough
Using unbreakable spaces to achieve this looks like a hack, but seems to
be the only thing working well in practice.
2017-11-16 23:52:36 +01:00
Vadim Zeitlin
d4d3222466 Split initial wxProgressDialog message consistently with updates
Native wxMSW dialog split the provided message into the title and body
in Update(), but didn't do it for the initial message specified when
constructing the dialog, resulting in weird jumps, due to the font size
change between the body and title dialog elements, if the updated
message differed just slightly from the initial one.

Fix this and refactor the code to reuse the same function for doing this
splitting in both places.
2017-11-16 23:52:33 +01:00
Vadim Zeitlin
602e2e6abb Avoid fitting wxProgressDialog to its contents on first update
Use TDM_UPDATE_ELEMENT_TEXT even for the initial update as this allows
to specify the message of roughly comparable (or greater) length than
the messages that will be subsequently used while the dialog is shown
and avoid size changes later, which is much more natural than having to
do it for the first call to Update().
2017-11-16 23:52:30 +01:00
Vadim Zeitlin
83b9fa3119 Get rid of unnecessary wxCriticalSectionLocker use
No real changes, just don't lock a critical section for a short time
only to lock it again almost immediately after unlocking -- just combine
both blocks for which it is locked into one, there is no reason to
release it for TASKDIALOGCONFIG and wxMSWTaskDialogConfig initialization
which are both trivial operations not involving any callbacks.
2017-11-16 23:52:27 +01:00
Vadim Zeitlin
3d98129b51 Further improve wxProgressDialog resizing behaviour documentation
Unfortunately it doesn't seem possible to prevent the native MSW dialog
from changing its size in both upper and lower direction vertically, so
at least mention this in the documentation and mention a possible
workaround of manually adjusting the text to always have the same number
of lines.
2017-11-16 23:52:25 +01:00
Arrigo Marchiori
23b7973c24 Mention possible problem with wxProgressDialog created in OnInit()
Such dialogs must be destroyed before the main event loop starts running
to avoid problems with the temporary event loop created by the dialog
internally.

See #17983.
2017-11-16 23:52:22 +01:00
Vadim Zeitlin
a4530c3c73 Exclude unnecessary files in the submodules from release archives
Cut down on release archives size, somewhat, by excluding third party
libraries that we're never going to use.

The exception is libtiff which references all its files in its configure
that we do run and it's probably not worth to bother with paring it down
if this means maintaining changes to configure.
2017-11-16 23:37:36 +01:00
Vadim Zeitlin
34e6c7cccc Silence "make allmo" during release archives build
The commands used and their output are not important and there are many
of them, don't display them.
2017-11-16 23:37:24 +01:00
Vadim Zeitlin
7fd25de661 Update release script to include submodules in the archives
Use "git submodule foreach" to run "git archive" in all of the
submodules as well.

Also document the requirement to have GNU tar which is needed to be able
to successfully extract several concatenated tar archives.
2017-11-16 23:37:24 +01:00
Vadim Zeitlin
6471933857 Fix getting SHA-1 sums in the post-release script
sha1sum doesn't return just the SHA-1, unlike "git hash-object", so get
only the part of its output we need here.
2017-11-16 23:36:35 +01:00
Vadim Zeitlin
12957a3696 Add "Changes since 3.1.0" section to the README
Separate it from the "Changes since 3.0" version which combines both the
most important changes in this one and the changes from 3.1.0 itself.
2017-11-16 21:47:56 +01:00
Vadim Zeitlin
a80210f0d7 Allow running pre/post-release scripts from any directory
Don't assume they're run from the directory containing them, especially
as this is not how they are shown to be invoked in the release
instructions.

Now running ./build/tools/pre-release.sh works too.
2017-11-16 18:49:45 +01:00
Vadim Zeitlin
2fc4b76cf0 Use Bash for release scripts using non-POSIX features
A script using "declare -a" can't use /bin/sh as it's non-POSIX and not
supported by e.g. Dash which is /bin/sh on Debian systems.
2017-11-16 18:45:59 +01:00
Cătălin Răceanu
45c33d2a17 Add scripts for automating more parts of the release process
Update dates in various files before the release automatically.

Also automatically update SHA-1 of the release files both before the
release (to zero them) and afterwards (to use the correct values).

Closes https://github.com/wxWidgets/wxWidgets/pull/443
2017-11-16 18:45:17 +01:00
Vadim Zeitlin
9b65905c4b Exclude some files from release tar balls
Git-specific files don't make sense outside of Git repository and CI
files are not needed neither.
2017-11-16 18:44:27 +01:00
Vadim Zeitlin
80ca6661d4 Explain that wxProgressDialog should be created on the stack
Creating it on the heap is unnecessary and can be actually harmful, so
document explicitly that it shouldn't be done.

See #17983.
2017-11-16 01:35:53 +01:00
Vadim Zeitlin
3918c420b4 Check the active event loop in wxGenericProgressDialog dtor
Verify that the active loop didn't change during this object lifetime as
otherwise we could deactivate a different event loop from the one we
installed.

It's still a programming error to write code which doesn't destroy
wxGenericProgressDialog early enough, but at least now "just" assert and
leak memory in this case instead of resetting the active event loop and
hanging the program.

Closes #17983.
2017-11-16 01:35:53 +01:00
Vadim Zeitlin
5a3fd23a68 Remove a now redundant test in UpdateExpandedInformation()
Checking for m_progressBarMarquee is not necessary any longer, just
testing the value is enough.

Update the comments to explain why is it so.

No real changes.
2017-11-16 01:35:53 +01:00
Vadim Zeitlin
4ab676c967 Show elapsed/estimated times in wxMSW wxProgressDialog by default
This further improves the dialog usability when the main thread doesn't
update it frequently enough, as these times can be seen immediately
without having to expand the "details" part of the dialog which can be
very sluggish in this case.

It is also more consistent with the generic dialog and the behaviour of
the native dialog before 6b91c5dfab876f0f1b17d54304bfb2fda27398ef which
removed the code clearing TDF_EXPAND_FOOTER_AREA style.
2017-11-16 01:35:53 +01:00
Vadim Zeitlin
ed086ea044 Get rid of unnecessary variables in wxMSW wxProgressDialog
There doesn't seem to be any need to have both "foo" and "realFoo", just
reuse the existing variables instead.

No real changes.
2017-11-16 01:35:53 +01:00
Vadim Zeitlin
e49cde166f Improve progress bar updating in native wxMSW wxProgressDialog
Since the switch to tying the task dialog thread message queue with the
main thread, animating the progress bar didn't work well unless the
dialog was updated very frequently from the main thread and could lag
behind significantly, and confusingly for the user, otherwise.

Work around this by avoiding the progress bar animation and setting it
immediately to its real value. This works much better in practice.
2017-11-16 01:35:53 +01:00
Vadim Zeitlin
7481c74365 Make other wxGenericProgressDialog methods virtual too
Solve the same problem as was recently with hiding, instead of
overriding, Resume() in the native MSW wxProgressDialog class for all
the other methods which were also affected by it.
2017-11-16 01:35:52 +01:00
Vadim Zeitlin
cac3d39fa1 Don't explicitly attach progress dialog thread input
This is actually completely unnecessary because this is done implicitly
by Windows itself anyhow when we create the dialog with the owner window
belonging to a different thread.

Notice that this also explains why the thread input can't be detached
later.
2017-11-16 01:35:52 +01:00
Vadim Zeitlin
1c62ebdcd7 Minor optimizations in wxProgressDialog
Don't bother performing the updates if nothing was requested.

And ensure that nothing is requested even more often than it already was
by not requesting an update if the new value is the same as the old one.
2017-11-16 01:35:52 +01:00
Vadim Zeitlin
317470a39a Use "max" instead of 100 in the progress dialog sample code
No real changes, just don't hardcode 100 as we have a symbolic constant
for it here already.
2017-11-16 01:35:52 +01:00
Vadim Zeitlin
ca7e1d8bd1 Remove manual wxProgressDialog centering code
This is not necessary any longer now that we use the correct parent for
the dialog window, the task dialog is centered automatically.

And unlike our own code, comctl32.dll code always puts the dialog fully
on one monitor instead of making it span two of them if the parent
window does.
2017-11-16 01:35:52 +01:00