/usr/include/MYGUI/MyGUI_InputManager.h is in libmygui-dev 3.2.0-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | /*!
@file
@author Albert Semenov
@date 11/2007
*/
/*
This file is part of MyGUI.
MyGUI is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
MyGUI is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with MyGUI. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __MYGUI_INPUT_MANAGER_H__
#define __MYGUI_INPUT_MANAGER_H__
#include "MyGUI_Prerequest.h"
#include "MyGUI_Macros.h"
#include "MyGUI_Singleton.h"
#include "MyGUI_WidgetDefines.h"
#include "MyGUI_IUnlinkWidget.h"
#include "MyGUI_WidgetDefines.h"
#include "MyGUI_XmlDocument.h"
#include "MyGUI_MouseButton.h"
#include "MyGUI_KeyCode.h"
#include "MyGUI_Timer.h"
#include "MyGUI_ILayer.h"
#include "MyGUI_Delegate.h"
#include "MyGUI_BackwardCompatibility.h"
namespace MyGUI
{
class MYGUI_EXPORT InputManager :
public Singleton<InputManager>,
public IUnlinkWidget,
public MemberObsolete<InputManager>
{
public:
InputManager();
void initialise();
void shutdown();
/** Inject MouseMove event
@return true if event has been processed by GUI
*/
bool injectMouseMove(int _absx, int _absy, int _absz);
/** Inject MousePress event
@return true if event has been processed by GUI
*/
bool injectMousePress(int _absx, int _absy, MouseButton _id);
/** Inject MouseRelease event
@return true if event has been processed by GUI
*/
bool injectMouseRelease(int _absx, int _absy, MouseButton _id);
/** Inject KeyPress event
@return true if event has been processed by GUI
*/
bool injectKeyPress(KeyCode _key, Char _text = 0);
/** Inject KeyRelease event
@return true if event has been processed by GUI
*/
bool injectKeyRelease(KeyCode _key);
/** Is any widget have mouse focus */
bool isFocusMouse() const;
/** Is any widget have key focus (any widget might have it, not only EditBox or something similar) */
bool isFocusKey() const;
/** Is any widget captured mouse */
bool isCaptureMouse() const;
/** Set key focus for _widget */
void setKeyFocusWidget(Widget* _widget);
/** Drop key focus for _widget */
void resetKeyFocusWidget(Widget* _widget);
/** Drop any key focus */
void resetKeyFocusWidget();
/** Get mouse focused widget */
Widget* getMouseFocusWidget() const;
/** Get key focused widget */
Widget* getKeyFocusWidget() const;
/** Get position of last mouse button press.
Position calculated on specific layer where mouse was pressed.
*/
const IntPoint& getLastPressedPosition(MouseButton _id) const;
/** Get current mouse position on screen */
const IntPoint& getMousePosition() const;
/** Get mouse position on current layer.
This position might different from getMousePosition() if mouse is over non-2d layer.
*/
IntPoint getMousePositionByLayer();
// работа с модальными окнами
/** Add modal widget - all other widgets inaccessible while modal widget exist */
void addWidgetModal(Widget* _widget);
/** Remove modal widget */
void removeWidgetModal(Widget* _widget);
/** Return true if any modal widget exist */
bool isModalAny() const;
/** Is control button pressed */
bool isControlPressed() const;
/** Is shift button pressed */
bool isShiftPressed() const;
/** Reset mouse capture.
For example when we dragging and application
lost focus you should call this.
*/
void resetMouseCaptureWidget();
/** Unlink widget from input manager. */
void unlinkWidget(Widget* _widget);
/** Event : MultiDelegate. Mouse focus was changed.\n
signature : void method(MyGUI::Widget* _widget)\n
@param _widget
*/
delegates::CMultiDelegate1<Widget*>
eventChangeMouseFocus;
/** Event : MultiDelegate. Key focus was changed.\n
signature : void method(MyGUI::Widget* _widget)\n
@param _widget
*/
delegates::CMultiDelegate1<Widget*>
eventChangeKeyFocus;
/*internal:*/
void _resetMouseFocusWidget();
private:
// удаляем данный виджет из всех возможных мест
void _unlinkWidget(Widget* _widget);
void frameEntered(float _frame);
void firstEncoding(KeyCode _key, bool bIsKeyPressed);
// запоминает клавишу для поддержки повторения
void storeKey(KeyCode _key, Char _text);
// сбрасывает клавишу повторения
void resetKey();
private:
// виджеты которым принадлежит фокус
Widget* mWidgetMouseFocus;
Widget* mWidgetKeyFocus;
ILayer* mLayerMouseFocus;
// таймер для двойного клика
Timer mTimer; //used for double click timing
// нажат ли шифт
bool mIsShiftPressed;
// нажат ли контрол
bool mIsControlPressed;
IntPoint mMousePosition;
// last mouse press position
IntPoint mLastPressed[MouseButton::MAX];
// is mouse button captured by active widget
bool mMouseCapture[MouseButton::MAX];
// клавиша для повтора
KeyCode mHoldKey;
Char mHoldChar;
bool mFirstPressKey;
float mTimerKey;
int mOldAbsZ;
// список виджетов с модальным режимом
VectorWidgetPtr mVectorModalRootWidget;
bool mIsInitialise;
};
} // namespace MyGUI
#endif // __MYGUI_INPUT_MANAGER_H__
|