Add wxActivateEvent::GetActivationReason().

This method is implemented for wxMSW-only currently and allows to check
whether the window is being activated by a mouse click or in some other way
there.

Closes #15516.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74915 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2013-10-02 16:25:04 +00:00
parent 30a7e91fb0
commit 4521f6c88c
4 changed files with 57 additions and 6 deletions

View File

@@ -581,6 +581,7 @@ All (GUI):
- Fix alignment and transparency of bitmaps in wxDataViewCtrl (Eric Jensen).
- Fix crash when auto-sizing a wxDataViewCtrl column (Spencer T. Parkin).
- Add wxHtmlTag::GetParamAsString() convenience method.
- Add wxActivateEvent::GetActivationReason() (Trigve).
wxGTK:

View File

@@ -2275,19 +2275,36 @@ private:
class WXDLLIMPEXP_CORE wxActivateEvent : public wxEvent
{
public:
wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = true, int Id = 0)
: wxEvent(Id, type)
{ m_active = active; }
// Type of activation. For now we can only detect if it was by mouse or by
// some other method and even this is only available under wxMSW.
enum Reason
{
Reason_Mouse,
Reason_Unknown
};
wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = true,
int Id = 0, Reason activationReason = Reason_Unknown)
: wxEvent(Id, type),
m_activationReason(activationReason)
{
m_active = active;
}
wxActivateEvent(const wxActivateEvent& event)
: wxEvent(event)
{ m_active = event.m_active; }
{
m_active = event.m_active;
m_activationReason = event.m_activationReason;
}
bool GetActive() const { return m_active; }
Reason GetActivationReason() const { return m_activationReason;}
virtual wxEvent *Clone() const { return new wxActivateEvent(*this); }
private:
bool m_active;
Reason m_activationReason;
private:
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxActivateEvent)

View File

@@ -2976,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;
};

View File

@@ -4049,7 +4049,10 @@ bool wxWindowMSW::HandleActivate(int state,
{
wxActivateEvent event(wxEVT_ACTIVATE,
(state == WA_ACTIVE) || (state == WA_CLICKACTIVE),
m_windowId);
m_windowId,
state == WA_CLICKACTIVE
? wxActivateEvent::Reason_Mouse
: wxActivateEvent::Reason_Unknown);
event.SetEventObject(this);
return HandleWindowEvent(event);