Commit Graph

123 Commits

Author SHA1 Message Date
Vadim Zeitlin
bbdee10d5f Fix recently broken forwarding of events between event handlers.
After the recent changes to the event processing logic, forwarding an event
from one event handler to another one stopped working correctly because the
per-event "process here only" flag prevented it from following the event
handler chain after forwarding. This notably broke keyboard navigation in
wxComboCtrl under MSW in wx itself and probably quite a few of other things in
user code.

Fix this by replacing the boolean flag with a pointer to the handler to which
the processing of this event should be restricted. This allows the full
processing to still take place if an event is forwarded to another handler.
So wxEvent::ShouldProcessHereOnly() is now called ShouldProcessOnlyIn() and
takes a wxEvtHandler parameter.

This made appear a problem in wxScrollHelperEvtHandler code that was hidden by
the bug above: the events were still processed multiple times in it. To fix
this, also add wxEvent::DidntHonourProcessOnlyIn() and take it into account in
the base class code. Did I mention that wxScrollHelperEvtHandler must die?

Add another unit test checking that forwarding works correctly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-06-02 11:58:31 +00:00
Vadim Zeitlin
52212bcb4a Yet another fix to event propagation in scrolled windows.
Calling ProcessEventLocally() didn't work because the command events were not
propagated to the parent window any more, breaking a lot of things including
wxDataViewCtrl event generation in the generic version. So do restore
ProcessEvent() call but use it on the next handler (i.e. the window itself)
and not this one now. This still results in some duplicate calls but at least
the events should be passed everywhere where they are expected to arrive.

wxScrollHelperEvtHandler must die.

Closes #12078.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-05-21 12:07:45 +00:00
Vadim Zeitlin
ce45133ee7 Fix wxScrollHelperEvtHandler broken by recent changes to event processing.
Use ProcessEventLocally() added in r64261 (which was probably the one to break
this) to forward event to the window itself instead of ProcessEvent() in
wxScrollHelperEvtHandler::ProcessEvent() implementation. Calling ProcessEvent()
didn't work any more in a case when another event handler was pushed on a
wxScrolledWindow: in this case the EVT_SIZE and EVT_PAINT handlers defined in
the window itself were not called at all any more.

Add a unit test checking for the even more tortuous than usual event
processing path in this particular case.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-05-20 17:33:26 +00:00
Václav Slavík
d4a58a7ce5 Preserve m_skipped in wx[Var]ScrollHelperEvtHandler::ProcessEvent.
If the event was skipped and not processed, its "skipped" status would
be lost.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-03-28 14:37:30 +00:00
Vadim Zeitlin
e2495f725c Generate scroll events for key presses in wxScrolledWindow.
Don't duplicate the existing wxScrolledWindow::CalcScrollInc() logic in
HandleOnChar(), simply generate scrolling events from it, this simplifies the
code and ensures that it is more correct.

Closes #11070.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-05 17:25:14 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Stefan Csomor
2e1517a2e3 updating conditions for OSX
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-10 17:56:19 +00:00
Vadim Zeitlin
b19bcdeb2b no changes, just use an accessor method instead of using wxMouseEvent member variables directly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60434 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-04-29 21:43:09 +00:00
Vadim Zeitlin
36e5a9a7c4 fix (harmless) warnings in release mingw32 build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59108 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-23 21:15:45 +00:00
Vadim Zeitlin
c0c133e13b add wx-prefixed and semicolon-requiring versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 11:45:59 +00:00
Vadim Zeitlin
d3b9f782ef don't use annoying and unneeded in C++ casts of NULL to "T *" in all other files neither
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-19 13:55:27 +00:00
Vadim Zeitlin
1ddb6d2857 allow passing -1 range to SetScrollbar() to indicate the the scrollbar should be disabled and use this to implement wxSHOW_SB_ALWAYS in the generic wxScrollHelper
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-24 21:58:05 +00:00
Vadim Zeitlin
29e1398fa0 further untangle generic and native GTK implementations of wxScrollHelper: use the standard wxScrollHelperBase/wxScrollHelper naming convention and move the stuff unused by GTK in the generic implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-24 16:43:30 +00:00
Vadim Zeitlin
69e9752529 provide generic implementation for ShowScrollbars() too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-24 16:11:02 +00:00
Vadim Zeitlin
6362d82b3e add wxScrollHelper::ShowScrollbars() (implemented for GTK only right now, generic implementation coming soon)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57529 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-24 15:58:37 +00:00
Vadim Zeitlin
0b0f6f87d5 add convenient GetViewStart() and Scroll() overloads taking wxPoint instead of 2 int[ pointer]s
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-24 15:11:00 +00:00
Vadim Zeitlin
888e963843 don't scroll to the child which gets focus if it is already fully visible; more importantly, don't do anything if we can't make it fully visible anyhow (fixes bug in the comment 13 of #9563)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-17 14:46:09 +00:00
Vadim Zeitlin
69367c566e move the grid-specific workaround for scrollbar hysteresis to wxScrollHelper itself, the scrollbars now should not only appear but also disappear correctly during resizing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-09-14 22:44:08 +00:00
Julian Smart
380e1c0ccc Fixed scrolling bug where scrollbar was taken to be a valid child window
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55012 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-08-07 15:59:46 +00:00
Robin Dunn
3ec704b422 Applied patch from Ticket #9563. Use just the rectangle of the widget with the focus when deciding if scrolling is needed, instead of the rect of the parent of the widget/child of the target window. This fixes some flickering when a panel of widgets is used inside the scrolled window, and also a total lack of scrolling if the focused widget is out of view but the upper-left corner of the panel is in view.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54552 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-07-09 01:37:32 +00:00
Václav Slavík
f2a6c918e8 compilation fix for wxMSW and r52961
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52962 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-04-01 15:40:49 +00:00
Václav Slavík
16361ec941 Generalized wxScrolledWindow into wxScrolled<T> that can derive from
anything (typically wxPanel or wxWindow). Fixed generic wxListCtrl to
use wxScrolled<wxWindow> - this fixes focus problems with label-editing
text control. Fixes to wxScrolledWindow doxygen docs.



