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
}
}