diff --git a/flumi/Scripts/Browser/Tab.gd b/flumi/Scripts/Browser/Tab.gd index 9fd22db..e454201 100644 --- a/flumi/Scripts/Browser/Tab.gd +++ b/flumi/Scripts/Browser/Tab.gd @@ -60,6 +60,25 @@ func _process(_delta): else: close_button.add_theme_stylebox_override("normal", CLOSE_BUTTON_NORMAL) +func _input(event): + # make sure we are hovering over the tab + if mouse_over_tab and event.is_action_pressed("CloseTabMouse"): + var close_tween = create_tween() + close_tween.set_ease(Tween.EASE_IN) + close_tween.set_trans(Tween.TRANS_CUBIC) + + animate_tab_close(close_tween) + + await close_tween.finished + tab_closed.emit() + queue_free() + +func animate_tab_close(tween: Tween) -> void: + tween.parallel().tween_property(self, "custom_minimum_size:x", 0.0, 0.15) + tween.parallel().tween_property(self, "size:x", 0.0, 0.15) + tween.parallel().tween_property(button, "custom_minimum_size:x", 0.0, 0.15) + tween.parallel().tween_property(button, "size:x", 0.0, 0.15) + func set_title(title: String) -> void: button.text = title button.set_meta("original_text", title) @@ -231,10 +250,7 @@ func _on_close_button_pressed() -> void: close_tween.set_ease(Tween.EASE_IN) close_tween.set_trans(Tween.TRANS_CUBIC) - close_tween.parallel().tween_property(self, "custom_minimum_size:x", 0.0, 0.15) - close_tween.parallel().tween_property(self, "size:x", 0.0, 0.15) - close_tween.parallel().tween_property(button, "custom_minimum_size:x", 0.0, 0.15) - close_tween.parallel().tween_property(button, "size:x", 0.0, 0.15) + animate_tab_close(close_tween) await close_tween.finished tab_closed.emit() diff --git a/flumi/project.godot b/flumi/project.godot index 6dd1a5c..eceb340 100644 --- a/flumi/project.godot +++ b/flumi/project.godot @@ -85,3 +85,8 @@ ReloadPage={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } +CloseTabMouse={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":4,"position":Vector2(134, 20),"global_position":Vector2(143, 68),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +}