]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/common/uiactioncmn.cpp
fix memory leak in wxScreenDC, fixes #13249
[wxWidgets.git] / src / common / uiactioncmn.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: src/common/uiactioncmn.cpp
3// Purpose: wxUIActionSimulator common implementation
4// Author: Kevin Ollivier, Steven Lamerton, Vadim Zeitlin
5// Modified by:
6// Created: 2010-03-06
7// RCS-ID: $Id$
8// Copyright: (c) Kevin Ollivier
9// (c) 2010 Steven Lamerton
10// (c) 2010 Vadim Zeitlin
11// Licence: wxWindows licence
12/////////////////////////////////////////////////////////////////////////////
13
14#include "wx/wxprec.h"
15
16#if wxUSE_UIACTIONSIMULATOR
17
18#include "wx/uiaction.h"
19
20bool wxUIActionSimulator::MouseClick(int button)
21{
22 MouseDown(button);
23 MouseUp(button);
24
25 return true;
26}
27
28bool wxUIActionSimulator::MouseDblClick(int button)
29{
30 MouseDown(button);
31 MouseUp(button);
32 MouseDown(button);
33 MouseUp(button);
34
35 return true;
36}
37
38bool
39wxUIActionSimulator::MouseDragDrop(long x1, long y1, long x2, long y2,
40 int button)
41{
42 MouseMove(x1, y1);
43 MouseDown(button);
44 MouseMove(x2, y2);
45 MouseUp(button);
46
47 return true;
48}
49
50bool
51wxUIActionSimulator::Key(int keycode, int modifiers, bool isDown)
52{
53 wxASSERT_MSG( (modifiers & wxMOD_ALTGR) != wxMOD_ALTGR,
54 "wxMOD_ALTGR is not implemented" );
55 wxASSERT_MSG( !(modifiers & wxMOD_META ),
56 "wxMOD_META is not implemented" );
57 wxASSERT_MSG( !(modifiers & wxMOD_WIN ),
58 "wxMOD_WIN is not implemented" );
59
60 if ( isDown )
61 SimulateModifiers(modifiers, true);
62
63 bool rc = DoKey(keycode, modifiers, isDown);
64
65 if ( !isDown )
66 SimulateModifiers(modifiers, false);
67
68 return rc;
69}
70
71void wxUIActionSimulator::SimulateModifiers(int modifiers, bool isDown)
72{
73 if ( modifiers & wxMOD_SHIFT )
74 DoKey(WXK_SHIFT, modifiers, isDown);
75 if ( modifiers & wxMOD_ALT )
76 DoKey(WXK_ALT, modifiers, isDown);
77 if ( modifiers & wxMOD_CONTROL )
78 DoKey(WXK_CONTROL, modifiers, isDown);
79}
80
81bool wxUIActionSimulator::Char(int keycode, int modifiers)
82{
83 Key(keycode, modifiers, true);
84 Key(keycode, modifiers, false);
85
86 return true;
87}
88
89bool wxUIActionSimulator::Text(const char *s)
90{
91 while ( *s != '\0' )
92 {
93 const char ch = *s++;
94
95 wxASSERT_MSG( ch, "Only letters are allowed" );
96
97 if ( !Char(ch, isupper(ch) ? wxMOD_SHIFT : 0) )
98 return false;
99 }
100
101 return true;
102}
103
104#endif // wxUSE_UIACTIONSIMULATOR