Add wxUSE_UIACTIONSIMULATOR and turn it off by default.
Disable the recently added wxUIActionSimulator class until the issues with it mentioned at http://article.gmane.org/gmane.comp.lib.wxwidgets.devel/119792/ are fixed. Also use "" around wx headers instead of <> in wx code itself. See #11801. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63736 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
53
configure
vendored
53
configure
vendored
@@ -1883,6 +1883,7 @@ Optional Features:
|
||||
--enable-metafiles use wxMetaFile (Win32 only)
|
||||
--enable-dragimage use wxDragImage
|
||||
--enable-accessibility enable accessibility support
|
||||
--enable-uiactionsim use wxUIActionSimulator (experimental)
|
||||
--enable-palette use wxPalette class
|
||||
--enable-image use wxImage class
|
||||
--enable-gif use gif images (GIF file format)
|
||||
@@ -2969,6 +2970,7 @@ DEFAULT_wxUSE_LIBSDL=no
|
||||
DEFAULT_wxUSE_ACCESSIBILITY=no
|
||||
DEFAULT_wxUSE_IPV6=no
|
||||
DEFAULT_wxUSE_GSTREAMER8=no
|
||||
DEFAULT_wxUSE_UIACTIONSIMULATOR=no
|
||||
|
||||
DEFAULT_wxUSE_UNICODE_UTF8=auto
|
||||
DEFAULT_wxUSE_OPENGL=auto
|
||||
@@ -13557,6 +13559,50 @@ fi
|
||||
echo "${ECHO_T}$result" >&6; }
|
||||
|
||||
|
||||
enablestring=
|
||||
defaultval=$wxUSE_ALL_FEATURES
|
||||
if test -z "$defaultval"; then
|
||||
if test x"$enablestring" = xdisable; then
|
||||
defaultval=yes
|
||||
else
|
||||
defaultval=no
|
||||
fi
|
||||
fi
|
||||
|
||||
{ echo "$as_me:$LINENO: checking for --${enablestring:-enable}-uiactionsim" >&5
|
||||
echo $ECHO_N "checking for --${enablestring:-enable}-uiactionsim... $ECHO_C" >&6; }
|
||||
# Check whether --enable-uiactionsim was given.
|
||||
if test "${enable_uiactionsim+set}" = set; then
|
||||
enableval=$enable_uiactionsim;
|
||||
if test "$enableval" = yes; then
|
||||
wx_cv_use_uiactionsim='wxUSE_UIACTIONSIMULATOR=yes'
|
||||
else
|
||||
wx_cv_use_uiactionsim='wxUSE_UIACTIONSIMULATOR=no'
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
wx_cv_use_uiactionsim='wxUSE_UIACTIONSIMULATOR=${'DEFAULT_wxUSE_UIACTIONSIMULATOR":-$defaultval}"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
eval "$wx_cv_use_uiactionsim"
|
||||
|
||||
if test x"$enablestring" = xdisable; then
|
||||
if test $wxUSE_UIACTIONSIMULATOR = no; then
|
||||
result=yes
|
||||
else
|
||||
result=no
|
||||
fi
|
||||
else
|
||||
result=$wxUSE_UIACTIONSIMULATOR
|
||||
fi
|
||||
|
||||
{ echo "$as_me:$LINENO: result: $result" >&5
|
||||
echo "${ECHO_T}$result" >&6; }
|
||||
|
||||
|
||||
|
||||
|
||||
enablestring=
|
||||
@@ -46306,6 +46352,13 @@ _ACEOF
|
||||
|
||||
fi
|
||||
|
||||
if test "$wxUSE_UIACTIONSIMULATOR" = "yes" ; then
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define wxUSE_UIACTIONSIMULATOR 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
USES_CONTROLS=0
|
||||
if test "$wxUSE_CONTROLS" = "yes"; then
|
||||
|
@@ -387,6 +387,7 @@ dnl features disabled by default
|
||||
DEFAULT_wxUSE_ACCESSIBILITY=no
|
||||
DEFAULT_wxUSE_IPV6=no
|
||||
DEFAULT_wxUSE_GSTREAMER8=no
|
||||
DEFAULT_wxUSE_UIACTIONSIMULATOR=no
|
||||
|
||||
dnl automatic features
|
||||
DEFAULT_wxUSE_UNICODE_UTF8=auto
|
||||
@@ -1013,6 +1014,7 @@ WX_ARG_FEATURE(joystick, [ --enable-joystick use wxJoystick], wxUSE_JO
|
||||
WX_ARG_FEATURE(metafile, [ --enable-metafiles use wxMetaFile (Win32 only)], wxUSE_METAFILE)
|
||||
WX_ARG_FEATURE(dragimage, [ --enable-dragimage use wxDragImage], wxUSE_DRAGIMAGE)
|
||||
WX_ARG_FEATURE(accessibility,[ --enable-accessibility enable accessibility support], wxUSE_ACCESSIBILITY)
|
||||
WX_ARG_FEATURE(uiactionsim, [ --enable-uiactionsim use wxUIActionSimulator (experimental)], wxUSE_UIACTIONSIMULATOR)
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl support for image formats that do not rely on external library
|
||||
@@ -6719,6 +6721,10 @@ if test "$wxUSE_MOUSEWHEEL" = "yes" ; then
|
||||
AC_DEFINE(wxUSE_MOUSEWHEEL)
|
||||
fi
|
||||
|
||||
if test "$wxUSE_UIACTIONSIMULATOR" = "yes" ; then
|
||||
AC_DEFINE(wxUSE_UIACTIONSIMULATOR)
|
||||
fi
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl GUI controls
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
@@ -1065,6 +1065,14 @@
|
||||
# endif
|
||||
#endif /* !defined(wxUSE_TREECTRL) */
|
||||
|
||||
#ifndef wxUSE_UIACTIONSIMULATOR
|
||||
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||
# error "wxUSE_UIACTIONSIMULATOR must be defined, please read comment near the top of this file."
|
||||
# else
|
||||
# define wxUSE_UIACTIONSIMULATOR 0
|
||||
# endif
|
||||
#endif /* !defined(wxUSE_UIACTIONSIMULATOR) */
|
||||
|
||||
#ifndef wxUSE_VALIDATORS
|
||||
# ifdef wxABORT_ON_CONFIG_ERROR
|
||||
# error "wxUSE_VALIDATORS must be defined, please read comment near the top of this file."
|
||||
|
@@ -1214,6 +1214,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -1214,6 +1214,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -1214,6 +1214,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -1214,6 +1214,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -1215,6 +1215,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -1214,6 +1214,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -1210,6 +1210,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -9,19 +9,22 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _UIACTIONSIMULATOR_H_
|
||||
#define _UIACTIONSIMULATOR_H_
|
||||
#ifndef _WX_UIACTIONSIMULATOR_H_
|
||||
#define _WX_UIACTIONSIMULATOR_H_
|
||||
|
||||
#include <wx/defs.h>
|
||||
#include <wx/event.h>
|
||||
#include <wx/dynarray.h>
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
#include "wx/event.h"
|
||||
#include "wx/dynarray.h"
|
||||
|
||||
class WXDLLIMPEXP_CORE wxUIActionSimulator
|
||||
{
|
||||
public:
|
||||
wxUIActionSimulator();
|
||||
~wxUIActionSimulator();
|
||||
|
||||
|
||||
// Mouse related
|
||||
bool MouseMove(long x, long y);
|
||||
bool MouseDown(int button = wxMOUSE_BTN_LEFT);
|
||||
@@ -29,23 +32,25 @@ public:
|
||||
bool MouseClick(int button = wxMOUSE_BTN_LEFT);
|
||||
bool MouseDblClick(int button = wxMOUSE_BTN_LEFT);
|
||||
bool MouseDragDrop(long x1, long y1, long x2, long y2, int button = wxMOUSE_BTN_LEFT);
|
||||
|
||||
|
||||
// Keyboard related:
|
||||
|
||||
bool KeyDown(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false)
|
||||
{ return Key(keycode, true, shiftDown, cmdDown, altDown); }
|
||||
|
||||
|
||||
bool KeyUp(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false)
|
||||
{ return Key(keycode, false, shiftDown, cmdDown, altDown); }
|
||||
|
||||
|
||||
bool Char(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
|
||||
|
||||
protected:
|
||||
// Implementation-wise, since key events take more code to set up on GTK and Mac, it makes
|
||||
// sense to handle both key down and key up in one method. However, I wanted the API for pressing
|
||||
// and releasing the mouse and keyboard to be consistent, and I don't really like using a bool
|
||||
// for pressed state, so I'm leaving this as an implementation detail.
|
||||
// and releasing the mouse and keyboard to be consistent, and I don't really like using a bool
|
||||
// for pressed state, so I'm leaving this as an implementation detail.
|
||||
bool Key(int keycode, bool isDown=true, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif // wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
#endif // _WX_UIACTIONSIMULATOR_H_
|
||||
|
@@ -1213,6 +1213,11 @@
|
||||
#define wxUSE_MOUSEWHEEL 1
|
||||
// Include mouse wheel support
|
||||
|
||||
// Compile wxUIActionSimulator class?
|
||||
//
|
||||
// This is experimental code subject to change. It's not fully implemented yet.
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxDC classes for various output formats
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -10,18 +10,22 @@
|
||||
@class wxUIActionSimulator
|
||||
|
||||
wxUIActionSimulator is a class used to simulate user interface actions
|
||||
such as a mouse click or a key press.
|
||||
|
||||
such as a mouse click or a key press.
|
||||
|
||||
@note that this class is currently experimental and disabled by default,
|
||||
you must set @c wxUSE_UIACTIONSIMULATOR to 1 in your setup.h file or use
|
||||
configure @c --enable-uiactionsim option to enable it.
|
||||
|
||||
Common usages for this class would be to provide playback and record (aka macro recording)
|
||||
functionality for users, or to drive unit tests by simulating user sessions.
|
||||
|
||||
|
||||
See the uiaction sample for example usage of this class.
|
||||
|
||||
|
||||
NOTE: For keyboard operations, currently you must pass the keycode of the actual
|
||||
key on the keyboard. To simulate, e.g. IME actions, you'd need to simulate the actual
|
||||
keypresses needed to active the IME, then the keypresses needed to type and select
|
||||
the desired character.
|
||||
|
||||
|
||||
@library{wxcore}
|
||||
*/
|
||||
|
||||
@@ -33,43 +37,43 @@ class wxUIActionSimulator
|
||||
*/
|
||||
wxUIActionSimulator();
|
||||
~wxUIActionSimulator();
|
||||
|
||||
|
||||
/**
|
||||
Move the mouse to the specified coordinates.
|
||||
|
||||
|
||||
@param x
|
||||
x coordinate to move to, in screen coordinates.
|
||||
|
||||
|
||||
@param y
|
||||
y coordinate to move to, in screen coordinates.
|
||||
*/
|
||||
bool MouseMove(long x, long y);
|
||||
|
||||
|
||||
/**
|
||||
Press a mouse button.
|
||||
|
||||
|
||||
@param button
|
||||
Button to press. Valid constants are wxMOUSE_BTN_LEFT, wxMOUSE_BTN_MIDDLE, and wxMOUSE_BTN_RIGHT.
|
||||
*/
|
||||
bool MouseDown(int button = wxMOUSE_BTN_LEFT);
|
||||
|
||||
|
||||
/**
|
||||
Release a mouse button.
|
||||
|
||||
|
||||
@param button
|
||||
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
|
||||
*/
|
||||
bool MouseUp(int button = wxMOUSE_BTN_LEFT);
|
||||
/**
|
||||
Click a mouse button.
|
||||
|
||||
|
||||
@param button
|
||||
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
|
||||
*/
|
||||
bool MouseClick(int button = wxMOUSE_BTN_LEFT);
|
||||
/**
|
||||
Double-click a mouse button.
|
||||
|
||||
|
||||
@param button
|
||||
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
|
||||
*/
|
||||
@@ -77,70 +81,70 @@ class wxUIActionSimulator
|
||||
|
||||
/**
|
||||
Perform a drag and drop operation.
|
||||
|
||||
|
||||
@param x1
|
||||
x start coordinate, in screen coordinates.
|
||||
|
||||
|
||||
@param y1
|
||||
y start coordinate, in screen coordinates.
|
||||
|
||||
|
||||
@param x2
|
||||
x desintation coordinate, in screen coordinates.
|
||||
|
||||
|
||||
@param y2
|
||||
y destination coordinate, in screen coordinates.
|
||||
|
||||
|
||||
@param button
|
||||
Button to press. See wxUIActionSimulator::MouseDown for a list of valid constants.
|
||||
*/
|
||||
bool MouseDragDrop(long x1, long y1, long x2, long y2, int button = wxMOUSE_BTN_LEFT);
|
||||
|
||||
|
||||
/**
|
||||
Press a key.
|
||||
|
||||
Press a key.
|
||||
|
||||
@param keycode
|
||||
key to operate on, as an integer.
|
||||
|
||||
|
||||
@param shiftDown
|
||||
true if the shift key should be pressed, false otherwise.
|
||||
|
||||
|
||||
@param cmdDown
|
||||
true if the cmd key should be pressed, false otherwise.
|
||||
|
||||
|
||||
@param altDown
|
||||
true if the alt key should be pressed, false otherwise.
|
||||
*/
|
||||
bool KeyDown(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
|
||||
|
||||
|
||||
/**
|
||||
Release a key.
|
||||
|
||||
Release a key.
|
||||
|
||||
@param keycode
|
||||
key to operate on, as an integer.
|
||||
|
||||
|
||||
@param shiftDown
|
||||
true if the shift key should be pressed, false otherwise.
|
||||
|
||||
|
||||
@param cmdDown
|
||||
true if the cmd key should be pressed, false otherwise.
|
||||
|
||||
|
||||
@param altDown
|
||||
true if the alt key should be pressed, false otherwise.
|
||||
*/
|
||||
bool KeyUp(int keycode, bool shiftDown=false, bool cmdDown=false, bool altDown=false);
|
||||
|
||||
|
||||
/**
|
||||
Press and release a key.
|
||||
|
||||
Press and release a key.
|
||||
|
||||
@param keycode
|
||||
key to operate on, as an integer.
|
||||
|
||||
|
||||
@param shiftDown
|
||||
true if the shift key should be pressed, false otherwise.
|
||||
|
||||
|
||||
@param cmdDown
|
||||
true if the cmd key should be pressed, false otherwise.
|
||||
|
||||
|
||||
@param altDown
|
||||
true if the alt key should be pressed, false otherwise.
|
||||
*/
|
||||
|
@@ -24,6 +24,8 @@
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#if wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
// for all others, include the necessary headers (this file is usually all you
|
||||
// need because it includes almost all "standard" wxWidgets headers)
|
||||
#ifndef WX_PRECOMP
|
||||
@@ -164,3 +166,5 @@ void MyFrame::OnButtonPressed(wxCommandEvent&)
|
||||
{
|
||||
m_buttonPressed = true;
|
||||
}
|
||||
|
||||
#endif // wxUSE_UIACTIONSIMULATOR
|
||||
|
@@ -520,6 +520,8 @@
|
||||
#define wxUSE_MOUSEWHEEL 0
|
||||
|
||||
|
||||
#define wxUSE_UIACTIONSIMULATOR 0
|
||||
|
||||
|
||||
#define wxUSE_POSTSCRIPT 0
|
||||
|
||||
|
@@ -11,6 +11,8 @@
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#if wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
#include "wx/uiaction.h"
|
||||
|
||||
wxUIActionSimulator::wxUIActionSimulator()
|
||||
@@ -22,21 +24,21 @@ wxUIActionSimulator::~wxUIActionSimulator()
|
||||
}
|
||||
|
||||
|
||||
bool wxUIActionSimulator::MouseClick(int button)
|
||||
bool wxUIActionSimulator::MouseClick(int button)
|
||||
{
|
||||
MouseDown(button);
|
||||
MouseUp(button);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxUIActionSimulator::MouseDblClick(int button)
|
||||
bool wxUIActionSimulator::MouseDblClick(int button)
|
||||
{
|
||||
MouseDown(button);
|
||||
MouseUp(button);
|
||||
MouseDown(button);
|
||||
MouseUp(button);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -44,9 +46,9 @@ bool wxUIActionSimulator::MouseDragDrop(long x1, long y1, long x2, long y2, int
|
||||
{
|
||||
MouseMove(x1, y1);
|
||||
MouseDown(button);
|
||||
MouseMove(x2, y2);
|
||||
MouseMove(x2, y2);
|
||||
MouseUp(button);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -54,6 +56,8 @@ bool wxUIActionSimulator::Char(int keycode, bool shiftDown, bool cmdDown, bool
|
||||
{
|
||||
Key(keycode, false, shiftDown, cmdDown, altDown);
|
||||
Key(keycode, true, shiftDown, cmdDown, altDown);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // wxUSE_UIACTIONSIMULATOR
|
||||
|
@@ -11,13 +11,11 @@
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/defs.h"
|
||||
#endif
|
||||
#if wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
#include "wx/uiaction.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include "wx/msw/wrapwin.h"
|
||||
|
||||
DWORD EventTypeForMouseButton(int button, bool isDown)
|
||||
{
|
||||
@@ -38,7 +36,7 @@ DWORD EventTypeForMouseButton(int button, bool isDown)
|
||||
return MOUSEEVENTF_MIDDLEDOWN;
|
||||
else
|
||||
return MOUSEEVENTF_MIDDLEUP;
|
||||
|
||||
|
||||
default:
|
||||
wxFAIL_MSG("Unsupported button passed in.");
|
||||
return -1;
|
||||
@@ -54,7 +52,7 @@ bool wxUIActionSimulator::MouseDown(int button)
|
||||
}
|
||||
|
||||
bool wxUIActionSimulator::MouseMove(long x, long y)
|
||||
{
|
||||
{
|
||||
mouse_event(MOUSEEVENTF_MOVE, x, y, 0, 0);
|
||||
return true;
|
||||
}
|
||||
@@ -76,3 +74,4 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool shiftDown, bool cmd
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // wxUSE_UIACTIONSIMULATOR
|
||||
|
@@ -9,8 +9,11 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <wx/defs.h>
|
||||
#include <wx/uiaction.h>
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
#include "wx/uiaction.h"
|
||||
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
|
||||
@@ -30,9 +33,9 @@ CGEventType CGEventTypeForMouseButton(int button, bool isDown)
|
||||
return kCGEventRightMouseDown;
|
||||
else
|
||||
return kCGEventRightMouseUp;
|
||||
|
||||
// Apparently all other buttons use the constant OtherMouseDown
|
||||
|
||||
|
||||
// Apparently all other buttons use the constant OtherMouseDown
|
||||
|
||||
default:
|
||||
if (isDown)
|
||||
return kCGEventOtherMouseDown;
|
||||
@@ -55,13 +58,13 @@ bool wxUIActionSimulator::MouseDown(int button)
|
||||
{
|
||||
CGPoint pos;
|
||||
int x, y;
|
||||
wxGetMousePosition(&x, &y);
|
||||
wxGetMousePosition(&x, &y);
|
||||
pos.x = x;
|
||||
pos.y = y;
|
||||
CGEventType type = CGEventTypeForMouseButton(button, true);
|
||||
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, button);
|
||||
CGEventSetType(event, type);
|
||||
|
||||
|
||||
if (event)
|
||||
{
|
||||
CGEventPost(tap, event);
|
||||
@@ -78,13 +81,13 @@ bool wxUIActionSimulator::MouseMove(long x, long y)
|
||||
CGEventType type = kCGEventMouseMoved;
|
||||
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, kCGMouseButtonLeft);
|
||||
CGEventSetType(event, type);
|
||||
|
||||
|
||||
if (event)
|
||||
{
|
||||
CGEventPost(tap, event);
|
||||
}
|
||||
CFRelease(event);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -92,13 +95,13 @@ bool wxUIActionSimulator::MouseUp(int button)
|
||||
{
|
||||
CGPoint pos;
|
||||
int x, y;
|
||||
wxGetMousePosition(&x, &y);
|
||||
wxGetMousePosition(&x, &y);
|
||||
pos.x = x;
|
||||
pos.y = y;
|
||||
CGEventType type = CGEventTypeForMouseButton(button, false);
|
||||
CGEventRef event = CGEventCreateMouseEvent(NULL, type, pos, button);
|
||||
CGEventSetType(event, type);
|
||||
|
||||
|
||||
if (event)
|
||||
{
|
||||
CGEventPost(tap, event);
|
||||
@@ -125,8 +128,9 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool shiftDown, bool cmd
|
||||
SendCharCode((CGCharCode)58, false);
|
||||
if (cmdDown)
|
||||
SendCharCode((CGCharCode)55, false);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
|
@@ -9,8 +9,11 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <wx/defs.h>
|
||||
#include <wx/uiaction.h>
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_UIACTIONSIMULATOR
|
||||
|
||||
#include "wx/uiaction.h"
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
@@ -35,12 +38,12 @@ void SendButtonEvent(int button, bool isDown)
|
||||
}
|
||||
|
||||
XEvent event;
|
||||
|
||||
|
||||
Display *display = XOpenDisplay(0);
|
||||
wxASSERT_MSG(display, "No display available!");
|
||||
|
||||
|
||||
memset(&event, 0x00, sizeof(event));
|
||||
|
||||
|
||||
if (isDown)
|
||||
event.type = ButtonPress;
|
||||
else
|
||||
@@ -48,16 +51,16 @@ void SendButtonEvent(int button, bool isDown)
|
||||
|
||||
event.xbutton.button = xbutton;
|
||||
event.xbutton.same_screen = True;
|
||||
|
||||
|
||||
XQueryPointer(display, RootWindow(display, DefaultScreen(display)), &event.xbutton.root, &event.xbutton.window, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state);
|
||||
event.xbutton.subwindow = event.xbutton.window;
|
||||
|
||||
|
||||
while (event.xbutton.subwindow)
|
||||
{
|
||||
event.xbutton.window = event.xbutton.subwindow;
|
||||
XQueryPointer(display, event.xbutton.window, &event.xbutton.root, &event.xbutton.subwindow, &event.xbutton.x_root, &event.xbutton.y_root, &event.xbutton.x, &event.xbutton.y, &event.xbutton.state);
|
||||
}
|
||||
|
||||
|
||||
XSendEvent(display, PointerWindow, True, 0xfff, &event);
|
||||
XFlush(display);
|
||||
XCloseDisplay(display);
|
||||
@@ -70,7 +73,7 @@ bool wxUIActionSimulator::MouseDown(int button)
|
||||
}
|
||||
|
||||
bool wxUIActionSimulator::MouseMove(long x, long y)
|
||||
{
|
||||
{
|
||||
Display *display = XOpenDisplay(0);
|
||||
wxASSERT_MSG(display, "No display available!");
|
||||
Window root = DefaultRootWindow(display);
|
||||
@@ -90,11 +93,11 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool WXUNUSED(shiftDown)
|
||||
{
|
||||
Display *display = XOpenDisplay(0);
|
||||
wxASSERT_MSG(display, "No display available!");
|
||||
|
||||
|
||||
XKeyEvent event;
|
||||
int mask = 0xfff;
|
||||
memset(&event, 0x00, sizeof(event));
|
||||
|
||||
|
||||
if (isDown) {
|
||||
event.type = KeyPress;
|
||||
mask = KeyPressMask;
|
||||
@@ -104,16 +107,16 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool WXUNUSED(shiftDown)
|
||||
mask = KeyReleaseMask;
|
||||
}
|
||||
event.same_screen = True;
|
||||
|
||||
|
||||
XQueryPointer(display, RootWindow(display, DefaultScreen(display)), &event.root, &event.window, &event.x_root, &event.y_root, &event.x, &event.y, &event.state);
|
||||
event.subwindow = event.window;
|
||||
|
||||
|
||||
while (event.subwindow)
|
||||
{
|
||||
event.window = event.subwindow;
|
||||
XQueryPointer(display, event.window, &event.root, &event.subwindow, &event.x_root, &event.y_root, &event.x, &event.y, &event.state);
|
||||
}
|
||||
|
||||
|
||||
XSendEvent(display, PointerWindow, True, mask, (XEvent*) &event);
|
||||
XFlush(display);
|
||||
XCloseDisplay(display);
|
||||
@@ -121,3 +124,4 @@ bool wxUIActionSimulator::Key(int keycode, bool isDown, bool WXUNUSED(shiftDown)
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // wxUSE_UIACTIONSIMULATOR
|
||||
|
Reference in New Issue
Block a user