]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/event.h
A bit more DnD and clipbrd updates
[wxWidgets.git] / include / wx / event.h
index 9c600e6b83938abcec5c712a256611c5e974b650..576e2711568961a86c282d7ee8f046da7702e0f3 100644 (file)
@@ -179,6 +179,8 @@ const wxEventType wxEVT_COMMAND_LIST_ITEM_DESELECTED =      wxEVT_FIRST + 709;
 const wxEventType wxEVT_COMMAND_LIST_KEY_DOWN =             wxEVT_FIRST + 710;
 const wxEventType wxEVT_COMMAND_LIST_INSERT_ITEM =          wxEVT_FIRST + 711;
 const wxEventType wxEVT_COMMAND_LIST_COL_CLICK =            wxEVT_FIRST + 712;
+const wxEventType wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK =     wxEVT_FIRST + 713;
+const wxEventType wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK =    wxEVT_FIRST + 714;
 
  /* Tab and notebook control event types */
 const wxEventType wxEVT_COMMAND_TAB_SEL_CHANGED =           wxEVT_FIRST + 800;
@@ -296,6 +298,8 @@ public:
  wxEVT_COMMAND_COMBOBOX_SELECTED
 */
 
+class WXDLLEXPORT wxClientData;
+
 class WXDLLEXPORT wxCommandEvent: public wxEvent
 {
   DECLARE_DYNAMIC_CLASS(wxCommandEvent)
@@ -308,10 +312,14 @@ class WXDLLEXPORT wxCommandEvent: public wxEvent
    *
    */
 
-  // Set/Get listbox/choice client data
+  // Set/Get client data from controls
   inline void SetClientData(void* clientData) { m_clientData = clientData; }
   inline void *GetClientData() const { return m_clientData; }
 
+  // Set/Get client object from controls
+  inline void SetClientObject(wxClientData* clientObject) { m_clientObject = clientObject; }
+  inline void *GetClientObject() const { return m_clientObject; }
+
   // Get listbox selection if single-choice
   inline int GetSelection() const { return m_commandInt; }
 
@@ -334,8 +342,29 @@ class WXDLLEXPORT wxCommandEvent: public wxEvent
  public:
   char*             m_commandString; // String event argument
   int               m_commandInt;
-  long              m_extraLong;      // Additional information (e.g. select/deselect)
+  long              m_extraLong;     // Additional information (e.g. select/deselect)
   void*             m_clientData;    // Arbitrary client data
+  wxClientData*     m_clientObject;  // Arbitrary client object
+};
+
+// this class adds a possibility to react (from the user) code to a control
+// notification: allow or veto the operation being reported.
+class WXDLLEXPORT wxNotifyEvent : public wxCommandEvent
+{
+public:
+    wxNotifyEvent(wxEventType commandType = wxEVT_NULL, int id = 0)
+                : wxCommandEvent(commandType, id) { m_bAllow = TRUE; }
+
+    // veto the operation (by default it's allowed)
+    void Veto() { m_bAllow = FALSE; }
+
+    // for implementation code only: is the operation allowed?
+    bool IsAllowed() const { return m_bAllow; }
+
+private:
+    bool m_bAllow;
+
+    DECLARE_DYNAMIC_CLASS(wxNotifyEvent)
 };
 
 // Scroll event class
@@ -449,7 +478,7 @@ class WXDLLEXPORT wxMouseEvent: public wxEvent
   inline bool RightIsDown(void) const { return m_rightDown; }
 
   // True if a button is down and the mouse is moving
-  inline bool Dragging(void) const { return ((m_eventType == wxEVENT_TYPE_MOTION) && (LeftIsDown() || MiddleIsDown() || RightIsDown())); }
+  inline bool Dragging(void) const { return ((m_eventType == wxEVT_MOTION) && (LeftIsDown() || MiddleIsDown() || RightIsDown())); }
 
   // True if the mouse is moving, and no button is down
   inline bool Moving(void) const { return (m_eventType == wxEVT_MOTION); }
@@ -979,7 +1008,7 @@ public:
   // the child which has the focus currently (may be NULL - use 
   // wxWindow::FindFocus then)
   wxWindow* GetCurrentFocus() const { return (wxWindow *)m_clientData; }
-  void SetCurrentFocus(wxWindow *win) { m_clientData = (char *)win; }
+  void SetCurrentFocus(wxWindow *win) { m_clientData = (void *)win; }
 };
 
 /* TODO
@@ -1042,9 +1071,6 @@ class WXDLLEXPORT wxEvtHandler: public wxObject
 
   virtual bool OnClose(void);
 
-  inline char *GetClientData(void) const { return m_clientData; }
-  inline void SetClientData(char *clientData) { m_clientData = clientData; }
-  
   virtual bool ProcessEvent(wxEvent& event);
   virtual bool SearchEventTable(wxEventTable& table, wxEvent& event);
   
@@ -1063,7 +1089,6 @@ protected:
 protected:
     wxEvtHandler*     m_nextHandler;
     wxEvtHandler*     m_previousHandler;
-    char*             m_clientData;                   // Any user client data
     bool              m_enabled;                      // Is event handler enabled?
     wxList*           m_dynamicEvents;
 
@@ -1112,7 +1137,7 @@ const wxEventTable theClass::sm_eventTable =\
 const wxEventTableEntry theClass::sm_eventTableEntries[] = { \
 
 #define END_EVENT_TABLE() \
- { 0, 0, 0, 0 } };
+ { 0, 0, 0, 0, 0 } };
  
 /*
  * Event table macros