Commit Graph

65326 Commits

Author SHA1 Message Date
Vadim Zeitlin
cc86de1416 Replace file reading code in wxTextFile with wxFile::ReadAll()
There is nothing special about wxTextFile justifying having code for
dealing with non-seekable files in it, so put this code into wxFile
itself and just call its ReadAll() method from here.

This is a better fix than 41f6f17d01
originally applied (and which is going to be reverted next) as it
doesn't break wxFile::Length() for these files and also avoids
triggering an assert if the file we're trying to read was truncated by
another process in the meanwhile -- which can happen and doesn't
indicate a programming error and so shouldn't result in an assert.

Also add a unit test checking that this really works.

See #3802, #8354, #9965.
2017-12-15 18:46:22 +01:00
Vadim Zeitlin
a30bee473e Make wxFile::ReadAll() work for unseekable files too
Calling this function with an unseekable file, such as any file under
/sys on Linux systems, would previously just hang as the loop condition
was never satisfied when length was -1.

Fix this by checking for this case and using a different approach by
extending the buffer we read the data into as we go instead of
preallocating it all at once.

See #9965.
2017-12-15 18:43:26 +01:00
Paul Cornett
8e35398037 Update gtk-4.0.m4
Minimize differences with gtk-3.0.m4, fix configuring with GTK+ 3.92.1
2017-12-15 09:31:43 -08:00
Paul Cornett
32f6d9521f Update gtk-3.0.m4
From gtk+-3.22.26/m4macros/gtk-3.0.m4
2017-12-15 09:26:40 -08:00
Vadim Zeitlin
ebcba7a385 Merge branch 'mac-mouse-event-crash'
Closes https://github.com/wxWidgets/wxWidgets/pull/640
2017-12-15 16:53:28 +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
VZ
7ea562eb93 Fix expat config for "NMake Makefiles" target in cmake build
Closes https://github.com/wxWidgets/wxWidgets/pull/639
2017-12-15 15:45:26 +01:00
Vadim Zeitlin
ed23de08c7 Minor clean up of wxPersistentDataViewCtrl
Add another helper function, make variables const when possible, fix
some small style problems.

No real changes.
2017-12-15 15:26:32 +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
e3575d1f9c Use temporary wxConfig for persistence unit tests
This requires slightly more work, but ensures that we don't leave any
traces of running the tests in the system registry or file system, as we
can just call DeleteAll() on the config object after finishing with it.
2017-12-15 14:43:43 +01:00
Vadim Zeitlin
036870ab35 Split wxPersistenceManager-related tests and actually build them
It seems better to organize the tests in different files and just
provide a common fixture-like class to reuse functionality.

Also use this as an opportunity to rewrite the tests to use Catch
directly instead of using CppUnit-compatible macros.

Finally, actually build these tests as part of the test suite.
2017-12-15 14:10:35 +01:00
Vadim Zeitlin
4e82f60b8a Add documentation for wxPersistentDataViewCtrl
Documentation is trivial, but better than nothing.
2017-12-15 14:10:16 +01:00
Vadim Zeitlin
072a9c20a3 Add new wx/persist/dataview.h to the build system
In particular, this ensures that it gets installed by "make install"
under Unix.
2017-12-15 14:10:11 +01:00
Vadim Zeitlin
e5b12b5bc8 Merge branch 'dvc-persist' from iwbnwif
See https://github.com/wxWidgets/wxWidgets/pull/541
2017-12-15 14:10:01 +01:00
Alexey Rassikhin
82da79d038 Workaround for expat builtin debug postfix
expat lib has debug postfix on windows only.
2017-12-15 13:59:57 +03:00
Alexey Rassikhin
6b15f19107 Fix expat config for "NMake Makefiles" target. 2017-12-15 11:53:50 +03:00
Paul Cornett
276d96b583 Some additions and corrections for wxArtID to GTK+ names
From 4862884e
2017-12-14 21:35:07 -08:00
Paul Cornett
ab34f92fb9 Avoid stock icon functions with GTK+4
Only theme lookup is available
2017-12-14 20:47:01 -08:00
Paul Cornett
49db2dc315 Add wxART_CLOSE to sample 2017-12-14 20:34:20 -08:00
Paul Cornett
c4614d0c9f Use a single table for translating wxArtID to GTK+ stock/theme names
GtkStock names are used for GTK+2, theme names for GTK+3 and later.
Theme replacements for stock items are those used by GTK+, from
gtk+-3.22.26/gtk/deprecated/gtkiconfactory.c. The list is as it was
prior to 4862884e, with no additions, deletions or other changes.
2017-12-14 20:33:44 -08:00
Vadim Zeitlin
15d22aed82 Merge branch 'cmake'
Closes https://github.com/wxWidgets/wxWidgets/pull/330
2017-12-15 00:33:07 +01:00
Vadim Zeitlin
4cc2762ebc Don't call wxDataViewModel::GetValue() for container row cells
This could be unexpected as it seems reasonable that the model won't be
ever asked about the value of a cell if it's not going to appear in it
anyhow -- however it could still happen during the column width
computation in the generic wxDataViewCtrl implementation.

