Skip to content

Commit 05d76c7

Browse files
committed
feat: allow dragging mouse w/ held button over multiple layer buttons
1 parent a820105 commit 05d76c7

3 files changed

Lines changed: 14 additions & 1 deletion

File tree

scripts/control_create/control_create.gml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,8 @@ function control_create() {
381381
insselect = -1
382382
mouse_xprev = mouse_x
383383
mouse_yprev = mouse_y
384+
mousepress_x = -1
385+
mousepress_y = -1
384386
asso_nbs = 1
385387
asso_midi = 0
386388
asso_sch = 0

scripts/control_draw/control_draw.gml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ function control_draw() {
2727
else window_reset_icon_raw(window_handle())
2828
}
2929

30+
if (mouse_check_button_pressed(mb_left)) {
31+
mousepress_x = mouse_x
32+
mousepress_y = mouse_y
33+
}
34+
3035
if (!mouseover) curs = cr_default
3136
showmenu = 0
3237
cursmarker = 0

scripts/draw_layericon/draw_layericon.gml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ function draw_layericon(argument0, argument1, argument2, argument3, argument4, a
1212

1313
popup_set(xx, yy, 16, 16, str)
1414
a = (mouse_rectangle(xx, yy, 16, 16) && window = 0 && locked = 0 && sb_drag = -1)
15+
16+
var mouse_in_prev = (mouse_xprev >= xx && mouse_yprev >= yy && mouse_xprev <= xx + 16 && mouse_yprev <= yy + 16)
17+
var mouse_entered = (mouse_check_button(mb_left) && (!mouse_in_prev && a))
18+
//var mousepress_started_in = (mousepress_x >= xx && mousepress_y >= yy && mousepress_x <= xx + 16 && mousepress_y <= yy + 16)
19+
//var mouse_pressed_and_moved_away = false // mousepress_started_in && (mouse_in_prev && !a && mouse_check_button(mb_left))
20+
1521
a += ((mouse_check_button(mb_left) || mouse_check_button_released(mb_left)) && a)
1622
if (pressed = 1) {
1723
if (!hires || theme != 3) draw_sprite(spr_frame4, 2 + 3 * theme, xx, yy)
@@ -31,7 +37,7 @@ function draw_layericon(argument0, argument1, argument2, argument3, argument4, a
3137
draw_sprite_ext(spr_layericons_f_hires, i - locked + 18, xx + (a = 2 || pressed = 1), yy + (a = 2 || pressed = 1), 0.25, 0.25, 0, accent[6 - 2 * !fdark], 1)
3238
}
3339
}
34-
return (a && mouse_check_button_released(mb_left))
40+
return (mouse_entered || (a && mouse_check_button_pressed(mb_left)))
3541

3642

3743
}

0 commit comments

Comments
 (0)