Commit Graph

189 Commits

Author SHA1 Message Date
Vadim Zeitlin
e631e7da62 Avoid using wxDynamicCast() with wxComboCtrl-derived object
In wxUniv wxComboBox does derive from wxComboCtrl, but its wxRTTI
doesn't use wxComboCtrl as the base class for consistency with the other
ports, meaning that wxDynamicCast() to wxComboCtrl fails.

Avoid this problem by storing wxComboCtrl in wxComboPopupWindow, as then
we can just use it later without any casts -- at the price of storing an
extra pointer in a transient object, i.e. without any real cost.

See https://github.com/wxWidgets/wxWidgets/pull/2418
2021-07-10 22:32:24 +01:00
Vadim Zeitlin
aa42d9c805 Use wxPopupTransientWindow in wxComboCtrl in wxMSW too
This seems to work fine with current version of wxPopupTransientWindow
and wxPU_CONTAINS_CONTROLS style and allows to drastically simplify the
whole mess of preprocessor checks in wxComboCtrl code, reducing the
logic to just 2 cases: either wxUSE_POPUPWIN == 1 under any of the major
platforms and then we use wxPopupTransientWindow or wxUSE_POPUPWIN == 0
or we use some other platform and then a TLW-based fallback is used
instead.

In spite of the amount of changes, this should only modify behaviour
under MSW where wxPopupTransientWindow is used now instead of whatever
was used before.
2021-07-10 19:35:53 +01:00
Vadim Zeitlin
272b1009cc Define default FOCUS_RING value just once
Mac is the only platform which needs, so just define it as 0 for all the
other ones.

No real changes.
2021-07-10 19:35:33 +01:00
Vadim Zeitlin
67f27f1b89 Always center text control in wxComboCtrl vertically
Simplify the code by removing TEXTCTRL_TEXT_CENTERED, it was only set to
1 for "other" (i.e. not one of the main ones) platforms and if it's
really a problem for them, which is not even certain, the solution is to
fix them rather than to uglify common code.
2021-07-10 19:35:33 +01:00
Vadim Zeitlin
d7d5231e96 Replace wxComboPopupEvtHandler with calls to Bind() as well
This is not as much of a simplification as the previous two commits
because there is no simple replacement of EVT_MOUSE_EVENTS() using
Bind() and a loop over all mouse event types has to be written
explicitly, but it still avoids the need to allocate and delete a
separate object, so is still worth it.
2021-07-10 19:35:31 +01:00
Vadim Zeitlin
f3fb6dc833 Get rid of wxComboPopupWindowEvtHandler in wxComboCtrlBase too
Use Bind() calls instead of another event handler too, for the same
reasons as in the previous commit.
2021-07-10 18:04:38 +01:00
Vadim Zeitlin
d6426168a3 Remove wxComboBoxExtraInputHandler and use Bind() instead
There is no need to use a separate wxEvtHandler here when we can just
use Bind() to directly handle the child text control events in
wxComboCtrlBase itself, this code was a left over from pre-wx3 days.

No real changes, just make the code simpler and smaller (and also
marginally more efficient at run-time).
2021-07-10 18:04:38 +01:00
Vadim Zeitlin
cf3ebcea1a Merge wxComboCtrl::InstallInputHandlers() into CreateTextCtrl()
This function was always called after calling CreateTextCtrl() and
couldn't be called at any other moment, so it didn't make much sense to
have it as a separate function, just install the custom input handler
when (re)creating the text control.

This simplifies the derived classes code.
2021-07-10 18:04:38 +01:00
Maarten Bent
e3491fc537 Create a wxDisplay directly from wxWindow 2021-02-13 21:11:18 +01:00
Maarten Bent
01d8c1bf8e Improve wxComboCtrl popup position with multiple displays 2021-02-13 01:59:21 +01:00
YuSanka
76354fbc8d Fixed wxComboCtrlBase::ShowPopup() to show a popup control in respect to the display of the provided window instead of primary display. See issue The "Show" Dropdown list goes out of the screen #2999 (https://github.com/prusa3d/prusaslicer/issues/2999) 2021-02-13 01:56:12 +01:00
Vadim Zeitlin
63b1f17703 Make it possible to use controls inside wxComboPopup again
This should have been done together with the changes of 41410610ef
(Don't force wxPU_CONTAINS_CONTROLS on wxPopupTransientWindow,
2020-07-10) as without this style controls inside wxComboPopup couldn't
accept focus any more, which broke the previously working code.
2020-12-07 14:06:23 +01:00
Maarten Bent
f4221b6df5 Improve GetSizeFromText in wxComboCtrl
Also take default text indent into account, and use the actual button area width.

