package app

import "strings"

type macNativeWindowControlState struct {
	ShowNativeButtons     bool
	UseTitledWindow       bool
	UseFullSizeContent    bool
	HideWindowTitle       bool
	TransparentTitlebar   bool
	AllowNativeFullscreen bool
}

func resolveMacNativeWindowControlState(enabled bool) macNativeWindowControlState {
	if enabled {
		return macNativeWindowControlState{
			ShowNativeButtons:     true,
			UseTitledWindow:       true,
			UseFullSizeContent:    true,
			HideWindowTitle:       true,
			TransparentTitlebar:   true,
			AllowNativeFullscreen: true,
		}
	}

	return macNativeWindowControlState{
		ShowNativeButtons:     false,
		UseTitledWindow:       false,
		UseFullSizeContent:    false,
		HideWindowTitle:       false,
		TransparentTitlebar:   false,
		AllowNativeFullscreen: false,
	}
}

type macWindowIdentity struct {
	ClassName         string
	DelegateClassName string
	Title             string
}

// shouldApplyMacNativeWindowStyle 只允许对主 WailsWindow 应用原生标题栏/全屏能力，
// 避免误伤输入法候选窗、全屏过渡窗等系统辅助窗口。
func shouldApplyMacNativeWindowStyle(identity macWindowIdentity) bool {
	className := strings.TrimSpace(identity.ClassName)
	delegateClassName := strings.TrimSpace(identity.DelegateClassName)
	title := strings.TrimSpace(identity.Title)

	if className == "WailsWindow" || delegateClassName == "WindowDelegate" {
		return true
	}

	// 兜底只接受明确命名的主应用窗口，避免把无标题系统辅助窗口纳入样式改写范围。
	return title == "GoNavi"
}
