]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/event.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / event.h
index 0f80baa58066046f8d7a5844268389c97d2341ab..f5d1b1e687fe1b472dfb297d12249d59ef32096d 100644 (file)
@@ -7,6 +7,8 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+#if wxUSE_BASE
+
 /**
     The predefined constants for the number of times we propagate event
     upwards window child-parent chain.
@@ -222,7 +224,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;
@@ -271,6 +273,10 @@ protected:
     int m_propagationLevel;
 };
 
+#endif // wxUSE_BASE
+
+#if wxUSE_GUI
+
 /**
     @class wxEventBlocker
 
@@ -352,7 +358,9 @@ public:
     ~wxPropagateOnce();
 };
 
+#endif // wxUSE_GUI
 
+#if wxUSE_BASE
 
 /**
     @class wxEvtHandler
@@ -519,7 +527,8 @@ public:
 
          Note that currently only up to 2 arguments can be passed.
 
-         @note This method is not available with Visual C++ 6 which doesn't
+         @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
@@ -1258,6 +1267,9 @@ protected:
     virtual bool TryAfter(wxEvent& event);
 };
 
+#endif // wxUSE_BASE
+
+#if wxUSE_GUI
 
 /**
     Flags for categories of keys.
@@ -1500,7 +1512,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:
@@ -1531,11 +1543,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;
     //@}
 
     /**
@@ -1868,6 +1884,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_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 wxWindowCreateEvent
 
@@ -2516,7 +2730,7 @@ public:
     int GetLinesPerAction() const;
 
     /**
-        Returns the logical mouse position in pixels (i.e. translated according to the
+        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).
     */
@@ -2686,204 +2900,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
 
@@ -3544,6 +3560,10 @@ public:
     void SetPosition(int pos);    
 };
 
+#endif // wxUSE_GUI
+
+#if wxUSE_BASE
+
 /**
     See wxIdleEvent::SetMode() for more info.
 */
@@ -3671,7 +3691,9 @@ public:
     static void SetMode(wxIdleMode mode);
 };
 
+#endif // wxUSE_BASE
 
+#if wxUSE_GUI
 
 /**
     @class wxInitDialogEvent
@@ -4259,7 +4281,7 @@ public:
     @library{wxcore}
     @category{events}
 
-    @see ::wxSetCursor, wxWindow::wxSetCursor
+    @see ::wxSetCursor, wxWindow::SetCursor
 */
 class wxSetCursorEvent : public wxEvent
 {
@@ -4299,7 +4321,7 @@ public:
     void SetCursor(const wxCursor& cursor);
 };
 
-
+#endif // wxUSE_GUI
 
 // ============================================================================
 // Global functions/macros
@@ -4308,6 +4330,8 @@ public:
 /** @addtogroup group_funcmacro_events */
 //@{
 
+#if wxUSE_BASE
+
 /**
     A value uniquely identifying the type of the event.
 
@@ -4519,7 +4543,9 @@ void wxPostEvent(wxEvtHandler* dest, const wxEvent& event);
  */
 void wxQueueEvent(wxEvtHandler* dest, wxEvent *event);
 
+#endif // wxUSE_BASE
 
+#if wxUSE_GUI
 
 wxEventType wxEVT_COMMAND_BUTTON_CLICKED;
 wxEventType wxEVT_COMMAND_CHECKBOX_CLICKED;
@@ -4644,7 +4670,7 @@ wxEventType wxEVT_COMMAND_TEXT_ENTER;
 wxEventType wxEVT_COMMAND_TOOL_CLICKED;
 wxEventType wxEVT_WINDOW_MODAL_DIALOG_CLOSED;
 
-
+#endif // wxUSE_GUI
 
 //@}