OLD | NEW |
1 .. _view_focus_input_events: | 1 .. _view_focus_input_events: |
2 | 2 |
3 :template: standard_nacl_api | |
4 | |
5 #################################### | 3 #################################### |
6 View Change, Focus, and Input Events | 4 View Change, Focus, and Input Events |
7 #################################### | 5 #################################### |
8 | 6 |
9 .. contents:: | 7 .. contents:: |
10 :local: | 8 :local: |
11 :backlinks: none | 9 :backlinks: none |
12 :depth: 2 | 10 :depth: 2 |
13 | 11 |
14 This section describes view change, focus, and input event handling for a | 12 This section describes view change, focus, and input event handling for a |
(...skipping 21 matching lines...) Expand all Loading... |
36 application, these input events are passed to and handled in JavaScript, | 34 application, these input events are passed to and handled in JavaScript, |
37 typically through event listeners and event handlers. In a Native Client | 35 typically through event listeners and event handlers. In a Native Client |
38 application, user interaction with an instance of a module (e.g., clicking | 36 application, user interaction with an instance of a module (e.g., clicking |
39 inside the rectangle managed by a module) also generates input events, which | 37 inside the rectangle managed by a module) also generates input events, which |
40 are passed to the module. The browser also passes view change and focus events | 38 are passed to the module. The browser also passes view change and focus events |
41 that affect a module's instance to the module. Native Client modules can | 39 that affect a module's instance to the module. Native Client modules can |
42 override certain functions in the `pp::Instance | 40 override certain functions in the `pp::Instance |
43 </native-client/pepper_stable/cpp/classpp_1_1_instance>`_ class to handle input | 41 </native-client/pepper_stable/cpp/classpp_1_1_instance>`_ class to handle input |
44 and browser events. These functions are listed in the table below: | 42 and browser events. These functions are listed in the table below: |
45 | 43 |
46 | 44 +-------------------------------------+----------------------------------------+ |
47 ====================== =============================== ==================== | 45 | Function | Use | |
48 Function Event Use | 46 +=====================================+========================================+ |
49 ====================== =============================== ==================== | 47 |``DidChangeView`` |An implementation of this function might| |
50 ``DidChangeView`` Called when the position, An implementation | 48 | Called when the position, size, or |check the size of the module instance's | |
51 size, or clip rectangle of this function | 49 | clip rectangle of the module's |rectangle has changed and reallocate the| |
52 of the module's instance in might check the size | 50 | instance in the browser has |graphcs context when a different size is| |
53 the browser has changed. of the module | 51 | changed. This event also occurs |received. | |
54 This event also occurs instance's rectangle | 52 | when the browser window is resized | | |
55 when browser window is has changed and | 53 | or the mouse wheel is scrolled. | | |
56 resized or mouse wheel reallocate the | 54 +-------------------------------------+----------------------------------------+ |
57 is scrolled. graphics context | 55 |``DidChangeFocus`` |An implementation of this function might| |
58 when a different | 56 | Called when the module's instance |start or stop an animation or a blinking| |
59 size is received. | 57 | in the browser has gone in or out |cursor. | |
60 | 58 | of focus (usually by clicking | | |
61 ``DidChangeFocus`` Called when the module's An implementation | 59 | inside or outside the module | | |
62 instance in the browser of this function | 60 | instance). Having focus means that | | |
63 has gone in or out of might start or stop | 61 | keyboard events will be sent to the| | |
64 focus (usually by an animation or a | 62 | module instance. An instance's | | |
65 clicking inside or blinking cursor. | 63 | default condition is that it does | | |
66 outside the module | 64 | not have focus. | | |
67 instance). Having focus | 65 +-------------------------------------+----------------------------------------+ |
68 means that keyboard | 66 |``HandleDocumentLoad`` |This API is only applicable when you are| |
69 events will be sent to | 67 | ``pp::Instance::Init()`` for a |writing an extension to enhance the | |
70 the module instance. | 68 | full-frame module instance that was|abilities of the Chrome web browser. For| |
71 An instance's default | 69 | instantiated based on the MIME |example, a PDF viewer might implement | |
72 condition is that it | 70 | type of a DOMWindow navigation. |this function to download and display a | |
73 does not have focus. | 71 | This situation only applies to |PDF file. | |
74 | 72 | modules that are pre-registered to | | |
75 ``HandleDocumentLoad`` Called after This API is only | 73 | handle certain MIME types. If you | | |
76 ``pp::Instance::Init()`` applicable when you | 74 | haven't specifically registered to | | |
77 for a full-frame module are writing an | 75 | handle a MIME type or aren't | | |
78 instance that was extension to enhance | 76 | positive this applies to you, your | | |
79 instantiated based on the abilities of | 77 | implementation of this function can| | |
80 the MIME type of a the Chrome web | 78 | just return false. | | |
81 DOMWindow navigation. browser. For | 79 +-------------------------------------+----------------------------------------+ |
82 This situation only example, a PDF | 80 |``HandleInputEvent`` |An implementation of this function | |
83 applies to modules that viewer might | 81 | Called when a user interacts with |examines the input event type and | |
84 are pre-registered to implement this | 82 | the module's instance in the |branches accordingly. | |
85 handle certain MIME function to download | 83 | browser using an input device such | | |
86 types. If you haven't and display a PDF | 84 | as a mouse or keyboard. You must | | |
87 specifically registered file. | 85 | register your module to accept | | |
88 to handle a MIME type or | 86 | input events using | | |
89 aren't positive this | 87 | ``RequestInputEvents()`` | | |
90 applies to you, your | 88 | for mouse events and | | |
91 implementation of this | 89 | ``RequestFilteringInputEvents()`` | | |
92 function can just return | 90 | for keyboard events prior to | | |
93 false. | 91 | overriding this function. | | |
94 | 92 +-------------------------------------+----------------------------------------+ |
95 ``HandleInputEvent`` Called when a user An implementation of | |
96 interacts with the this function | |
97 module's instance in the examines the input | |
98 browser using an input event type and | |
99 device such as a mouse branches accordingly. | |
100 or keyboard. You must | |
101 register your module to | |
102 accept input events | |
103 using | |
104 ``RequestInputEvents()`` | |
105 for mouse events and | |
106 ``RequestFilteringInputEvents`` | |
107 for keyboard events | |
108 prior to overriding this | |
109 function. | |
110 ====================== =============================== ==================== | |
111 | 93 |
112 | 94 |
113 These interfaces are found in the `pp::Instance class | 95 These interfaces are found in the `pp::Instance class |
114 </native-client/pepper_stable/cpp/classpp_1_1_instance>`_. The sections below | 96 </native-client/pepper_stable/cpp/classpp_1_1_instance>`_. The sections below |
115 provide examples of how to handle these events. | 97 provide examples of how to handle these events. |
116 | 98 |
117 | 99 |
118 Handling browser events | 100 Handling browser events |
119 ======================= | 101 ======================= |
120 | 102 |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 | 307 |
326 Threading and blocking | 308 Threading and blocking |
327 ---------------------- | 309 ---------------------- |
328 | 310 |
329 ``HandleInputEvent()`` in this example runs on the main module thread. | 311 ``HandleInputEvent()`` in this example runs on the main module thread. |
330 However, the bulk of the work happens on a separate worker thread (see | 312 However, the bulk of the work happens on a separate worker thread (see |
331 ``ProcessEventOnWorkerThread``). ``HandleInputEvent()`` puts events in | 313 ``ProcessEventOnWorkerThread``). ``HandleInputEvent()`` puts events in |
332 the ``event_queue_`` and the worker thread takes events from the | 314 the ``event_queue_`` and the worker thread takes events from the |
333 ``event_queue_``. This processing happens independently of the main | 315 ``event_queue_``. This processing happens independently of the main |
334 thread, so as not to slow down the browser. | 316 thread, so as not to slow down the browser. |
OLD | NEW |