From 87b13e66b123667db13c74739130584fb70f29e7 Mon Sep 17 00:00:00 2001 From: Fingercomp Date: Thu, 14 Aug 2025 19:15:53 +0300 Subject: [PATCH] Remove the window focusing hack --- src/main/scala/ocelot/desktop/ui/UiHandler.scala | 14 -------------- .../ocelot/desktop/ui/widget/window/Window.scala | 4 ++-- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/main/scala/ocelot/desktop/ui/UiHandler.scala b/src/main/scala/ocelot/desktop/ui/UiHandler.scala index df9d718..00ac4a0 100644 --- a/src/main/scala/ocelot/desktop/ui/UiHandler.scala +++ b/src/main/scala/ocelot/desktop/ui/UiHandler.scala @@ -501,11 +501,6 @@ object UiHandler extends Logging { for (mouseTarget <- mouseTarget) { dispatchCapturing(mouseTarget)(event) } - - // TODO: this should be done in the event capturing phase in [[Window]] itself. - for (mouseTarget <- mouseTarget if !mouseTarget.isInstanceOf[Window]) { - focusParentWindow(mouseTarget.parent) - } } else { dispatchEvent(hierarchy)(Capturing(event)) dispatchEvent(hierarchy.reverseIterator)(event) @@ -525,15 +520,6 @@ object UiHandler extends Logging { root.update() } - @tailrec - private def focusParentWindow(parent: Option[Widget]): Unit = { - parent match { - case Some(window: Window) => window.focus() - case Some(widget) => focusParentWindow(widget.parent) - case None => - } - } - private def updateWindowSizeAndPosition(): Unit = { val width = Display.getWidth val height = Display.getHeight diff --git a/src/main/scala/ocelot/desktop/ui/widget/window/Window.scala b/src/main/scala/ocelot/desktop/ui/widget/window/Window.scala index b7955b3..d94b0c7 100644 --- a/src/main/scala/ocelot/desktop/ui/widget/window/Window.scala +++ b/src/main/scala/ocelot/desktop/ui/widget/window/Window.scala @@ -4,7 +4,7 @@ import ocelot.desktop.Settings import ocelot.desktop.geometry.{Rect2D, Size2D, Vector2D} import ocelot.desktop.ui.UiHandler import ocelot.desktop.ui.event.handlers.MouseHandler -import ocelot.desktop.ui.event.{DragEvent, KeyEvent, MouseEvent} +import ocelot.desktop.ui.event.{Capturing, DragEvent, KeyEvent, MouseEvent} import ocelot.desktop.ui.widget.Widget import ocelot.desktop.util.Persistable import org.lwjgl.input.Keyboard @@ -30,7 +30,7 @@ trait Window extends Widget with Persistable with MouseHandler { override protected def receiveDragEvents: Boolean = true eventHandlers += { - case MouseEvent(MouseEvent.State.Pressed, _) => + case Capturing(MouseEvent(MouseEvent.State.Pressed, _)) => focus() case ev @ DragEvent(DragEvent.State.Start, MouseEvent.Button.Left, mousePos) =>