diff --git a/objects/o_main/Draw_75.gml b/objects/o_main/Draw_75.gml index 72485bfaf..de0215923 100644 --- a/objects/o_main/Draw_75.gml +++ b/objects/o_main/Draw_75.gml @@ -3,6 +3,12 @@ if(winMan_isMinimized()) exit; #region tooltip if(!_MOUSE_BLOCK) { + if(TOOLTIP_WINDOW != noone) { + winwin_set_topmost(TOOLTIP_WINDOW, true); + winwin_draw_begin(TOOLTIP_WINDOW); + winwin_draw_clear(0, 0); + } + if(is_struct(TOOLTIP)) { if(struct_has(TOOLTIP, "drawTooltip")) TOOLTIP.drawTooltip(); @@ -103,6 +109,10 @@ if(winMan_isMinimized()) exit; } } else if(TOOLTIP != "") draw_tooltip_text(TOOLTIP); + + if(TOOLTIP_WINDOW != noone) { + winwin_draw_end(); + } } TOOLTIP = ""; #endregion diff --git a/objects/o_main/Step_1.gml b/objects/o_main/Step_1.gml index 91525bab0..304a5bdbb 100644 --- a/objects/o_main/Step_1.gml +++ b/objects/o_main/Step_1.gml @@ -25,7 +25,8 @@ _FILE_DROPPED = false; } var foc = window_has_focus(); - if(HOVER && instance_exists(HOVER) && HOVER.window != noone) foc = true; + //if(HOVER && instance_exists(HOVER) && HOVER.window != noone) + foc = true; game_set_speed(foc || IS_PLAYING? PREFERENCES.ui_framerate : PREFERENCES.ui_framerate_non_focus, gamespeed_fps); WINDOW_ACTIVE = noone; diff --git a/scripts/draw_tooltip/draw_tooltip.gml b/scripts/draw_tooltip/draw_tooltip.gml index 61cc68021..f2c7c5d73 100644 --- a/scripts/draw_tooltip/draw_tooltip.gml +++ b/scripts/draw_tooltip/draw_tooltip.gml @@ -1,3 +1,8 @@ +#macro __mouse_tx (PREFERENCES.multi_window? mouse_raw_x : mouse_mxs) +#macro __mouse_ty (PREFERENCES.multi_window? mouse_raw_y : mouse_mys) +#macro __win_tw (PREFERENCES.multi_window? display_get_width() : WIN_W) +#macro __win_th (PREFERENCES.multi_window? display_get_height() : WIN_H) + function draw_tooltip_text(txt) { txt = array_to_string(txt); @@ -10,8 +15,8 @@ function draw_tooltip_text(txt) { var th = string_height_ext(txt, -1, tw); var pd = ui(8); - var mx = min(mouse_mxs + ui(16), WIN_W - (tw + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (th + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (tw + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (th + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, tw + pd * 2, th + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, tw + pd * 2, th + pd * 2); @@ -28,8 +33,8 @@ function draw_tooltip_color(clr) { var hh = ui(32); var pd = ui(4); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); @@ -52,8 +57,8 @@ function draw_tooltip_palette(clr) { var hh = array_length(clr) * ph; var pd = ui(4); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); @@ -75,8 +80,8 @@ function draw_tooltip_gradient(clr) { var hh = array_length(clr) * gh; var pd = ui(4); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); @@ -108,8 +113,8 @@ function draw_tooltip_surface_array(surf) { var hh = sh * row; var pd = ui(4); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); @@ -154,8 +159,8 @@ function draw_tooltip_surface(surf) { var hh = sh * ss; var pd = ui(4); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); @@ -179,8 +184,8 @@ function draw_tooltip_sprite(spr) { var hh = sh * ss + ui(16); var pd = ui(4); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); @@ -205,8 +210,8 @@ function draw_tooltip_atlas(atlas) { if(amo && is_array(atlas[0])) return; var pd = ui(4); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); @@ -258,8 +263,8 @@ function draw_tooltip_buffer(buff) { th += string_height(" "); var pd = ui(8); - var mx = min(mouse_mxs + ui(16), WIN_W - (tw + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (th + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (tw + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (th + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, tw + pd * 2, th + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, tw + pd * 2, th + pd * 2); @@ -277,8 +282,8 @@ function draw_tooltip_curve(curve) { var hh = ui(160); var pd = ui(8); - var mx = min(mouse_mxs + ui(16), WIN_W - (ww + pd * 2)); - var my = min(mouse_mys + ui(16), WIN_H - (hh + pd * 2)); + var mx = min(__mouse_tx + ui(16), __win_tw - (ww + pd * 2)); + var my = min(__mouse_ty + ui(16), __win_th - (hh + pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, ww + pd * 2, hh + pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, ww + pd * 2, hh + pd * 2); diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index b4d00fa11..1f1b47e0c 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -60,7 +60,7 @@ globalvar FOCUS, FOCUS_STR, FOCUS_CONTENT, HOVER, HOVERING_ELEMENT, _HOVERING_ELEMENT; globalvar DOUBLE_CLICK, DOUBLE_CLICK_POS; globalvar DIALOG_CLICK; - globalvar WINDOW_ACTIVE; + globalvar WINDOW_ACTIVE, TOOLTIP_WINDOW; DOUBLE_CLICK_POS = [ 0, 0 ]; DOUBLE_CLICK = false; @@ -80,6 +80,7 @@ ADD_NODE_PAGE = 0; ADD_NODE_SCROLL = 0; WINDOW_ACTIVE = noone; + TOOLTIP_WINDOW = noone; #endregion #region macro diff --git a/scripts/meta_data/meta_data.gml b/scripts/meta_data/meta_data.gml index 854536bbf..901a3981c 100644 --- a/scripts/meta_data/meta_data.gml +++ b/scripts/meta_data/meta_data.gml @@ -86,8 +86,8 @@ function MetaDataManager() constructor { _h = string_height(name); _w = string_width(name); - var mx = min(mouse_mx + _pd * 2, WIN_W - (_w + _pd * 2)); - var my = min(mouse_my + _pd * 2, WIN_H - (_h + _pd * 2)); + var mx = min(__mouse_tx + _pd * 2, __win_tw - (_w + _pd * 2)); + var my = min(__mouse_ty + _pd * 2, __win_th - (_h + _pd * 2)); draw_sprite_stretched(THEME.textbox, 3, mx, my, _w + _pd * 2, _h + _pd * 2); draw_sprite_stretched(THEME.textbox, 0, mx, my, _w + _pd * 2, _h + _pd * 2); @@ -152,8 +152,8 @@ function MetaDataManager() constructor { _h += th; } - var mx = min(mouse_mx + _pd * 2, WIN_W - (_w + _pd * 2)); - var my = min(mouse_my + _pd * 2, WIN_H - (_h + _pd * 2)); + var mx = min(__mouse_tx + _pd * 2, __win_tw - (_w + _pd * 2)); + var my = min(__mouse_ty + _pd * 2, __win_th - (_h + _pd * 2)); //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index 1e16951d2..b04115941 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -3295,8 +3295,8 @@ function Panel_Graph_Drop_tooltip(panel) constructor { var tw = max(w1, w2); var th = h1 + ui(8) + h2; - var mx = min(mouse_mxs + ui(16), WIN_W - (tw + ui(16))); - var my = min(mouse_mys + ui(16), WIN_H - (th + ui(16))); + var mx = min(__mouse_tx + ui(16), __win_tw - (tw + ui(16))); + var my = min(__mouse_ty + ui(16), __win_th - (th + ui(16))); draw_sprite_stretched(THEME.textbox, 3, mx, my, tw + ui(16), th + ui(16)); draw_sprite_stretched(THEME.textbox, 0, mx, my, tw + ui(16), th + ui(16)); diff --git a/scripts/preferences/preferences.gml b/scripts/preferences/preferences.gml index 2dd9a95af..ea7802aee 100644 --- a/scripts/preferences/preferences.gml +++ b/scripts/preferences/preferences.gml @@ -386,5 +386,11 @@ var grav = struct_try_get(PREFERENCES, "physics_gravity", [ 0, 10 ]); physics_world_gravity(array_safe_get_fast(grav, 0, 0), array_safe_get_fast(grav, 1, 10)); + + if(PREFERENCES.multi_window) { + var _cfg = winwin_config_ext("", winwin_kind_borderless, true, false, winwin_main); + _cfg.clickthrough = true; + TOOLTIP_WINDOW = winwin_create(0, 0, display_get_width(), display_get_height(), _cfg); + } } #endregion diff --git a/scripts/tooltip_hotkey/tooltip_hotkey.gml b/scripts/tooltip_hotkey/tooltip_hotkey.gml index 589a30abf..e8aafa8e9 100644 --- a/scripts/tooltip_hotkey/tooltip_hotkey.gml +++ b/scripts/tooltip_hotkey/tooltip_hotkey.gml @@ -15,11 +15,11 @@ function tooltipHotkey(text, context = "", name = "") constructor { draw_set_font(f_p1); var _w2 = string_width(keyStr); - var tw = min(WIN_W - ui(32), _w1 + ui(24) + _w2); + var tw = min(__win_tw - ui(32), _w1 + ui(24) + _w2); var th = string_height_ext(text, -1, tw); - var mx = min(mouse_mx + ui(16), WIN_W - (tw + ui(16))); - var my = min(mouse_my + ui(16), WIN_H - (th + ui(16))); + var mx = min(__mouse_tx + ui(16), __win_tw - (tw + ui(16))); + var my = min(__mouse_ty + ui(16), __win_th - (th + ui(16))); draw_sprite_stretched(THEME.textbox, 3, mx, my, tw + ui(16), th + ui(16)); draw_sprite_stretched(THEME.textbox, 0, mx, my, tw + ui(16), th + ui(16)); @@ -57,9 +57,9 @@ function tooltipHotkey_assign(text, hotkey = "") constructor { th += string_height(_ts); } - var tw = min(WIN_W - ui(32), _w1 + ui(24) + _w2); - var mx = min(mouse_mx + ui(16), WIN_W - (tw + ui(16))); - var my = min(mouse_my + ui(16), WIN_H - (th + ui(16))); + var tw = min(__win_tw - ui(32), _w1 + ui(24) + _w2); + var mx = min(__mouse_tx + ui(16), __win_tw - (tw + ui(16))); + var my = min(__mouse_ty + ui(16), __win_th - (th + ui(16))); draw_sprite_stretched(THEME.textbox, 3, mx, my, tw + ui(16), th + ui(16)); draw_sprite_stretched(THEME.textbox, 0, mx, my, tw + ui(16), th + ui(16)); diff --git a/scripts/tooltip_selector_object/tooltip_selector_object.gml b/scripts/tooltip_selector_object/tooltip_selector_object.gml index a8610193f..b4b18dda2 100644 --- a/scripts/tooltip_selector_object/tooltip_selector_object.gml +++ b/scripts/tooltip_selector_object/tooltip_selector_object.gml @@ -19,8 +19,8 @@ function tooltipSelector(title, data, index = 0) constructor { for( var i = 0, n = array_length(data); i < n; i++ ) _w = max(_w, ui(8 + 16) + string_width(data[i])); - var mx = min(mouse_mx + ui(16), WIN_W - (_w + ui(16) + ui(4))); - var my = min(mouse_my + ui(16), WIN_H - (_h + ui(16) + ui(4))); + var mx = min(__mouse_tx + ui(16), __win_tw - (_w + ui(16) + ui(4))); + var my = min(__mouse_ty + ui(16), __win_th - (_h + ui(16) + ui(4))); draw_sprite_stretched(THEME.textbox, 3, mx, my, _w + ui(16), _h + ui(16)); draw_sprite_stretched(THEME.textbox, 0, mx, my, _w + ui(16), _h + ui(16));