Closes #18930.
2020-11-26 20:52:49 +01:00
PB
f57f214122 Remove BCC-specific hdrstop pragma from everywhere 2020-10-12 21:58:37 +02:00
Fulvio Senore
9d470f6433 Fix focus-related problems in wxComboCtrl under MSW
Allow default handling of focus events to take place, this is needed
at least under MSW to avoid confusing the system focus-tracking logic.
2020-01-31 15:41:55 +01:00
Artur Wieczorek
6b00cc80f1 Revert making wxComboCtrl a wxCompositeWindow
Commit 70e9dbd756 has fixed #18394 but unfortunately it also caused several other issues observed e.g. in #18540. Apparently wxComboCtrl doesn't fit well to the wxCompositeWindow framework -  especially when wxCB_READONLY flag is set and there is no main editor control what is problematic for wxCompositeWindow implementation. At the moment it is more pragmatic to go back to the original wxComboCtrl concept as a plain compound control to fix the regression and try to fix #18394 in an alternative way.

Closes #18540.
See #18394.
2019-11-08 18:51:07 +01:00
Maarten Bent
370ae40b35 Use more FromDIP for hardcoded sizes 2019-09-28 23:47:04 +02:00
Artur Wieczorek
70e9dbd756 Make wxComboCtrl a wxCompositeWindow
wxComboCtrl consists of several controls (text entry, button, popup) and therefore should be implemented as a wxCompositeWindow to prevent problems with generating spurious events when e.g. focus is transferred between the sub-controls.

Closes #18394.
2019-08-23 22:55:05 +02:00
Vadim Zeitlin
23d43a6e55 Comment out the post-#endif comment
Even though both MSVC and gcc seem to silently ignore everything coming
after "#endif", it's still wrong to have anything but a comment after
it.

See commit 881aabf63e
2019-08-20 13:04:26 +02:00
Artur Wieczorek
881aabf63e Fix dismissing wxComboCtrl popup
When wxComboCtrl popup window is dismissed we need to hide it but calling ShowWindow() Win API directly from WM_ACTIVATE event handler causes some side effects like calling the handler again (under Win 7) or setting the focus improperly (under Win 10). To avoid these problems we should postpone hiding.

Closes #18376.
2019-08-18 19:53:41 +02:00
Maarten Bent
f74d756ca5 Use DPI Aware wxGetSystemMetrics
If no wxWindow is known, use wxTheApp->GetTopWindow().
Also use a wxWindow for all wxSystemSettings::GetMetric calls.
2019-07-15 00:00:18 +02:00
Artur Wieczorek
1ba0f055e2 Use dedicated function to get screen position of wxComboCtrl popup
Closes #13462.
2018-11-16 18:51:37 +01:00
Artur Wieczorek
c05fac0ade Don't re-enter wxComboCtrlBase::HidePopup
Under wxMSW this method is re-entered due to triggering EVT_ACTIVATE when EVT_LEFT_UP is being already handled.
We need to prevent this to avoid generating spurious EVT_TEXT events and raising errors on calling SetFocus().

Closes #18260.
2018-11-14 21:30:35 +01: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
Jan Niklas Hasse
496da2e550 Remove trailing whitespace from several files
No real changes.

See https://github.com/wxWidgets/wxWidgets/pull/787
2018-04-18 15:45:42 +02:00
Paul Cornett
a33ce89fec Avoid always consuming mouse wheel event in wxComboCtrl.
Allow further processing when key up/down is not handled.
See #18073
2018-02-11 22:16:48 -08:00
Vadim Zeitlin
f775501ba0 Don't eat TAB unconditionally in wxComboCtrl
This prevented TAB navigation from doing anything at all when the focus
was on wxComboCtrl in wxGTK and, probably, all the other non-MSW ports
(in wxMSW TAB navigation happens before normal key processing, so this
check was irrelevant there).
2018-01-30 19:40:59 +01:00
Artur Wieczorek
54275bb2c9 Fix positioning of ComboBoxEditor in wxPG (wxOSX), cont.
By mistake, parameter for improper platform was set in dd9c08447e.
2017-07-16 20:58:34 +02:00
Artur Wieczorek
dd9c08447e Fix positioning of ComboBoxEditor in wxPG (wxOSX)
Position of the combo box editor associated with properties having custom
bitmaps like e.g. ColourProperty, needs to be adjusted in order to display
edited text at the same position as the text which is displayed as
a property value prior to the editing.
2017-07-16 19:13:37 +02:00
Artur Wieczorek
9994288688 Fix positioning of ComboBoxEditor in wxPG (wxGTK)
Position of the combo box editor associated with properties having custom
bitmaps like e.g. ColourProperty, needs to be adjusted in order to display
edited text at the same position as the text which is displayed as
a property value prior to the editing.
2017-07-16 19:09:18 +02:00
Vadim Zeitlin
d15bbcacd2 Merge branch 'rmv_symbols_3' of https://github.com/catalinr/wxWidgets
Remove obsolete mentions of Windows 9x, Windows CE and OS/2.
2017-02-20 17:46:45 +01:00
Vadim Zeitlin
cee3188c1a Don't connect handler for wxEVT_TEXT_ENTER in wxComboCtrl unnecessarily
Connecting to wxEVT_TEXT_ENTER is not necessary if wxTE_PROCESS_ENTER style is
not used was always useless and is actively harmful since the changes of
5591a20093 as it results in an assert failure
now.

