int GetId() const { return m_id; }
void SetId(int Id) { m_id = Id; }
+ // Returns the user data optionally associated with the event handler when
+ // using Connect() or Bind().
+ wxObject *GetEventUserData() const { return m_callbackUserData; }
+
// Can instruct event processor that we wish to ignore this event
// (treat as if the event table entry had not been found): this must be done
// to allow the event processing by the base classes (calling event.Skip()
{
// make sure our string member (which uses COW, aka refcounting) is not
// shared by other wxString instances:
- SetString(GetString().c_str());
+ SetString(GetString().Clone());
}
virtual wxEvent *Clone() const
wxEventBasicPayloadMixin(event),
m_clientData(event.m_clientData),
m_clientObject(event.m_clientObject)
- { }
+ {
+ // Because GetString() can retrieve the string text only on demand, we
+ // need to copy it explicitly.
+ if ( m_cmdString.empty() )
+ m_cmdString = event.GetString();
+ }
// Set/Get client data from controls
void SetClientData(void* clientData) { m_clientData = clientData; }
{ return wxPoint(m_x, m_y); }
// Get X position
- wxCoord GetX() const { return m_x; }
+ wxCoord GetX() const;
// Get Y position
- wxCoord GetY() const { return m_y; }
+ wxCoord GetY() const;
// Can be called from wxEVT_CHAR_HOOK handler to allow generation of normal
// key events even though the event had been handled (by default they would
{
m_x = evt.m_x;
m_y = evt.m_y;
+ m_hasPosition = evt.m_hasPosition;
m_keyCode = evt.m_keyCode;
#endif
}
+ // Initialize m_x and m_y using the current mouse cursor position if
+ // necessary.
+ void InitPositionIfNecessary() const;
+
// If this flag is true, the normal key events should still be generated
// even if wxEVT_CHAR_HOOK had been handled. By default it is false as
// handling wxEVT_CHAR_HOOK suppresses all the subsequent events.
bool m_allowNext;
+ // If true, m_x and m_y were already initialized. If false, try to get them
+ // when they're requested.
+ bool m_hasPosition;
+
DECLARE_DYNAMIC_CLASS(wxKeyEvent)
};
protected:
// Init the hash table with the entries of the static event table.
void InitHashTable();
- // Helper funtion of InitHashTable() to insert 1 entry into the hash table.
+ // Helper function of InitHashTable() to insert 1 entry into the hash table.
void AddEntry(const wxEventTableEntry &entry);
// Allocate and init with null pointers the base hash table.
void AllocEventTypeTable(size_t size);