| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: wx/mousemanager.h
- // Purpose: documentation of wxMouseEventsManager class
- // Author: Vadim Zeitlin
- // Created: 2009-04-20
- // Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- /**
- @class wxMouseEventsManager
- Helper for handling mouse input events in windows containing multiple
- items.
- This class handles mouse events and synthesizes high-level notifications
- such as clicks and drag events from low level mouse button presses and
- mouse movement events. It is useful because handling the mouse events is
- less obvious than might seem at a first glance: for example, clicks on an
- object should only be generated if the mouse was both pressed and released
- over it and not just released (so it requires storing the previous state)
- and dragging shouldn't start before the mouse moves away far enough.
- This class encapsulates all these dull details for controls containing
- multiple items which can be identified by a positive integer index and you
- just need to implement its pure virtual functions to use it.
- Notice that this class supposes that all items can be identified by an
- integer "index" but it doesn't need to be an ordinal index of the item
- (although this is the most common case) -- it can be any value which can
- be used to uniquely identify an item.
- @library{wxcore}
- @category{events}
- */
- class wxMouseEventsManager : public wxEvtHandler
- {
- public:
- /**
- Default constructor.
- You must call Create() to finish initializing the mouse events manager.
- If possible, avoid the use of this constructor in favour of the other
- one which fully initializes the mouse events manager immediately.
- */
- wxMouseEventsManager();
- /**
- Constructor creates the manager for the window.
- A mouse event manager is always associated with a window and must be
- destroyed by the window when it is destroyed (it doesn't need to be
- allocated on the heap however).
- */
- wxMouseEventsManager(wxWindow *win);
- /**
- Finishes initialization of the object created using default
- constructor.
- Currently always returns @true.
- */
- bool Create(wxWindow *win);
- protected:
- /**
- Must be overridden to return the item at the given position.
- @param pos
- The position to test, in physical coordinates.
- @return
- The index of the item at the given position or wxNOT_FOUND if there
- is no item there.
- */
- virtual int MouseHitTest(const wxPoint& pos) = 0;
- /**
- Must be overridden to react to mouse clicks.
- This method is called when the user clicked (i.e. pressed and released
- mouse over the @e same item) and should normally generate a
- notification about this click and return true if it was handled or
- false otherwise, determining whether the original mouse event is
- skipped or not.
- @param item
- The item which was clicked.
- @return
- @true if the mouse event was processed and @false otherwise.
- */
- virtual bool MouseClicked(int item) = 0;
- /**
- Must be overridden to allow or deny dragging of the item.
- This method is called when the user attempts to start dragging the
- given item.
- @param item
- The item which is going to be dragged.
- @param pos
- The position from where it is being dragged.
- @return
- @true to allow the item to be dragged (in which case
- MouseDragging() and MouseDragEnd() will be called later, unless
- MouseDragCancelled() is called instead) or @false to forbid it.
- */
- virtual bool MouseDragBegin(int item, const wxPoint& pos) = 0;
- /**
- Must be overridden to provide feed back while an item is being dragged.
- This method is called while the item is being dragged and should
- normally update the feedback shown on screen (usually this is done
- using wxOverlay).
- Notice that this method will never be called for the items for which
- MouseDragBegin() returns @false. Consequently, if MouseDragBegin()
- always returns @false you can do nothing in this method.
- @param item
- The item being dragged.
- @param pos
- The current position of the item.
- @see MouseDragEnd()
- */
- virtual void MouseDragging(int item, const wxPoint& pos) = 0;
- /**
- Must be overridden to handle item drop.
- This method is called when the mouse is released after dragging the
- item. Normally the item should be positioned at the new location.
- @param item
- The item which was dragged and now dropped.
- @param pos
- The position at which the item was dropped.
- @see MouseDragBegin(), MouseDragging()
- */
- virtual void MouseDragEnd(int item, const wxPoint& pos) = 0;
- /**
- Must be overridden to handle cancellation of mouse dragging.
- This method is called when mouse capture is lost while dragging the
- item and normally should remove the visual feedback drawn by
- MouseDragging() as well as reset any internal variables set in
- MouseDragBegin().
- @see wxMouseCaptureLostEvent
- */
- virtual void MouseDragCancelled(int item) = 0;
- /**
- May be overridden to update the state of an item when it is pressed.
- This method is called when the item is becomes pressed and can be used
- to change its appearance when this happens. It is mostly useful for
- button-like items and doesn't need to be overridden if the items
- shouldn't change their appearance when pressed.
- @param item
- The item being pressed.
- */
- virtual void MouseClickBegin(int item);
- /**
- Must be overridden to reset the item appearance changed by
- MouseClickBegin().
- This method is called if the mouse capture was lost while the item was
- pressed and must be overridden to restore the default item appearance
- if it was changed in MouseClickBegin().
- @see MouseDragCancelled(), wxMouseCaptureLostEvent
- */
- virtual void MouseClickCancelled(int item);
- };
|