make wxKeyEvent and wxMouseEvent derive from the same wxKeyboardState object (indirectly via wxMouseState in the case of the latter) to make Get/HasModifiers() available in wxMouseEvent as well while avoiding code duplication
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55745 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
91
include/wx/kbdstate.h
Normal file
91
include/wx/kbdstate.h
Normal file
@@ -0,0 +1,91 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/kbdstate.h
|
||||
// Purpose: Declaration of wxKeyboardState class
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2008-09-19
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_KBDSTATE_H_
|
||||
#define _WX_KBDSTATE_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxKeyboardState stores the state of the keyboard modifier keys
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxKeyboardState
|
||||
{
|
||||
public:
|
||||
wxKeyboardState()
|
||||
: m_controlDown(false),
|
||||
m_shiftDown(false),
|
||||
m_altDown(false),
|
||||
m_metaDown(false)
|
||||
{
|
||||
}
|
||||
|
||||
// default copy ctor, assignment operator and dtor are ok
|
||||
|
||||
|
||||
// accessors for the various modifier keys
|
||||
// ---------------------------------------
|
||||
|
||||
// should be used check if the key event has exactly the given modifiers:
|
||||
// "GetModifiers() = wxMOD_CONTROL" is easier to write than "ControlDown()
|
||||
// && !MetaDown() && !AltDown() && !ShiftDown()"
|
||||
int GetModifiers() const
|
||||
{
|
||||
return (m_controlDown ? wxMOD_CONTROL : 0) |
|
||||
(m_shiftDown ? wxMOD_SHIFT : 0) |
|
||||
(m_metaDown ? wxMOD_META : 0) |
|
||||
(m_altDown ? wxMOD_ALT : 0);
|
||||
}
|
||||
|
||||
// returns true if any modifiers at all are pressed
|
||||
bool HasModifiers() const { return GetModifiers() != wxMOD_NONE; }
|
||||
|
||||
// accessors for individual modifier keys
|
||||
bool ControlDown() const { return m_controlDown; }
|
||||
bool ShiftDown() const { return m_shiftDown; }
|
||||
bool MetaDown() const { return m_metaDown; }
|
||||
bool AltDown() const { return m_altDown; }
|
||||
|
||||
// "Cmd" is a pseudo key which is Control for PC and Unix platforms but
|
||||
// Apple ("Command") key under Macs: it makes often sense to use it instead
|
||||
// of, say, ControlDown() because Cmd key is used for the same thing under
|
||||
// Mac as Ctrl elsewhere (but Ctrl still exists, just not used for this
|
||||
// purpose under Mac)
|
||||
bool CmdDown() const
|
||||
{
|
||||
#if defined(__WXMAC__) || defined(__WXCOCOA__)
|
||||
return MetaDown();
|
||||
#else
|
||||
return ControlDown();
|
||||
#endif
|
||||
}
|
||||
|
||||
// these functions are mostly used by wxWidgets itself
|
||||
// ---------------------------------------------------
|
||||
|
||||
void SetControlDown(bool down) { m_controlDown = down; }
|
||||
void SetShiftDown(bool down) { m_shiftDown = down; }
|
||||
void SetAltDown(bool down) { m_altDown = down; }
|
||||
void SetMetaDown(bool down) { m_metaDown = down; }
|
||||
|
||||
|
||||
// for backwards compatibility with the existing code accessing these
|
||||
// members of wxKeyEvent directly, these variables are public, however you
|
||||
// should not use them in any new code, please use the accessors instead
|
||||
public:
|
||||
bool m_controlDown : 1;
|
||||
bool m_shiftDown : 1;
|
||||
bool m_altDown : 1;
|
||||
bool m_metaDown : 1;
|
||||
};
|
||||
|
||||
#endif // _WX_KBDSTATE_H_
|
||||
|
Reference in New Issue
Block a user