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
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_textinputdispatcherlistener_h_
#define mozilla_textinputdispatcherlistener_h_
#include "nsWeakReference.h"
namespace mozilla {
namespace widget {
class TextEventDispatcher;
struct IMENotification;
#define NS_TEXT_INPUT_PROXY_LISTENER_IID \
{ 0xf2226f55, 0x6ddb, 0x40d5, \
{ 0x8a, 0x24, 0xce, 0x4d, 0x5b, 0x38, 0x15, 0xf0 } };
class TextEventDispatcherListener : public nsSupportsWeakReference
{
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_TEXT_INPUT_PROXY_LISTENER_IID)
/**
* NotifyIME() is called by TextEventDispatcher::NotifyIME(). This is a
* notification or request to IME. See document of nsIWidget::NotifyIME()
* for the detail.
*/
NS_IMETHOD NotifyIME(TextEventDispatcher* aTextEventDispatcher,
const IMENotification& aNotification) = 0;
/**
* OnRemovedFrom() is called when the TextEventDispatcher stops working and
* is releasing the listener.
*/
NS_IMETHOD_(void) OnRemovedFrom(
TextEventDispatcher* aTextEventDispatcher) = 0;
/**
* WillDispatchKeyboardEvent() may be called immediately before
* TextEventDispatcher dispatching a keyboard event. This is called only
* during calling TextEventDispatcher::DispatchKeyboardEvent() or
* TextEventDispatcher::MaybeDispatchKeypressEvents(). But this may not
* be called if TextEventDispatcher thinks that the keyboard event doesn't
* need alternative char codes.
*
* This method can overwrite any members of aKeyboardEvent which is already
* initialized by TextEventDispatcher. If it's necessary, this method should
* overwrite the charCode when Control key is pressed. TextEventDispatcher
* computes charCode from mKeyValue. However, when Control key is pressed,
* charCode should be an ASCII char. In such case, this method needs to
* overwrite it properly.
*
* @param aTextEventDispatcher Pointer to the caller.
* @param aKeyboardEvent The event trying to dispatch.
* This is already initialized, but if it's
* necessary, this method should overwrite the
* members and set alternative char codes.
* @param aIndexOfKeypress When aKeyboardEvent is eKeyPress event,
* it may be a sequence of keypress events
* if the key causes multiple characters.
* In such case, this indicates the index from
* first keypress event.
* If aKeyboardEvent is the first eKeyPress or
* other events, this value is 0.
* @param aData The pointer which was specified at calling
* the method of TextEventDispatcher.
* For example, if you do:
* |TextEventDispatcher->DispatchKeyboardEvent(
* eKeyDown, event, status, this);|
* Then, aData of this method becomes |this|.
* Finally, you can use it like:
* |static_cast<NativeEventHandler*>(aData)|
*/
NS_IMETHOD_(void) WillDispatchKeyboardEvent(
TextEventDispatcher* aTextEventDispatcher,
WidgetKeyboardEvent& aKeyboardEvent,
uint32_t aIndexOfKeypress,
void* aData) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(TextEventDispatcherListener,
NS_TEXT_INPUT_PROXY_LISTENER_IID)
} // namespace widget
} // namespace mozilla
#endif // #ifndef mozilla_textinputdispatcherlistener_h_
|