Virtualize wxUIActionSimulator implementation
Extract platform-specific code in a wxUIActionSimulatorImpl-derived class instead of keeping it in wxUIActionSimulator itself. This will allow determining which implementation to use dynamically (i.e. at run-time and not compile-time) to use later and already allows to get rid of an __WXOSX__ #ifdef in common code.
This commit is contained in:
44
include/wx/private/uiaction.h
Normal file
44
include/wx/private/uiaction.h
Normal file
@@ -0,0 +1,44 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/private/uiaction.h
|
||||
// Purpose: wxUIActionSimulatorImpl declaration
|
||||
// Author: Vadim Zeitlin
|
||||
// Created: 2016-05-21
|
||||
// Copyright: (c) 2016 Vadim Zeitlin <vadim@wxwidgets.org>
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PRIVATE_UIACTION_H_
|
||||
#define _WX_PRIVATE_UIACTION_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Platform-specific implementation of wxUIActionSimulator
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxUIActionSimulatorImpl
|
||||
{
|
||||
public:
|
||||
wxUIActionSimulatorImpl() { }
|
||||
virtual ~wxUIActionSimulatorImpl() { }
|
||||
|
||||
// Low level mouse methods which must be implemented in the derived class.
|
||||
virtual bool MouseMove(long x, long y) = 0;
|
||||
virtual bool MouseDown(int button = wxMOUSE_BTN_LEFT) = 0;
|
||||
virtual bool MouseUp(int button = wxMOUSE_BTN_LEFT) = 0;
|
||||
|
||||
// Higher level mouse methods which have default implementation in the base
|
||||
// class but can be overridden if necessary.
|
||||
virtual bool MouseClick(int button = wxMOUSE_BTN_LEFT);
|
||||
virtual bool MouseDblClick(int button = wxMOUSE_BTN_LEFT);
|
||||
virtual bool MouseDragDrop(long x1, long y1, long x2, long y2,
|
||||
int button = wxMOUSE_BTN_LEFT);
|
||||
|
||||
// The low-level port-specific function which really generates the key
|
||||
// presses. It should generate exactly one key event with the given
|
||||
// parameters.
|
||||
virtual bool DoKey(int keycode, int modifiers, bool isDown) = 0;
|
||||
|
||||
private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxUIActionSimulatorImpl);
|
||||
};
|
||||
|
||||
#endif // _WX_PRIVATE_UIACTION_H_
|
@@ -2,11 +2,10 @@
|
||||
// Name: wx/uiaction.h
|
||||
// Purpose: wxUIActionSimulator interface
|
||||
// Author: Kevin Ollivier, Steven Lamerton, Vadim Zeitlin
|
||||
// Modified by:
|
||||
// Created: 2010-03-06
|
||||
// Copyright: (c) Kevin Ollivier
|
||||
// Copyright: (c) 2010 Kevin Ollivier
|
||||
// (c) 2010 Steven Lamerton
|
||||
// (c) 2010 Vadim Zeitlin
|
||||
// (c) 2010-2016 Vadim Zeitlin
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -22,11 +21,8 @@
|
||||
class WXDLLIMPEXP_CORE wxUIActionSimulator
|
||||
{
|
||||
public:
|
||||
wxUIActionSimulator() { }
|
||||
|
||||
|
||||
// Default dtor, copy ctor and assignment operator are ok (even though the
|
||||
// last two don't make much sense for this class).
|
||||
wxUIActionSimulator();
|
||||
~wxUIActionSimulator();
|
||||
|
||||
|
||||
// Mouse simulation
|
||||
@@ -82,10 +78,12 @@ private:
|
||||
void SimulateModifiers(int modifier, bool isDown);
|
||||
|
||||
|
||||
// The low-level port-specific function which really generates the key
|
||||
// presses. It should generate exactly one key event with the given
|
||||
// parameters.
|
||||
bool DoKey(int keycode, int modifiers, bool isDown);
|
||||
|
||||
// This pointer is allocated in the ctor and points to the
|
||||
// platform-specific implementation.
|
||||
class wxUIActionSimulatorImpl* const m_impl;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxUIActionSimulator);
|
||||
};
|
||||
|
||||
#endif // wxUSE_UIACTIONSIMULATOR
|
||||
|
Reference in New Issue
Block a user