Fix this in a minimally invasive way by just skipping the call to
GetValue() in this case.
2017-12-15 00:14:29 +01:00
Artur Wieczorek
2f2ecfa03f Don't use hard-coded button labels
Get labels from the central repository of "stock" labels.
2017-12-14 23:33:06 +01:00
Artur Wieczorek
29820dab5b Don't use GtkStock to refer to the built-in icons in GtkAssertDialog
GtkStock is deprecated since GTK+ 3.10 and built-in icons should be
identified directly by their names.
2017-12-14 23:26:07 +01:00
Jouk
47c0aed322 Add samples/event/gestures.cpp for compilation on OpenVMS 2017-12-14 08:59:26 +01:00
Jouk
a2864f907b switch on wxUSE_GRAPHICS_CONTEXT on OpenVMS 2017-12-14 08:57:33 +01:00
Vadim Zeitlin
6c7e5a9200 Allow attaching a wxWindow to CWnd later in wxMFCWnd
When using two-step creation, as when loading from resources, for
example, it can be convenient to create wxMFCWnd as part of the (parent)
wxWindow object, but only attach it to the real HWND later, once it
becomes available.
2017-12-12 18:46:29 +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
52f231c9ff GTK4: no support for gtk_tree_view_set_rules_hint
Don't use gtk_tree_view_set_rules_hint() in GTK+4, it's not available.

It is also deprecated in GTK+3 since 3.14, and the documentation advises
to not use it at all, but I will leave the decision about whether to
remove it entirely to someone else.
2017-12-12 08:48:36 -08:00
Rafael Kitover
9f3aa0b4e5 GTK4: different API for adding dialog button
Support the GTK+4 API for adding buttons to dialogs (via __WXGTK4__):

- set_icon_name() instead of image_new_from_stock()/set_image()

- gtk_box_pack_end() takes only two parameters
2017-12-12 08:48:36 -08:00
Rafael Kitover
c09e27cfb4 GTK3/4: GTK_STOCK_CANCEL deprecated, use labels
GTK+3 deprecates GTK_STOCK_CANCEL and GTK_STOCK_SAVE etc. and GTK+4
removes them entirely. The API documentation recommends using the
strings "Cancel" and "Save" instead, use them (or the appropriate
translation.)
2017-12-12 08:48:36 -08:00
Rafael Kitover
1879293932 GTK4: gtk_init_check() does not take args
In GTK+4 gtk_init_check() takes no arguments, while in GTK+3 you could
pass argc/argv.

I'm not quite sure how to pass any arguments to GTK+4, so just call
gtk_init_check() in GTK+4.
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
Rafael Kitover
21776b16f5 regen bakefile/autoconf files based on 3559d83bc4
Run `bakefile_gen` and `sh autogen.sh` to regenerate all bakefile and
autoconf generated files with GTK+4 support from 3559d83bc4.
2017-12-12 08:48:36 -08:00
Rafael Kitover
22b0b4dda7 autoconf and bakefile support for GTK+4
Add autoconf and bakefile support for detecting and using GTK+4, similar
to how GTK+3 is detected and used.

GTK+3 is checked for first before GTK+4, this can be overridden in
`./configure` using `--with-gtk=4`.

With GTK+4 the `__WXGTK4__` `#define` is also set in `setup.h.in`.