git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52961 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-04-01 15:07:03 +00:00
Vadim Zeitlin
455f7c8205 do VMS-specific X symbols redefinitions only once in wx/platform.h instead of doing it in individual files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50982 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-01-01 20:38:33 +00:00
Robin Dunn
19cf18752e It is possible for a scrolled window to get focus events from children other than
the target window's children (the wxGrid label windows for example) so don't
trigger an assert about it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50936 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-12-28 18:01:13 +00:00
Václav Slavík
7d616e99ed fixed wxScrolledWindow best size calculation: compute something (this was broken after 2.8) and don't use current size in computation; also removed now-unused ScrollGetWindowSizeForVirtualSize() method to simplify the code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-12-21 22:47:55 +00:00
Václav Slavík
02a3389106 wxScrolledWindow can get wxEVT_CHILD_FOCUS event for itself, handle that case too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50867 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-12-20 20:04:46 +00:00
Václav Slavík
06b9c2a22f when a window inside scrolled window receives focus, make sure the parent is scrolled so that the window with focus is visible
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-12-19 19:21:52 +00:00
Vadim Zeitlin
74ab5f5b9d various warning fixes for icc 9.1 compilation
- variable shadowing
- unused code and variables
- extra semicolons


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-09-21 12:00:25 +00:00
Vadim Zeitlin
8c36c49496 don't do anything before including the PCH header
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48862 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-09-21 11:53:23 +00:00
Robert Roebling
602e33659e Let GtkScrolledWindow handle scroll wheel events.
Reset visible range in wxListCtrl after scrolling.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47096 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-07-03 11:17:40 +00:00
Vadim Zeitlin
30c15c1d73 remove unused static function (avoids a warning about it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-05-22 02:02:51 +00:00
Stefan Csomor
9372787028 trying optimal scrolling solution perf-wise
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-05-02 14:31:30 +00:00
Vadim Zeitlin
2e9c0c010a don't skip the scroll position validity check in CalcScrollInc() if m_[xy]ScrollPixelsPerLine is NULL, this resulted in problems mentioned in patch 1696082
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45342 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-04-08 23:06:42 +00:00
Vadim Zeitlin
75cbbafdeb don't add wxVSCROLL if only wxHSCROLL is explicitly specified (and vice versa), only add (both) if no scrolling styles are specified at all
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44837 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-03-15 20:32:36 +00:00
Julian Smart
b9dac1ab88 Don't optimize if there are child windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44437 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-02-10 09:40:54 +00:00
Vadim Zeitlin
35c7138631 corrected return value and skipped flag setting in wxScrollHelperEvtHandler::ProcessEvent()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-02-08 02:26:59 +00:00
Stefan Csomor
6682e732a6 using scroll axis in translation to scrollwin events, avoiding blocking immediate updates when handling the scroll event
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44357 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-02-04 06:26:02 +00:00
Václav Slavík
b97dc9c8bc more efficient version of the wxUniv scrolling fix: don't call Update() in cases when ScrollWindow() wouldn't be called
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43193 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-11-08 12:20:21 +00:00
Vadim Zeitlin
8ea4569950 update window before changing the scrolling position and really scrolling it to avoid redraw problems in wxUniv
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43103 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-11-06 01:45:03 +00:00
Robert Roebling
807a572ef4 Next round of RTL fixes. This change greatly simplifes
the code and makes most #ifdefs redundant.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-09-16 21:44:21 +00:00
Robert Roebling
f4fe2f2052 Add GetScrollHelper() to wxWindow.
Let wxScrollHelper set the underlying field itself.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-09-13 22:18:24 +00:00
Robert Roebling
5713b34914 Make wxGTK's wxScrolledWindow set m_x/xScrollLines to 0
if scrollbars disappear (instead of 1) as per wxMSW.
  Expose m_x/yScrollLines in public getters.
  Correct window origin for scrolled window in RTL.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-09-13 10:01:21 +00:00
Robert Roebling
4f0eda0e6e More RTL fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-09-12 09:48:27 +00:00
Włodzimierz Skiba
ed2fbeb835 Include wx/sizer.h and wx/layout.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-06-08 06:57:39 +00:00
Włodzimierz Skiba
c0badb709a Include wx/timer.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39285 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-23 11:04:37 +00:00
Włodzimierz Skiba
ed4b0fdca6 Include wx/dcclient.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39085 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-06 21:51:49 +00:00
Włodzimierz Skiba
8e609c8259 Include wx/panel.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39034 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-04 18:10:27 +00:00
Włodzimierz Skiba
de6185e212 Include wx/utils.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38972 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-02 10:39:23 +00:00
Robin Dunn
5bd24f7242 Make WXK*PRIOR and WXK*NEXT be aliases for WXK*PAGEUP and WXK*PAGEDOWN
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38326 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-03-24 04:14:29 +00:00
Julian Smart
c6b81cebf1 If we processed a command event, return true, or we could end up processing
it again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38054 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-03-13 15:11:14 +00:00