To correctly compute the brush origin offset for painting background of a
child in a window using RTL layout, we need to offset it by the child origin
i.e. its _right_ top corner in this case and not the left top corner as we did
before.
Conveniently, although not very explicitly, MapWindowPoints() already takes
care of this for us if we just pass it both the left and right points, but we
wrongly passed it only a single one, so it couldn't work its magic in this
case.
Change this to fix the drawing artefacts which appeared over wxNotebook
children with transparent background (e.g. wxStaticText) due to the use of
wrong origin before.
(cherry picked from commit 169fb2c7f5)
Under wxGTK the default button in wxMessageDialog with style wxOK was set to
"Cancel", whether the wxOK_DEFAULT style was specified or not.
Now it is set to "OK", as expected, and wxCANCEL_DEFAULT needs to be
explicitly specified to focus the "Cancel" one.
See https://github.com/wxWidgets/wxWidgets/pull/267
(cherry picked from commit a374801465)
When running under a RTL locale, checkboxes should not be mirrored, but
should keep the same appearence in both RTL and LTR layouts.
(cherry picked from commit 22f0801378)
Sometimes the file dialog changes the current directory even if it is
cancelled, so restore it in any case, not only after successful return.
See https://github.com/wxWidgets/wxWidgets/pull/263
(cherry picked from commit ceaa840d7b)
Not onlu has Scintilla no support for RTL languages, it is rendered into
a mirrored DC on Windows and so guaranteed unreadable and unsable. Fix
it by explicitly setting the window's layout direction to LTR.
(cherry picked from commit d8a90b4606)
There is nothing we can do about these (harmless) warnings, so just
disable them. Also make sure that the header is included via
wx/msw/wrapshl.h everywhere.
(backported from commit e37f1a84ce)
Compare min/max width with m_width, not m_height, in GTKUpdateDecorSize() for
the logic to work as expected.
See #17455.
(cherry picked from commit 0777bf6b92)
Some compilers, notably MSVC, don't support C99 and C89 doesn't allow this.
Fixes MSVS compilation after 02da4c8b1d.
(cherry picked from commit c7a3785a5c)
This should allow correct sizing of first TLW (when using SetClientSize())
with backends using client-side decorations such as Wayland.
(cherry picked from commit bc4df78421)
If setting sash position to a value that cannot be satisfied due to
minimum size constraints, wxSplitterWindow would continue endlessly
trying and failing to set it, causing constant CPU use on OS X. This was
because delayed sash setting was invoked from idle handler and if it
failed, the code would repeat the same action again and again.
Instead, perform this delayed setting from OnSize handler. If setting
sash position failed in the first place, it must have been due to too
small size of the window. Therefore it's pointless to try again until
the size changes.
(cherry picked from commit 513fca5d4c)
An old check - used for reasons that no longer apply - was preventing
correct rendering of wxToolBar background in wxMSW. Fix this by removing
the obsolete check.
See #9666 for the original reason for the check.
(cherry picked from commit 3a7951db2b)
Use the same GetParentForModalDialog() method as for the normal dialogs to
find the parent to use for this native dialog and ensure that it is shown
modally even if no parent is explicitly specified when constructing it.
See #17384.
(this is a backport of baff0c942b from master)
IAutoCompleteDropDown interface was defined inside anonymous namespace to
avoid clashing with the same interface possibly (but not necessarily) declared
in the standard headers.
However gcc 4.9 is smart enough to realize that no classes deriving from a
class in an anonymous namespace can exist and so it devirtualizes the calls to
virtual methods of the objects of this type when compiling with optimizations
enabled. And it does it even if it means replacing the call to a virtual
method with just a call to __cxa_pure_virtual(), i.e. crashing during
run-time.
Prevent it from doing this by moving class declarations outside of the
anonymous namespace and fix the crash when using wxTextEntry::AutoComplete()
in the code compiled with g++ 4.9.
(this is a backport of 4475fe36a5 from master)
wxGridTableBase::SetAttr (for cells) does check its attr parameter for
nullptr, but the check was missing from the row and column functions.
Adding it makes it possible to use a nullptr argument to reset the
attributes.
See https://github.com/wxWidgets/wxWidgets/pull/174
(this is a backport of e7fa9b0c10 from master)
Ignore the WinChange flag in DoNavigateIn() to fix an assertion that happened
when pressing Ctrl+Tab with the generic wxListCtrl having focus.
This seems to be consistent with pressing Ctrl+Tab elsewhere, e.g. when
cycling between buttons in a dialog.
(this is a backport of f3cd79984f2936a4148964af8c23cd42aab6a871 from master)
For the programs that use wxWidgets but can also run using just CLI, exiting
the program would show a bogus GTK error
GLib-GObject-CRITICAL **: g_type_class_unref: assertion 'g_class != NULL' failed
Fix this by only releasing the references to GTK_TYPE_WIDGET if we had
acquired it in the first place.
See https://github.com/wxWidgets/wxWidgets/pull/129
(this is a backport of e1f31febadea7d6277c7ee92c424ae7581e1d6d1 from master)
Fall back to the main application window if no parent was explicitly specified
using the standard GetParentForModalDialog() method.
See #17295
(cherry picked from commit 50435ef678)
Since the changes of db9baf9aa5 the label wasn't
explicitly reset to be empty on wxWindow creation because it was assumed it
would already be empty if not explicitly set, but this turned out to be false
for the controls using NSButton which (very helpfully) uses "Button" as its
label by default and so kept this useless label if it wasn't explicitly
overridden.
Fix this by explicitly resetting the NSButton title after creating it, to
ensure consistency between the real state of the control and what wxWidgets
thinks it is.
Closes#17152.
(cherry picked from commit ef1db7acda)
Mimics the scrolling behaviour of native MSW and GTK calendars by allowing to
increment/decrement the month by scrolling anywhere on the generic calendar.
Additionally, use horizontal scrolling to increment/decrement the year.
Backport of 50daf1feab + 4177593aef
into WX_3_0_BRANCH.
See also 50daf1feab (commitcomment-13087042)
The existing code tried writing to HKEY_CLASSES_ROOT which doesn't work, in
general, for normal, i.e. non administrator, users, under any post-XP versions
of Windows.
Fix it to write to HKEY_CURRENT_USER\Software\Classes, which is the part of
HKEY_CLASSES_ROOT for the current user and to which we do have write access,
and only continue to use HKEY_CLASSES_ROOT itself for reading.
(this is a backport of 0ed580f451 from master)
Use explicit c_str() when calling Cygwin functions taking char* or void*
instead of relying on implicit conversions.
(this is a backport of 09e7dc290c from master)
Use full path to the selected file before checking whether it exists,
otherwise the check could fail even if the file does exist but the current
directory is different from the one it is in.
Closes#16698.
(this is a backport of 5846144614 from
master)
Ever since 700256bbdb IsOk() returned true even
if setting the locale actually failed because the old locale was still set to
the null value.
Apply the minimal possible fix for this and just reset the old locale pointer
to null if initializing the locale fails to make sure IsOk() doesn't return
true in this case.
Verify that accessing a property really succeeded before using the returned
value.
This should fix at least one crash due to the use of uninitialized BSTR in
wxWebViewIE::GetCurrentTitle().
See #17204.
(this is a backport of 4489ec80e0 from master)
According to the documentation, insertText: argument is either NSString
or NSAttributedString. The latter is not a subclass of the former, yet
the code assumed the argument is always a NSString. This caused the
following exception:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
-[NSConcreteMutableAttributedString characterAtIndex:]: unrecognized selector sent to instance
Fix this by checking for NSAttributedString and extracting plain string
from it.
(cherry picked from commit 1acfe88347)