This commit does not regenerate any files.
2017-12-12 08:48:36 -08:00
Vadim Zeitlin
44c31d2700 Destroy MFC main window when its wx counterpart is destroyed
This avoids using m_pMainWnd after its HWND becomes invalid, as this
resulted in assert failures from CWnd::WalkPreTranslateTree() called
with this HWND as its hWndStop argument from PreTranslateMessage() which
was used to pre-translate a WM_NULL message the application sometimes
received while closing down.
2017-12-12 17:20:36 +01:00
Vadim Zeitlin
636219bd35 Always pre-process messages for wx windows in mixed wx/MFC apps
Still use the active event loop if there is one, just in case it
customizes messages pre-processing, but fall back on the standard
pre-processing code even if there is no active wx event loop and we're
only running the MFC one, as without doing this there are just too many
things that don't work (e.g. menu accelerators didn't work at all in
mixed wx/MFC applications previously).
2017-12-11 22:06:13 +01:00
Vadim Zeitlin
3960e630f1 Make it possible to use an existing base class for wxMFCWinApp
When porting an existing MFC codebase to wxWidgets, it may be useful to
continue using the existing CWinApp-derived application class, so allow
deriving wxMFCApp from it instead of always deriving it from CWinApp
itself.
2017-12-11 21:03:18 +01:00
Vadim Zeitlin
042d922e88 Allow predefining wxUSE_UNICODE_WINDOWS_H in wxMSW builds
This can be used in order to use normal Unicode build of wxWidgets with
an application that needs to use ANSI versions of Win32 functions, e.g.
because it doesn't compile with UNICODE defined.
2017-12-11 21:03:18 +01:00
Vadim Zeitlin
9dd83933f3 Remove redundant sections from wx/msw/winundef.h
Somehow we redefined GetFirstChild() and GetNextSibling() twice in a row
for the last ~18 years.
2017-12-11 21:03:17 +01:00
Vadim Zeitlin
acf53800fc Extract reusable part of the MFC sample in a header
Allow reusing this functionality from outside the library, it can he
useful if an MFC window needs to be embedded into a wx application (or
vice versa).

Also use a better wxEntryStart() overload as a side effect, this should,
in particular, fix the problem with command line arguments processing in
mixed MFC/wx applications pointed out in a comment in the sample
previously.
2017-12-11 21:03:17 +01:00
Vadim Zeitlin
ff96ebb616 Merge branch 'radiobox' of https://github.com/MaartenBent/wxWidgets
Improve radio box geometry calculation/layout code, in particular stop
using hardcoded pixel values as this doesn't work at all with high DPI.

See https://github.com/wxWidgets/wxWidgets/pull/638

Closes #18010.
2017-12-11 14:40:05 +01:00
Jouk
15b602e125 Update OpenVMS configuration 2017-12-11 12:32:01 +01:00
Jouk
bbfe87b963 Update OpenVMS configuration 2017-12-11 12:31:13 +01:00
Artur Wieczorek
4862884ed8 Don't use GtkStock to refer to the stock icons in wxArtProvider
GtkStock is deprecated since GTK+ 3.10 and stock icons should be
identified directly by their names.
2017-12-11 00:06:36 +01:00
Bill Forster
1e8ff2486a Fix drawing of the left-most AUI notebook tab under Windows 10
Apparently, in some situations the left edge of the first tab is not
drawn when it's not selected under Windows 10. While it doesn't seem to
affect all the systems (and couldn't be reproduced here), drawing the
left edge explicitly shouldn't do any harm and should fix the problem
for the systems that are affected by it, so just do it always.

Closes #17714.
2017-12-10 23:39:00 +01:00
Maarten Bent
b833b12931 Improve wxRadioBox height on wxMSW
With larger fonts, there is an excessive gap between the box and the first (and last) radio button.
Instead of using the dynamic character size, use the fixed size of the radio button to determine this height.
2017-12-10 23:24:40 +01:00
Maarten Bent
6168e44846 Remove unused defines from private wxMSW header 2017-12-10 23:23:30 +01:00
Maarten Bent
f696d035a6 Remove unused variables from wxRadioBox
These variables never got assigned a value.
2017-12-10 23:23:29 +01:00
Maarten Bent
febd929f0f Improve wxRadioBox width on wxMSW
Do not use 'RADIO_SIZE 20' as the fixed width of the radio button, but use the actual width as returned by wxRendererNative.
wxRendererNative has no GetRadioButtonSize, so for now use GetCheckBoxSize. It returns the same sizes.
Also add a half character width to account for the space between the button and the label.
There is no need to add extra width to the label of the static box.

Closes #18010.
2017-12-10 23:22:13 +01:00