]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/event.h
AIX patches from Hans-Joachim Baader <hans-joachim.baader@cjt.de>
[wxWidgets.git] / include / wx / event.h
index 009336ade783bffb3acfa7d205c3477dded211c6..2ac0ea2fe04b646ae4533be5759cd07029b52a14 100644 (file)
@@ -283,6 +283,10 @@ public:
     void Skip(bool skip = TRUE) { m_skipped = skip; }
     bool GetSkipped() const { return m_skipped; };
 
     void Skip(bool skip = TRUE) { m_skipped = skip; }
     bool GetSkipped() const { return m_skipped; };
 
+    // implementation only: this test is explicitlty anti OO and this functions
+    // exists only for optimization purposes
+    bool IsCommandEvent() const { return m_isCommandEvent; }
+
 public:
     bool              m_skipped;
     wxObject*         m_eventObject;
 public:
     bool              m_skipped;
     wxObject*         m_eventObject;
@@ -291,6 +295,10 @@ public:
     long              m_timeStamp;
     int               m_id;
     wxObject*         m_callbackUserData;
     long              m_timeStamp;
     int               m_id;
     wxObject*         m_callbackUserData;
+
+    // optimization: instead of using costly IsKindOf() we keep a flag telling
+    // whether we're a command event (by far the most common case)
+    bool              m_isCommandEvent;
 };
 
 // Item or menu event class
 };
 
 // Item or menu event class
@@ -338,8 +346,8 @@ public:
     int GetSelection() const { return m_commandInt; }
 
     // Set/Get listbox/choice selection string
     int GetSelection() const { return m_commandInt; }
 
     // Set/Get listbox/choice selection string
-    void SetString(char* s) { m_commandString = s; }
-    char *GetString() const { return m_commandString; }
+    void SetString(const wxString& s) { m_commandString = s; }
+    const wxString& GetString() const { return m_commandString; }
 
     // Get checkbox value
     bool Checked() const { return (m_commandInt != 0); }
 
     // Get checkbox value
     bool Checked() const { return (m_commandInt != 0); }
@@ -354,7 +362,7 @@ public:
     long GetInt() const { return m_commandInt ; }
 
 public:
     long GetInt() const { return m_commandInt ; }
 
 public:
-    char*             m_commandString; // String event argument
+    wxString          m_commandString; // String event argument
     int               m_commandInt;
     long              m_extraLong;     // Additional information (e.g. select/deselect)
     void*             m_clientData;    // Arbitrary client data
     int               m_commandInt;
     long              m_extraLong;     // Additional information (e.g. select/deselect)
     void*             m_clientData;    // Arbitrary client data
@@ -509,6 +517,7 @@ public:
     bool Leaving() const { return (m_eventType == wxEVT_LEAVE_WINDOW); }
 
     // Find the position of the event
     bool Leaving() const { return (m_eventType == wxEVT_LEAVE_WINDOW); }
 
     // Find the position of the event
+    void GetPosition(long *xpos, long *ypos) const { *xpos = m_x; *ypos = m_y; }
     void Position(long *xpos, long *ypos) const { *xpos = m_x; *ypos = m_y; }
 
     // Find the position of the event
     void Position(long *xpos, long *ypos) const { *xpos = m_x; *ypos = m_y; }
 
     // Find the position of the event
@@ -567,18 +576,18 @@ public:
     bool ShiftDown() const { return m_shiftDown; }
     long KeyCode() const { return m_keyCode; }
 
     bool ShiftDown() const { return m_shiftDown; }
     long KeyCode() const { return m_keyCode; }
 
-#if WXWIN_COMPATIBILITY
     // Find the position of the event
     // Find the position of the event
-    void Position(float *xpos, float *ypos) const
-        { *xpos = (float)m_x; *ypos = (float)m_y; }
+    void GetPosition(long *xpos, long *ypos) const
+        { *xpos = m_x; *ypos = m_y; }
+
+    wxPoint GetPosition() const
+        { return wxPoint(m_x, m_y); }
 
     // Get X position
 
     // Get X position
-    float GetX() const { return (float)m_x; }
+    long GetX() const { return m_x; }
 
     // Get Y position
 
     // Get Y position
-    float GetY() const { return (float)m_y; }
-
-#endif // WXWIN_COMPATIBILITY
+    long GetY() const { return m_y; }
 
 public:
     long          m_x;
 
 public:
     long          m_x;
@@ -771,6 +780,7 @@ public:
         m_veto = veto;
     }
     void SetCanVeto(bool canVeto) { m_canVeto = canVeto; }
         m_veto = veto;
     }
     void SetCanVeto(bool canVeto) { m_canVeto = canVeto; }
+    // No more asserts here please, the one you put here was wrong.
     bool CanVeto() const { return m_canVeto; }
     bool GetVeto() const { return m_canVeto && m_veto; }
 
     bool CanVeto() const { return m_canVeto; }
     bool GetVeto() const { return m_canVeto && m_veto; }
 
@@ -1156,7 +1166,9 @@ public:
     virtual long Default()
         { return GetNextHandler() ? GetNextHandler()->Default() : 0; };
 
     virtual long Default()
         { return GetNextHandler() ? GetNextHandler()->Default() : 0; };
 
+#if WXWIN_COMPATIBILITY
     virtual bool OnClose();
     virtual bool OnClose();
+#endif
 
     virtual bool ProcessEvent(wxEvent& event);
     virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
 
     virtual bool ProcessEvent(wxEvent& event);
     virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
@@ -1179,13 +1191,19 @@ private:
     static const wxEventTableEntry         sm_eventTableEntries[];
 
 protected:
     static const wxEventTableEntry         sm_eventTableEntries[];
 
 protected:
-    static const wxEventTable        sm_eventTable;
-    virtual const wxEventTable*        GetEventTable() const;
+    static const wxEventTable sm_eventTable;
+
+    virtual const wxEventTable *GetEventTable() const;
+
 protected:
     wxEvtHandler*     m_nextHandler;
     wxEvtHandler*     m_previousHandler;
 protected:
     wxEvtHandler*     m_nextHandler;
     wxEvtHandler*     m_previousHandler;
-    bool              m_enabled;                      // Is event handler enabled?
+    bool              m_enabled;           // Is event handler enabled?
     wxList*           m_dynamicEvents;
     wxList*           m_dynamicEvents;
+
+    // optimization: instead of using costly IsKindOf() to decide whether we're
+    // a window (which is true in 99% of cases), use this flag
+    bool              m_isWindow;
 };
 
 typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
 };
 
 typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
@@ -1302,7 +1320,7 @@ const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
 
 // EVT_COMMAND
 #define EVT_COMMAND(id, event, fn)  { event, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
 
 // EVT_COMMAND
 #define EVT_COMMAND(id, event, fn)  { event, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
-#define EVT_COMMAND_RANGE(id1, id2, event, fn)  { eventId, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
+#define EVT_COMMAND_RANGE(id1, id2, event, fn)  { event, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
 
 // Scrolling
 #define EVT_SCROLL(func) \
 
 // Scrolling
 #define EVT_SCROLL(func) \