fun onMouseUp()

in sample/src/main/kotlin/org/jetbrains/desktop/sample/linux/SkikoCustomTitlebarLinux.kt [179:225]


    fun onMouseUp(
        event: Event.MouseUp,
        xdgDesktopSettings: XdgDesktopSettings,
        window: Window,
        windowState: WindowState,
    ): EventHandlerResult {
        val headerRect = LogicalRect(origin, size)
        val leftClickStartWindowButton = leftClickStartLocation?.let { leftClickStartLocation ->
            rectangles.firstOrNull { it.first.contains(leftClickStartLocation) }?.second
        }
        if (event.button == MouseButton.LEFT) {
            leftClickStartLocation = null
            isDragging = false
        }
        return if (headerRect.contains(event.locationInWindow)) {
            rectangles.firstOrNull { it.first.contains(event.locationInWindow) }?.second?.let { windowButton ->
                if (event.button == MouseButton.LEFT && leftClickStartWindowButton != windowButton) {
                    EventHandlerResult.Continue
                } else if ((windowButton == WindowButtonType.Title || windowButton == WindowButtonType.Spacer) &&
                    event.button == MouseButton.LEFT &&
                    handlePotentialDoubleClick(event.timestamp, xdgDesktopSettings.doubleClickInterval)
                ) {
                    executeTitlebarAction(
                        xdgDesktopSettings.actionDoubleClickTitlebar,
                        window,
                        event.locationInWindow,
                        windowState,
                    )
                    EventHandlerResult.Stop
                } else if (windowButton == WindowButtonType.Minimize && event.button == MouseButton.RIGHT) {
                    window.requestInternalActivationToken()
                    EventHandlerResult.Stop
                } else {
                    executeWindowAction(
                        windowButton,
                        event.button,
                        event.locationInWindow,
                        window,
                        xdgDesktopSettings,
                        windowState,
                    )
                }
            } ?: EventHandlerResult.Continue
        } else {
            EventHandlerResult.Continue
        }
    }