From 906d46ca3d9a81bf0c6248158d9e0b745980294e Mon Sep 17 00:00:00 2001 From: Tanasart Date: Tue, 16 Jul 2024 14:08:27 +0700 Subject: [PATCH] - Fix dialog not closing when trying to click outside on pen tablet. --- objects/_p_dialog/Create_0.gml | 9 ++++---- objects/o_dialog_panel/Create_0.gml | 28 ++++++++++++------------ objects/o_dialog_panel/o_dialog_panel.yy | 6 ++--- scripts/mouse_input/mouse_input.gml | 4 ++-- 4 files changed, 23 insertions(+), 24 deletions(-) diff --git a/objects/_p_dialog/Create_0.gml b/objects/_p_dialog/Create_0.gml index 211ca2317..0b99cc293 100644 --- a/objects/_p_dialog/Create_0.gml +++ b/objects/_p_dialog/Create_0.gml @@ -196,17 +196,16 @@ } function checkMouse() { - if(!active) return; - if(!DIALOG_CLICK) return; + if(!active) return; + if(!DIALOG_CLICK) return; if(!init_pressing && mouse_press(mb_any)) { - if(!isTop()) return; + if(!isTop()) return; for( var i = 0, n = array_length(children); i < n; i++ ) if(instance_exists(children[i])) return; - if(checkClosable() && destroy_on_click_out) - if(!point_in(mouse_mx, mouse_my)) { + if(checkClosable() && destroy_on_click_out && !point_in(mouse_mx, mouse_my)) { instance_destroy(self); onDestroy(); DIALOG_CLICK = false; diff --git a/objects/o_dialog_panel/Create_0.gml b/objects/o_dialog_panel/Create_0.gml index ddb6ce7b3..8e60bc5f7 100644 --- a/objects/o_dialog_panel/Create_0.gml +++ b/objects/o_dialog_panel/Create_0.gml @@ -13,7 +13,7 @@ event_inherited(); content = noone; destroy_on_click_out = true; - function setContent(content) { #region + function setContent(content) { self.content = content; if(struct_has(content, "title_height")) @@ -29,14 +29,14 @@ event_inherited(); content.in_dialog = true; if(content.auto_pin) destroy_on_click_out = false; - } #endregion + } - function contentResize() { #region + function contentResize() { dialog_w = content.w + content.showHeader * padding * 2; dialog_h = content.h + content.showHeader * (padding * 2 + title_height); - } #endregion + } - function resetMask() { #region + function resetMask() { if(!content) return; mask_surface = surface_verify(mask_surface, dialog_w - content.showHeader * padding * 2, dialog_h - content.showHeader * (padding * 2 + title_height)); @@ -48,9 +48,9 @@ event_inherited(); dialog_h - content.showHeader * (padding * 2 + title_height)); gpu_set_blendmode(bm_normal); surface_reset_target(); - } resetMask(); #endregion + } resetMask(); - onResize = function() { #region + onResize = function() { panel = surface_verify(panel, dialog_w, dialog_h); resetMask(); @@ -60,21 +60,21 @@ event_inherited(); content.onResize(); } - } #endregion + } - function checkClosable() { #region + function checkClosable() { if(!content) return true; return content.checkClosable(); - } #endregion + } - function onDestroy() { #region + function onDestroy() { if(content == noone) return; content.onClose(); - } #endregion + } - function remove() { #region + function remove() { instance_destroy(); - } #endregion + } function onFocusBegin() { if(content) content.onFocusBegin(); } function onFocusEnd() { if(content) content.onFocusEnd(); } diff --git a/objects/o_dialog_panel/o_dialog_panel.yy b/objects/o_dialog_panel/o_dialog_panel.yy index b979f80c2..6ec0a7dec 100644 --- a/objects/o_dialog_panel/o_dialog_panel.yy +++ b/objects/o_dialog_panel/o_dialog_panel.yy @@ -2,9 +2,9 @@ "$GMObject":"", "%Name":"o_dialog_panel", "eventList":[ - {"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",}, - {"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",}, - {"$GMEvent":"v1","%Name":"","collisionObjectId":null,"eventNum":75,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",}, + {"$GMEvent":"","%Name":"","collisionObjectId":null,"eventNum":0,"eventType":0,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",}, + {"$GMEvent":"","%Name":"","collisionObjectId":null,"eventNum":64,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",}, + {"$GMEvent":"","%Name":"","collisionObjectId":null,"eventNum":75,"eventType":8,"isDnD":false,"name":"","resourceType":"GMEvent","resourceVersion":"2.0",}, ], "managed":true, "name":"o_dialog_panel", diff --git a/scripts/mouse_input/mouse_input.gml b/scripts/mouse_input/mouse_input.gml index c3b23812a..e1815afbb 100644 --- a/scripts/mouse_input/mouse_input.gml +++ b/scripts/mouse_input/mouse_input.gml @@ -6,7 +6,7 @@ MOUSE_WRAPPING = false; MOUSE_BLOCK = false; _MOUSE_BLOCK = false; - PEN_RELEASED = false; + PEN_RELEASED = false; #macro SCROLL_SPEED PREFERENCES.mouse_wheel_speed #macro MOUSE_MOVED (window_mouse_get_delta_x() || window_mouse_get_delta_y()) @@ -43,7 +43,7 @@ function mouse_release(mouse, focus = true) { #region if(PEN_RIGHT_RELEASE) return mouse == mb_right; - return mouse_check_button_released(mouse) || (mouse == mb_left && PEN_RELEASED); + return mouse_check_button_released(mouse) || ((mouse == mb_left || mouse == mb_any) && PEN_RELEASED); } #endregion function mouse_lclick(focus = true) { #region