Just don't do it unless we really want, and will get, these events.
2016-02-29 18:54:18 +01:00
John Roberts
505f1fb3a8 Ensure that wxComboCtrl is aligned with other controls under OS X
Positioning wxComboCtrl and wxTextCtrl or wxComboBox in the same column should
align their left borders, but it didn't because of an extra offset for the
focus ring used for wxComboCtrl only.

We need to either apply this offset to all controls or none of them, so remove
it from this one.

Closes #15017.
2016-02-23 01:21:49 +01:00
Catalin
338629e314 Removed obsolete symbols from comments. 2016-02-21 20:12:11 +02:00
Steve Browne
633d04ca92 Changed several places using hard-coded size values to use FromDIP instead. 2015-11-24 12:21:43 -05:00
Tobias Taschner
8282c1be0f Remove Windows CE support
Windows CE doesn't seem to be supported by Microsoft any longer. Last CE
release was in early 2013 and the PocketPC and Smartphone targets supported by
wxWidgets are long gone.

The build files where already removed in an earlier cleanup this commit
removes all files, every #ifdef and all documentation regarding the Windows CE
support.

Closes https://github.com/wxWidgets/wxWidgets/pull/81
2015-09-23 00:52:30 +02:00
Dimitri Schoolwerth
31145b8e3a Fix some typos, no code changes (besides strings) 2015-06-05 02:54:46 +04:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Artur Wieczorek
d8922744cf Use wxMilliClock_t to store values returned by wxGetLocalTimeMillis().
This fixes wxComboCtrl compilation with wxUSE_LONGLONG==0 as wxMilliClock_t is
always mapped to the proper base type and hence can be used even if wxLongLong
type is not defined.

See #16939.
2015-04-04 17:51:40 +02:00
Dimitri Schoolwerth
0e6af4ac39 No code changes, fix some typos.
Change several occurrences of "it's" where "its" is meant, as well as a few other minor typos.



git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2015-02-15 17:11:44 +00:00
Vadim Zeitlin
0947d75f2f Make the comment more accurate, and the SetFocus is comment before, this is just restore it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77810 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:41:39 +00:00
Vadim Zeitlin
18ccc964ee In wxUniv x11 port. Should not set focus to popup control
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-09-23 17:41:18 +00:00
Paul Cornett
9b41d18b25 remove unused macro definitions
and limit others to the configurations which use them

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-04-04 16:44:30 +00:00
Vadim Zeitlin
33ad33d447 Add wxOVERRIDE and use it in common and wxOSX code.
Make overriding virtual methods more explicit and enable additional checks
provided by C++11 compilers when "override" is used.

Closes #16100.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-20 13:26:28 +00:00
Paul Cornett
eb1f6dd806 fix a couple GTK assertions about setting negative sizes, closes #15891
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-23 05:47:43 +00:00
Paul Cornett
8bfcb398df restrict fix from r75668 to GTK3 only, as it might cause flickering
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75670 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-22 04:14:46 +00:00
Paul Cornett
6d7522952a Fix best size calculation with GTK3
GTK3 reports preferred size of hidden widgets as zero.
see #15896


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75668 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-21 19:37:13 +00:00
Stefan Csomor
947a8734ac reverting r74098, applying John's version, see #15008, #15765, #13841 will be backported if no regressions are discovered
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75401 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-12-20 16:03:13 +00:00
Václav Slavík
69c7c9375c Fix wxComboCtrlBase::DoGetSizeFromTextSize() performance regression.
r72935 introduced code that created a temporary wxComboBox control to
take measurements. This is very expensive in MSW and adds noticeable
delay when creating more than a few controls.

Replace with equivalent wxMSW code that computes the height in the same
way other wxMSW controls do.

The wxGTK version cannot be eliminated in the same way, so at least add
some basic caching there. It's much less of a problem, because GTK+
controls creation is much cheaper than MSW one.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-08-14 15:47:21 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00