Skip to content

Commit 5f8f0ac

Browse files
committed
[web] add support for pen pressure
1 parent 978b387 commit 5f8f0ac

File tree

4 files changed

+10
-9
lines changed

4 files changed

+10
-9
lines changed

platform/web/display_server_web.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,18 +305,18 @@ int DisplayServerWeb::_mouse_button_callback(int p_pressed, int p_button, double
305305
return true;
306306
}
307307

308-
void DisplayServerWeb::mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers) {
308+
void DisplayServerWeb::mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure) {
309309
#ifdef PROXY_TO_PTHREAD_ENABLED
310310
if (!Thread::is_main_thread()) {
311-
callable_mp_static(DisplayServerWeb::_mouse_move_callback).call_deferred(p_x, p_y, p_rel_x, p_rel_y, p_modifiers);
311+
callable_mp_static(DisplayServerWeb::_mouse_move_callback).call_deferred(p_x, p_y, p_rel_x, p_rel_y, p_modifiers, p_pressure);
312312
return;
313313
}
314314
#endif
315315

316-
_mouse_move_callback(p_x, p_y, p_rel_x, p_rel_y, p_modifiers);
316+
_mouse_move_callback(p_x, p_y, p_rel_x, p_rel_y, p_modifiers, p_pressure);
317317
}
318318

319-
void DisplayServerWeb::_mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers) {
319+
void DisplayServerWeb::_mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure) {
320320
BitField<MouseButtonMask> input_mask = Input::get_singleton()->get_mouse_button_mask();
321321
// For motion outside the canvas, only read mouse movement if dragging
322322
// started inside the canvas; imitating desktop app behavior.
@@ -332,6 +332,7 @@ void DisplayServerWeb::_mouse_move_callback(double p_x, double p_y, double p_rel
332332

333333
ev->set_position(pos);
334334
ev->set_global_position(pos);
335+
ev->set_pressure((float)p_pressure);
335336

336337
ev->set_relative(Vector2(p_rel_x, p_rel_y));
337338
ev->set_relative_screen_position(ev->get_relative());

platform/web/display_server_web.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ class DisplayServerWeb : public DisplayServer {
120120
static void _fullscreen_change_callback(int p_fullscreen);
121121
WASM_EXPORT static int mouse_button_callback(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers);
122122
static int _mouse_button_callback(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers);
123-
WASM_EXPORT static void mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers);
124-
static void _mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers);
123+
WASM_EXPORT static void mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure);
124+
static void _mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure);
125125
WASM_EXPORT static int mouse_wheel_callback(double p_delta_x, double p_delta_y);
126126
static int _mouse_wheel_callback(double p_delta_x, double p_delta_y);
127127
WASM_EXPORT static void touch_callback(int p_type, int p_count);

platform/web/godot_js.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ extern int godot_js_pwa_update();
5757

5858
// Input
5959
extern void godot_js_input_mouse_button_cb(int (*p_callback)(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers));
60-
extern void godot_js_input_mouse_move_cb(void (*p_callback)(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers));
60+
extern void godot_js_input_mouse_move_cb(void (*p_callback)(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure));
6161
extern void godot_js_input_mouse_wheel_cb(int (*p_callback)(double p_delta_x, double p_delta_y));
6262
extern void godot_js_input_touch_cb(void (*p_callback)(int p_type, int p_count), uint32_t *r_identifiers, double *r_coords);
6363
extern void godot_js_input_key_cb(void (*p_callback)(int p_type, int p_repeat, int p_modifiers), char r_code[32], char r_key[32]);

platform/web/js/libs/library_godot_input.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -515,9 +515,9 @@ const GodotInput = {
515515
const rel_pos_x = evt.movementX * rw;
516516
const rel_pos_y = evt.movementY * rh;
517517
const modifiers = GodotInput.getModifiers(evt);
518-
func(pos[0], pos[1], rel_pos_x, rel_pos_y, modifiers);
518+
func(pos[0], pos[1], rel_pos_x, rel_pos_y, modifiers, evt.pressure);
519519
}
520-
GodotEventListeners.add(window, 'mousemove', move_cb, false);
520+
GodotEventListeners.add(window, 'pointermove', move_cb, false);
521521
},
522522

523523
godot_js_input_mouse_wheel_cb__proxy: 'sync',

0 commit comments

Comments
 (0)