X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ecad27577fd4e949d8e3a271d32f685b42972d57..e4097f77c440b1f31a80fe273cc732c14d606096:/interface/wx/event.h diff --git a/interface/wx/event.h b/interface/wx/event.h index 73f66d5fe9..a71070392d 100644 --- a/interface/wx/event.h +++ b/interface/wx/event.h @@ -3,10 +3,11 @@ // Purpose: interface of wxEvtHandler, wxEventBlocker and many // wxEvent-derived classes // Author: wxWidgets team -// RCS-ID: $Id$ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +#if wxUSE_BASE + /** The predefined constants for the number of times we propagate event upwards window child-parent chain. @@ -111,7 +112,7 @@ public: this event. @param eventType The unique type of event, e.g. @c wxEVT_PAINT, @c wxEVT_SIZE or - @c wxEVT_COMMAND_BUTTON_CLICKED. + @c wxEVT_BUTTON. */ wxEvent(int id = 0, wxEventType eventType = wxEVT_NULL); @@ -142,7 +143,7 @@ public: wxObject* GetEventObject() const; /** - Returns the identifier of the given event type, such as @c wxEVT_COMMAND_BUTTON_CLICKED. + Returns the identifier of the given event type, such as @c wxEVT_BUTTON. */ wxEventType GetEventType() const; @@ -159,6 +160,19 @@ public: */ int GetId() const; + /** + Return the user data associated with a dynamically connected event handler. + + wxEvtHandler::Connect() and wxEvtHandler::Bind() allow associating + optional @c userData pointer with the handler and this method returns + the value of this pointer. + + The returned pointer is owned by wxWidgets and must not be deleted. + + @since 2.9.5 + */ + wxObject *GetEventUserData() const; + /** Returns @true if the event handler should be skipped, @false otherwise. */ @@ -209,7 +223,7 @@ public: void SetTimestamp(long timeStamp = 0); /** - Test if this event should be propagated or not, i.e. if the propagation level + Test if this event should be propagated or not, i.e.\ if the propagation level is currently greater than 0. */ bool ShouldPropagate() const; @@ -258,6 +272,10 @@ protected: int m_propagationLevel; }; +#endif // wxUSE_BASE + +#if wxUSE_GUI + /** @class wxEventBlocker @@ -339,7 +357,9 @@ public: ~wxPropagateOnce(); }; +#endif // wxUSE_GUI +#if wxUSE_BASE /** @class wxEvtHandler @@ -464,6 +484,90 @@ public: */ virtual void AddPendingEvent(const wxEvent& event); + /** + Asynchronously call the given method. + + Calling this function on an object schedules an asynchronous call to + the method specified as CallAfter() argument at a (slightly) later + time. This is useful when processing some events as certain actions + typically can't be performed inside their handlers, e.g. you shouldn't + show a modal dialog from a mouse click event handler as this would + break the mouse capture state -- but you can call a method showing + this message dialog after the current event handler completes. + + The method being called must be the method of the object on which + CallAfter() itself is called. + + Notice that it is safe to use CallAfter() from other, non-GUI, + threads, but that the method will be always called in the main, GUI, + thread context. + + Example of use: + @code + class MyFrame : public wxFrame { + void OnClick(wxMouseEvent& event) { + CallAfter(&MyFrame::ShowPosition, event.GetPosition()); + } + + void ShowPosition(const wxPoint& pos) { + if ( wxMessageBox( + wxString::Format("Perform click at (%d, %d)?", + pos.x, pos.y), "", wxYES_NO) == wxYES ) + { + ... do take this click into account ... + } + } + }; + @endcode + + @param method The method to call. + @param x1 The (optional) first parameter to pass to the method. + Currently, 0, 1 or 2 parameters can be passed. If you need to pass + more than 2 arguments, you can use the CallAfter(const T& fn) + overload that can call any functor. + + @note This method is not available with Visual C++ before version 8 + (Visual Studio 2005) as earlier versions of the compiler don't + have the required support for C++ templates to implement it. + + @since 2.9.5 + */ + template + void CallAfter(void (T::*method)(T1, ...), T1 x1, ...); + + /** + Asynchronously call the given functor. + + Calling this function on an object schedules an asynchronous call to + the functor specified as CallAfter() argument at a (slightly) later + time. This is useful when processing some events as certain actions + typically can't be performed inside their handlers, e.g. you shouldn't + show a modal dialog from a mouse click event handler as this would + break the mouse capture state -- but you can call a function showing + this message dialog after the current event handler completes. + + Notice that it is safe to use CallAfter() from other, non-GUI, + threads, but that the method will be always called in the main, GUI, + thread context. + + This overload is particularly useful in combination with C++11 lambdas: + @code + wxGetApp().CallAfter([]{ + wxBell(); + }); + @endcode + + @param functor The functor to call. + + @note This method is not available with Visual C++ before version 8 + (Visual Studio 2005) as earlier versions of the compiler don't + have the required support for C++ templates to implement it. + + @since 3.0 + */ + template + void CallAfter(const T& functor); + /** Processes an event, searching event tables and calling zero or more suitable event handler function(s). @@ -671,7 +775,11 @@ public: be explicitly converted to the correct type which can be done using a macro called @c wxFooEventHandler for the handler for any @c wxFooEvent. @param userData - Data to be associated with the event table entry. + Optional data to be associated with the event table entry. + wxWidgets will take ownership of this pointer, i.e. it will be + destroyed when the event handler is disconnected or at the program + termination. This pointer can be retrieved using + wxEvent::GetEventUserData() later. @param eventSink Object whose member function should be called. It must be specified when connecting an event generated by one object to a member @@ -699,7 +807,7 @@ public: Example: @code frame->Connect( wxID_EXIT, - wxEVT_COMMAND_MENU_SELECTED, + wxEVT_MENU, wxCommandEventHandler(MyFrame::OnQuit) ); @endcode @@ -820,7 +928,11 @@ public: The last ID of the identifier range to be associated with the event handler. @param userData - Data to be associated with the event table entry. + Optional data to be associated with the event table entry. + wxWidgets will take ownership of this pointer, i.e. it will be + destroyed when the event handler is disconnected or at the program + termination. This pointer can be retrieved using + wxEvent::GetEventUserData() later. @see @ref overview_cpp_rtti_disabled @@ -855,7 +967,11 @@ public: The last ID of the identifier range to be associated with the event handler. @param userData - Data to be associated with the event table entry. + Optional data to be associated with the event table entry. + wxWidgets will take ownership of this pointer, i.e. it will be + destroyed when the event handler is disconnected or at the program + termination. This pointer can be retrieved using + wxEvent::GetEventUserData() later. @see @ref overview_cpp_rtti_disabled @@ -1183,6 +1299,9 @@ protected: virtual bool TryAfter(wxEvent& event); }; +#endif // wxUSE_BASE + +#if wxUSE_GUI /** Flags for categories of keys. @@ -1425,7 +1544,7 @@ public: else // No Unicode equivalent. { // It's a special key, deal with all the known ones: - switch ( GetKeyCode() ) + switch ( event.GetKeyCode() ) { case WXK_LEFT: case WXK_RIGHT: @@ -1456,11 +1575,15 @@ public: /** Obtains the position (in client coordinates) at which the key was pressed. - Notice that this position is simply the current mouse pointer position - and has no special relationship to the key event itself. + Notice that under most platforms this position is simply the current + mouse pointer position and has no special relationship to the key event + itself. + + @a x and @a y may be @NULL if the corresponding coordinate is not + needed. */ wxPoint GetPosition() const; - void GetPosition(long* x, long* y) const; + void GetPosition(wxCoord* x, wxCoord* y) const; //@} /** @@ -1793,6 +1916,204 @@ public: +/** + @class wxCommandEvent + + This event class contains information about command events, which originate + from a variety of simple controls. + + Note that wxCommandEvents and wxCommandEvent-derived event classes by default + and unlike other wxEvent-derived classes propagate upward from the source + window (the window which emits the event) up to the first parent which processes + the event. Be sure to read @ref overview_events_propagation. + + More complex controls, such as wxTreeCtrl, have separate command event classes. + + @beginEventTable{wxCommandEvent} + @event{EVT_COMMAND(id, event, func)} + Process a command, supplying the window identifier, command event identifier, + and member function. + @event{EVT_COMMAND_RANGE(id1, id2, event, func)} + Process a command for a range of window identifiers, supplying the minimum and + maximum window identifiers, command event identifier, and member function. + @event{EVT_BUTTON(id, func)} + Process a @c wxEVT_BUTTON command, which is generated by a wxButton control. + @event{EVT_CHECKBOX(id, func)} + Process a @c wxEVT_CHECKBOX command, which is generated by a wxCheckBox control. + @event{EVT_CHOICE(id, func)} + Process a @c wxEVT_CHOICE command, which is generated by a wxChoice control. + @event{EVT_COMBOBOX(id, func)} + Process a @c wxEVT_COMBOBOX command, which is generated by a wxComboBox control. + @event{EVT_LISTBOX(id, func)} + Process a @c wxEVT_LISTBOX command, which is generated by a wxListBox control. + @event{EVT_LISTBOX_DCLICK(id, func)} + Process a @c wxEVT_LISTBOX_DCLICK command, which is generated by a wxListBox control. + @event{EVT_CHECKLISTBOX(id, func)} + Process a @c wxEVT_CHECKLISTBOX command, which is generated by a wxCheckListBox control. + @event{EVT_MENU(id, func)} + Process a @c wxEVT_MENU command, which is generated by a menu item. + @event{EVT_MENU_RANGE(id1, id2, func)} + Process a @c wxEVT_MENU command, which is generated by a range of menu items. + @event{EVT_CONTEXT_MENU(func)} + Process the event generated when the user has requested a popup menu to appear by + pressing a special keyboard key (under Windows) or by right clicking the mouse. + @event{EVT_RADIOBOX(id, func)} + Process a @c wxEVT_RADIOBOX command, which is generated by a wxRadioBox control. + @event{EVT_RADIOBUTTON(id, func)} + Process a @c wxEVT_RADIOBUTTON command, which is generated by a wxRadioButton control. + @event{EVT_SCROLLBAR(id, func)} + Process a @c wxEVT_SCROLLBAR command, which is generated by a wxScrollBar + control. This is provided for compatibility only; more specific scrollbar event macros + should be used instead (see wxScrollEvent). + @event{EVT_SLIDER(id, func)} + Process a @c wxEVT_SLIDER command, which is generated by a wxSlider control. + @event{EVT_TEXT(id, func)} + Process a @c wxEVT_TEXT command, which is generated by a wxTextCtrl control. + @event{EVT_TEXT_ENTER(id, func)} + Process a @c wxEVT_TEXT_ENTER command, which is generated by a wxTextCtrl control. + Note that you must use wxTE_PROCESS_ENTER flag when creating the control if you want it + to generate such events. + @event{EVT_TEXT_MAXLEN(id, func)} + Process a @c wxEVT_TEXT_MAXLEN command, which is generated by a wxTextCtrl control + when the user tries to enter more characters into it than the limit previously set + with SetMaxLength(). + @event{EVT_TOGGLEBUTTON(id, func)} + Process a @c wxEVT_TOGGLEBUTTON event. + @event{EVT_TOOL(id, func)} + Process a @c wxEVT_TOOL event (a synonym for @c wxEVT_MENU). + Pass the id of the tool. + @event{EVT_TOOL_RANGE(id1, id2, func)} + Process a @c wxEVT_TOOL event for a range of identifiers. Pass the ids of the tools. + @event{EVT_TOOL_RCLICKED(id, func)} + Process a @c wxEVT_TOOL_RCLICKED event. Pass the id of the tool. (Not available on wxOSX.) + @event{EVT_TOOL_RCLICKED_RANGE(id1, id2, func)} + Process a @c wxEVT_TOOL_RCLICKED event for a range of ids. Pass the ids of the tools. (Not available on wxOSX.) + @event{EVT_TOOL_ENTER(id, func)} + Process a @c wxEVT_TOOL_ENTER event. Pass the id of the toolbar itself. + The value of wxCommandEvent::GetSelection() is the tool id, or -1 if the mouse cursor + has moved off a tool. (Not available on wxOSX.) + @event{EVT_COMMAND_LEFT_CLICK(id, func)} + Process a @c wxEVT_COMMAND_LEFT_CLICK command, which is generated by a control (wxMSW only). + @event{EVT_COMMAND_LEFT_DCLICK(id, func)} + Process a @c wxEVT_COMMAND_LEFT_DCLICK command, which is generated by a control (wxMSW only). + @event{EVT_COMMAND_RIGHT_CLICK(id, func)} + Process a @c wxEVT_COMMAND_RIGHT_CLICK command, which is generated by a control (wxMSW only). + @event{EVT_COMMAND_SET_FOCUS(id, func)} + Process a @c wxEVT_COMMAND_SET_FOCUS command, which is generated by a control (wxMSW only). + @event{EVT_COMMAND_KILL_FOCUS(id, func)} + Process a @c wxEVT_COMMAND_KILL_FOCUS command, which is generated by a control (wxMSW only). + @event{EVT_COMMAND_ENTER(id, func)} + Process a @c wxEVT_COMMAND_ENTER command, which is generated by a control. + @endEventTable + + @library{wxcore} + @category{events} +*/ +class wxCommandEvent : public wxEvent +{ +public: + /** + Constructor. + */ + wxCommandEvent(wxEventType commandEventType = wxEVT_NULL, int id = 0); + + /** + Returns client data pointer for a listbox or choice selection event + (not valid for a deselection). + */ + void* GetClientData() const; + + /** + Returns client object pointer for a listbox or choice selection event + (not valid for a deselection). + */ + wxClientData* GetClientObject() const; + + /** + Returns extra information dependent on the event objects type. + + If the event comes from a listbox selection, it is a boolean + determining whether the event was a selection (@true) or a + deselection (@false). A listbox deselection only occurs for + multiple-selection boxes, and in this case the index and string values + are indeterminate and the listbox must be examined by the application. + */ + long GetExtraLong() const; + + /** + Returns the integer identifier corresponding to a listbox, choice or + radiobox selection (only if the event was a selection, not a deselection), + or a boolean value representing the value of a checkbox. + + For a menu item, this method returns -1 if the item is not checkable or + a boolean value (true or false) for checkable items indicating the new + state of the item. + */ + int GetInt() const; + + /** + Returns item index for a listbox or choice selection event (not valid for + a deselection). + */ + int GetSelection() const; + + /** + Returns item string for a listbox or choice selection event. If one + or several items have been deselected, returns the index of the first + deselected item. If some items have been selected and others deselected + at the same time, it will return the index of the first selected item. + */ + wxString GetString() const; + + /** + This method can be used with checkbox and menu events: for the checkboxes, the + method returns @true for a selection event and @false for a deselection one. + For the menu events, this method indicates if the menu item just has become + checked or unchecked (and thus only makes sense for checkable menu items). + + Notice that this method cannot be used with wxCheckListBox currently. + */ + bool IsChecked() const; + + /** + For a listbox or similar event, returns @true if it is a selection, @false + if it is a deselection. If some items have been selected and others deselected + at the same time, it will return @true. + */ + bool IsSelection() const; + + /** + Sets the client data for this event. + */ + void SetClientData(void* clientData); + + /** + Sets the client object for this event. The client object is not owned by the + event object and the event object will not delete the client object in its destructor. + + The client object must be owned and deleted by another object (e.g. a control) + that has longer life time than the event object. + */ + void SetClientObject(wxClientData* clientObject); + + /** + Sets the @b m_extraLong member. + */ + void SetExtraLong(long extraLong); + + /** + Sets the @b m_commandInt member. + */ + void SetInt(int intCommand); + + /** + Sets the @b m_commandString member. + */ + void SetString(const wxString& string); +}; + + + /** @class wxWindowCreateEvent @@ -2162,8 +2483,8 @@ public: wxTextCtrl but other windows can generate these events as well) when its content gets copied or cut to, or pasted from the clipboard. - There are three types of corresponding events @c wxEVT_COMMAND_TEXT_COPY, - @c wxEVT_COMMAND_TEXT_CUT and @c wxEVT_COMMAND_TEXT_PASTE. + There are three types of corresponding events @c wxEVT_TEXT_COPY, + @c wxEVT_TEXT_CUT and @c wxEVT_TEXT_PASTE. If any of these events is processed (without being skipped) by an event handler, the corresponding operation doesn't take place which allows to @@ -2436,12 +2757,28 @@ public: /** Returns the configured number of lines (or whatever) to be scrolled per - wheel action. Defaults to three. + wheel action. + + Default value under most platforms is three. + + @see GetColumnsPerAction() */ int GetLinesPerAction() const; /** - Returns the logical mouse position in pixels (i.e. translated according to the + Returns the configured number of columns (or whatever) to be scrolled per + wheel action. + + Default value under most platforms is three. + + @see GetLinesPerAction() + + @since 2.9.5 + */ + int GetColumnsPerAction() const; + + /** + Returns the logical mouse position in pixels (i.e.\ translated according to the translation set for the DC, which usually indicates that the window has been scrolled). */ @@ -2611,204 +2948,6 @@ public: -/** - @class wxCommandEvent - - This event class contains information about command events, which originate - from a variety of simple controls. - - Note that wxCommandEvents and wxCommandEvent-derived event classes by default - and unlike other wxEvent-derived classes propagate upward from the source - window (the window which emits the event) up to the first parent which processes - the event. Be sure to read @ref overview_events_propagation. - - More complex controls, such as wxTreeCtrl, have separate command event classes. - - @beginEventTable{wxCommandEvent} - @event{EVT_COMMAND(id, event, func)} - Process a command, supplying the window identifier, command event identifier, - and member function. - @event{EVT_COMMAND_RANGE(id1, id2, event, func)} - Process a command for a range of window identifiers, supplying the minimum and - maximum window identifiers, command event identifier, and member function. - @event{EVT_BUTTON(id, func)} - Process a @c wxEVT_COMMAND_BUTTON_CLICKED command, which is generated by a wxButton control. - @event{EVT_CHECKBOX(id, func)} - Process a @c wxEVT_COMMAND_CHECKBOX_CLICKED command, which is generated by a wxCheckBox control. - @event{EVT_CHOICE(id, func)} - Process a @c wxEVT_COMMAND_CHOICE_SELECTED command, which is generated by a wxChoice control. - @event{EVT_COMBOBOX(id, func)} - Process a @c wxEVT_COMMAND_COMBOBOX_SELECTED command, which is generated by a wxComboBox control. - @event{EVT_LISTBOX(id, func)} - Process a @c wxEVT_COMMAND_LISTBOX_SELECTED command, which is generated by a wxListBox control. - @event{EVT_LISTBOX_DCLICK(id, func)} - Process a @c wxEVT_COMMAND_LISTBOX_DOUBLECLICKED command, which is generated by a wxListBox control. - @event{EVT_CHECKLISTBOX(id, func)} - Process a @c wxEVT_COMMAND_CHECKLISTBOX_TOGGLED command, which is generated by a wxCheckListBox control. - @event{EVT_MENU(id, func)} - Process a @c wxEVT_COMMAND_MENU_SELECTED command, which is generated by a menu item. - @event{EVT_MENU_RANGE(id1, id2, func)} - Process a @c wxEVT_COMMAND_MENU_RANGE command, which is generated by a range of menu items. - @event{EVT_CONTEXT_MENU(func)} - Process the event generated when the user has requested a popup menu to appear by - pressing a special keyboard key (under Windows) or by right clicking the mouse. - @event{EVT_RADIOBOX(id, func)} - Process a @c wxEVT_COMMAND_RADIOBOX_SELECTED command, which is generated by a wxRadioBox control. - @event{EVT_RADIOBUTTON(id, func)} - Process a @c wxEVT_COMMAND_RADIOBUTTON_SELECTED command, which is generated by a wxRadioButton control. - @event{EVT_SCROLLBAR(id, func)} - Process a @c wxEVT_COMMAND_SCROLLBAR_UPDATED command, which is generated by a wxScrollBar - control. This is provided for compatibility only; more specific scrollbar event macros - should be used instead (see wxScrollEvent). - @event{EVT_SLIDER(id, func)} - Process a @c wxEVT_COMMAND_SLIDER_UPDATED command, which is generated by a wxSlider control. - @event{EVT_TEXT(id, func)} - Process a @c wxEVT_COMMAND_TEXT_UPDATED command, which is generated by a wxTextCtrl control. - @event{EVT_TEXT_ENTER(id, func)} - Process a @c wxEVT_COMMAND_TEXT_ENTER command, which is generated by a wxTextCtrl control. - Note that you must use wxTE_PROCESS_ENTER flag when creating the control if you want it - to generate such events. - @event{EVT_TEXT_MAXLEN(id, func)} - Process a @c wxEVT_COMMAND_TEXT_MAXLEN command, which is generated by a wxTextCtrl control - when the user tries to enter more characters into it than the limit previously set - with SetMaxLength(). - @event{EVT_TOGGLEBUTTON(id, func)} - Process a @c wxEVT_COMMAND_TOGGLEBUTTON_CLICKED event. - @event{EVT_TOOL(id, func)} - Process a @c wxEVT_COMMAND_TOOL_CLICKED event (a synonym for @c wxEVT_COMMAND_MENU_SELECTED). - Pass the id of the tool. - @event{EVT_TOOL_RANGE(id1, id2, func)} - Process a @c wxEVT_COMMAND_TOOL_CLICKED event for a range of identifiers. Pass the ids of the tools. - @event{EVT_TOOL_RCLICKED(id, func)} - Process a @c wxEVT_COMMAND_TOOL_RCLICKED event. Pass the id of the tool. (Not available on wxOSX.) - @event{EVT_TOOL_RCLICKED_RANGE(id1, id2, func)} - Process a @c wxEVT_COMMAND_TOOL_RCLICKED event for a range of ids. Pass the ids of the tools. (Not available on wxOSX.) - @event{EVT_TOOL_ENTER(id, func)} - Process a @c wxEVT_COMMAND_TOOL_ENTER event. Pass the id of the toolbar itself. - The value of wxCommandEvent::GetSelection() is the tool id, or -1 if the mouse cursor - has moved off a tool. (Not available on wxOSX.) - @event{EVT_COMMAND_LEFT_CLICK(id, func)} - Process a @c wxEVT_COMMAND_LEFT_CLICK command, which is generated by a control (wxMSW only). - @event{EVT_COMMAND_LEFT_DCLICK(id, func)} - Process a @c wxEVT_COMMAND_LEFT_DCLICK command, which is generated by a control (wxMSW only). - @event{EVT_COMMAND_RIGHT_CLICK(id, func)} - Process a @c wxEVT_COMMAND_RIGHT_CLICK command, which is generated by a control (wxMSW only). - @event{EVT_COMMAND_SET_FOCUS(id, func)} - Process a @c wxEVT_COMMAND_SET_FOCUS command, which is generated by a control (wxMSW only). - @event{EVT_COMMAND_KILL_FOCUS(id, func)} - Process a @c wxEVT_COMMAND_KILL_FOCUS command, which is generated by a control (wxMSW only). - @event{EVT_COMMAND_ENTER(id, func)} - Process a @c wxEVT_COMMAND_ENTER command, which is generated by a control. - @endEventTable - - @library{wxcore} - @category{events} -*/ -class wxCommandEvent : public wxEvent -{ -public: - /** - Constructor. - */ - wxCommandEvent(wxEventType commandEventType = wxEVT_NULL, int id = 0); - - /** - Returns client data pointer for a listbox or choice selection event - (not valid for a deselection). - */ - void* GetClientData() const; - - /** - Returns client object pointer for a listbox or choice selection event - (not valid for a deselection). - */ - wxClientData* GetClientObject() const; - - /** - Returns extra information dependent on the event objects type. - - If the event comes from a listbox selection, it is a boolean - determining whether the event was a selection (@true) or a - deselection (@false). A listbox deselection only occurs for - multiple-selection boxes, and in this case the index and string values - are indeterminate and the listbox must be examined by the application. - */ - long GetExtraLong() const; - - /** - Returns the integer identifier corresponding to a listbox, choice or - radiobox selection (only if the event was a selection, not a deselection), - or a boolean value representing the value of a checkbox. - - For a menu item, this method returns -1 if the item is not checkable or - a boolean value (true or false) for checkable items indicating the new - state of the item. - */ - int GetInt() const; - - /** - Returns item index for a listbox or choice selection event (not valid for - a deselection). - */ - int GetSelection() const; - - /** - Returns item string for a listbox or choice selection event. If one - or several items have been deselected, returns the index of the first - deselected item. If some items have been selected and others deselected - at the same time, it will return the index of the first selected item. - */ - wxString GetString() const; - - /** - This method can be used with checkbox and menu events: for the checkboxes, the - method returns @true for a selection event and @false for a deselection one. - For the menu events, this method indicates if the menu item just has become - checked or unchecked (and thus only makes sense for checkable menu items). - - Notice that this method cannot be used with wxCheckListBox currently. - */ - bool IsChecked() const; - - /** - For a listbox or similar event, returns @true if it is a selection, @false - if it is a deselection. If some items have been selected and others deselected - at the same time, it will return @true. - */ - bool IsSelection() const; - - /** - Sets the client data for this event. - */ - void SetClientData(void* clientData); - - /** - Sets the client object for this event. The client object is not owned by the - event object and the event object will not delete the client object in its destructor. - - The client object must be owned and deleted by another object (e.g. a control) - that has longer life time than the event object. - */ - void SetClientObject(wxClientData* clientObject); - - /** - Sets the @b m_extraLong member. - */ - void SetExtraLong(long extraLong); - - /** - Sets the @b m_commandInt member. - */ - void SetInt(int intCommand); - - /** - Sets the @b m_commandString member. - */ - void SetString(const wxString& string); -}; - - - /** @class wxActivateEvent @@ -2837,16 +2976,46 @@ public: class wxActivateEvent : public wxEvent { public: + /** + Specifies the reason for the generation of this event. + + See GetActivationReason(). + + @since 3.0 + */ + enum Reason + { + /// Window activated by mouse click. + Reason_Mouse, + /// Window was activated with some other method than mouse click. + Reason_Unknown + }; + /** Constructor. */ wxActivateEvent(wxEventType eventType = wxEVT_NULL, bool active = true, - int id = 0); + int id = 0, Reason ActivationReason = Reason_Unknown); /** Returns @true if the application or window is being activated, @false otherwise. */ bool GetActive() const; + + /** + Allows to check if the window was activated by clicking it with the + mouse or in some other way. + + This method is currently only implemented in wxMSW and returns @c + Reason_Mouse there if the window was activated by a mouse click and @c + Reason_Unknown if it was activated in any other way (e.g. from + keyboard or programmatically). + + Under all the other platforms, @c Reason_Unknown is always returned. + + @since 3.0 + */ + Reason GetActivationReason() const; }; @@ -2861,11 +3030,15 @@ public: means that the event originated from a keyboard context button event, and you should compute a suitable position yourself, for example by calling wxGetMousePosition(). - When a keyboard context menu button is pressed on Windows, a right-click event - with default position is sent first, and if this event is not processed, the - context menu event is sent. So if you process mouse events and you find your - context menu event handler is not being called, you could call wxEvent::Skip() - for mouse right-down events. + Notice that the exact sequence of mouse events is different across the + platforms. For example, under MSW the context menu event is generated after + @c EVT_RIGHT_UP event and only if it was not handled but under GTK the + context menu event is generated after @c EVT_RIGHT_DOWN event. This is + correct in the sense that it ensures that the context menu is shown + according to the current platform UI conventions and also means that you + must not handle (or call wxEvent::Skip() in your handler if you do have + one) neither right mouse down nor right mouse up event if you plan on + handling @c EVT_CONTEXT_MENU event. @beginEventTable{wxContextMenuEvent} @event{EVT_CONTEXT_MENU(func)} @@ -3325,7 +3498,7 @@ public: wxHelpEvent::Origin origin = Origin_Unknown); /** - Returns the origin of the help event which is one of the ::wxHelpEventOrigin + Returns the origin of the help event which is one of the wxHelpEvent::Origin values. The application may handle events generated using the keyboard or mouse @@ -3465,6 +3638,10 @@ public: void SetPosition(int pos); }; +#endif // wxUSE_GUI + +#if wxUSE_BASE + /** See wxIdleEvent::SetMode() for more info. */ @@ -3592,7 +3769,9 @@ public: static void SetMode(wxIdleMode mode); }; +#endif // wxUSE_BASE +#if wxUSE_GUI /** @class wxInitDialogEvent @@ -3735,7 +3914,8 @@ public: /** Sets the flags for this event. - The @a flags can be a combination of the ::wxNavigationKeyEventFlags values. + The @a flags can be a combination of the + wxNavigationKeyEvent::wxNavigationKeyEventFlags values. */ void SetFlags(long flags); @@ -4180,7 +4360,7 @@ public: @library{wxcore} @category{events} - @see ::wxSetCursor, wxWindow::wxSetCursor + @see ::wxSetCursor, wxWindow::SetCursor */ class wxSetCursorEvent : public wxEvent { @@ -4220,7 +4400,7 @@ public: void SetCursor(const wxCursor& cursor); }; - +#endif // wxUSE_GUI // ============================================================================ // Global functions/macros @@ -4229,6 +4409,8 @@ public: /** @addtogroup group_funcmacro_events */ //@{ +#if wxUSE_BASE + /** A value uniquely identifying the type of the event. @@ -4236,7 +4418,7 @@ public: See the macro DEFINE_EVENT_TYPE() for more info. - @see @ref overview_events_introduction + @see @ref overview_events */ typedef int wxEventType; @@ -4302,7 +4484,7 @@ wxEventType wxNewEventType(); This is mostly used by wxWidgets internally, e.g. @code - wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEvent) + wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_BUTTON, wxCommandEvent) @endcode */ #define wxDECLARE_EXPORTED_EVENT( expdecl, name, cls ) \ @@ -4440,26 +4622,28 @@ void wxPostEvent(wxEvtHandler* dest, const wxEvent& event); */ void wxQueueEvent(wxEvtHandler* dest, wxEvent *event); - - -wxEventType wxEVT_COMMAND_BUTTON_CLICKED; -wxEventType wxEVT_COMMAND_CHECKBOX_CLICKED; -wxEventType wxEVT_COMMAND_CHOICE_SELECTED; -wxEventType wxEVT_COMMAND_LISTBOX_SELECTED; -wxEventType wxEVT_COMMAND_LISTBOX_DOUBLECLICKED; -wxEventType wxEVT_COMMAND_CHECKLISTBOX_TOGGLED; -wxEventType wxEVT_COMMAND_MENU_SELECTED; -wxEventType wxEVT_COMMAND_SLIDER_UPDATED; -wxEventType wxEVT_COMMAND_RADIOBOX_SELECTED; -wxEventType wxEVT_COMMAND_RADIOBUTTON_SELECTED; -wxEventType wxEVT_COMMAND_SCROLLBAR_UPDATED; -wxEventType wxEVT_COMMAND_VLBOX_SELECTED; -wxEventType wxEVT_COMMAND_COMBOBOX_SELECTED; -wxEventType wxEVT_COMMAND_TOOL_RCLICKED; -wxEventType wxEVT_COMMAND_TOOL_DROPDOWN_CLICKED; -wxEventType wxEVT_COMMAND_TOOL_ENTER; -wxEventType wxEVT_COMMAND_COMBOBOX_DROPDOWN; -wxEventType wxEVT_COMMAND_COMBOBOX_CLOSEUP; +#endif // wxUSE_BASE + +#if wxUSE_GUI + +wxEventType wxEVT_BUTTON; +wxEventType wxEVT_CHECKBOX; +wxEventType wxEVT_CHOICE; +wxEventType wxEVT_LISTBOX; +wxEventType wxEVT_LISTBOX_DCLICK; +wxEventType wxEVT_CHECKLISTBOX; +wxEventType wxEVT_MENU; +wxEventType wxEVT_SLIDER; +wxEventType wxEVT_RADIOBOX; +wxEventType wxEVT_RADIOBUTTON; +wxEventType wxEVT_SCROLLBAR; +wxEventType wxEVT_VLBOX; +wxEventType wxEVT_COMBOBOX; +wxEventType wxEVT_TOOL_RCLICKED; +wxEventType wxEVT_TOOL_DROPDOWN; +wxEventType wxEVT_TOOL_ENTER; +wxEventType wxEVT_COMBOBOX_DROPDOWN; +wxEventType wxEVT_COMBOBOX_CLOSEUP; wxEventType wxEVT_THREAD; wxEventType wxEVT_LEFT_DOWN; wxEventType wxEVT_LEFT_UP; @@ -4548,9 +4732,9 @@ wxEventType wxEVT_MOVING; wxEventType wxEVT_MOVE_START; wxEventType wxEVT_MOVE_END; wxEventType wxEVT_HIBERNATE; -wxEventType wxEVT_COMMAND_TEXT_COPY; -wxEventType wxEVT_COMMAND_TEXT_CUT; -wxEventType wxEVT_COMMAND_TEXT_PASTE; +wxEventType wxEVT_TEXT_COPY; +wxEventType wxEVT_TEXT_CUT; +wxEventType wxEVT_TEXT_PASTE; wxEventType wxEVT_COMMAND_LEFT_CLICK; wxEventType wxEVT_COMMAND_LEFT_DCLICK; wxEventType wxEVT_COMMAND_RIGHT_CLICK; @@ -4560,12 +4744,10 @@ wxEventType wxEVT_COMMAND_KILL_FOCUS; wxEventType wxEVT_COMMAND_ENTER; wxEventType wxEVT_HELP; wxEventType wxEVT_DETAILED_HELP; -wxEventType wxEVT_COMMAND_TEXT_UPDATED; -wxEventType wxEVT_COMMAND_TEXT_ENTER; -wxEventType wxEVT_COMMAND_TOOL_CLICKED; +wxEventType wxEVT_TOOL; wxEventType wxEVT_WINDOW_MODAL_DIALOG_CLOSED; - +#endif // wxUSE_GUI //@}