From 903faae51f40fd417881cb7f3c4c7bc7d8a26438 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Tue, 13 Feb 2024 17:58:43 +0800 Subject: [PATCH] SettingsCocoa // Lock dimensions for descriptions and titles. --- .../VwrSettingsPaneCocoaBehavior.swift | 20 ++++++++++--------- .../VwrSettingsPaneCocoaCandidates.swift | 4 ++-- .../VwrSettingsPaneCocoaCassette.swift | 4 ++-- .../VwrSettingsPaneCocoaDictionary.swift | 12 +++++------ .../VwrSettingsPaneCocoaGeneral.swift | 2 +- .../VwrSettingsPaneCocoaOutput.swift | 4 ++-- .../VwrSettingsPaneCocoaPhrases.swift | 7 ++++--- .../UserDef/UserDefRenderableCocoa.swift | 13 +++++++++--- 8 files changed, 38 insertions(+), 28 deletions(-) diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaBehavior.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaBehavior.swift index 4b5c69a4..57f21f31 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaBehavior.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaBehavior.swift @@ -55,7 +55,7 @@ public extension SettingsPanesCocoa { } UserDef.kAlwaysShowTooltipTextsHorizontally.render(fixWidth: contentWidth) if Date.isTodayTheDate(from: 0401) { - UserDef.kShouldNotFartInLieuOfBeep.render { renderable in + UserDef.kShouldNotFartInLieuOfBeep.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.onFartControlChange(_:)) } @@ -69,14 +69,16 @@ public extension SettingsPanesCocoa { UserDef.kShareAlphanumericalModeStatusAcrossClients.render(fixWidth: contentWidth) if #available(macOS 10.15, *) { NSStackView.build(.vertical) { - UserDef.kTogglingAlphanumericalModeWithLShift.render { renderable in - renderable.currentControl?.target = self - renderable.currentControl?.action = #selector(self.syncShiftKeyUpChecker(_:)) - } - UserDef.kTogglingAlphanumericalModeWithRShift.render { renderable in - renderable.currentControl?.target = self - renderable.currentControl?.action = #selector(self.syncShiftKeyUpChecker(_:)) - } + UserDef.kTogglingAlphanumericalModeWithLShift + .render(fixWidth: contentWidth) { renderable in + renderable.currentControl?.target = self + renderable.currentControl?.action = #selector(self.syncShiftKeyUpChecker(_:)) + } + UserDef.kTogglingAlphanumericalModeWithRShift + .render(fixWidth: contentWidth) { renderable in + renderable.currentControl?.target = self + renderable.currentControl?.action = #selector(self.syncShiftKeyUpChecker(_:)) + } var strOSReq = " " strOSReq += String( format: "This feature requires macOS %@ and above.".localized, arguments: ["10.15"] diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCandidates.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCandidates.swift index 5c1cda26..7f43ee06 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCandidates.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCandidates.swift @@ -29,7 +29,7 @@ public extension SettingsPanesCocoa { NSTabView.TabPage(title: "A") { NSStackView.buildSection(width: contentWidth) { UserDef.kUseHorizontalCandidateList.render(fixWidth: contentWidth) - UserDef.kCandidateListTextSize.render { renderable in + UserDef.kCandidateListTextSize.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.candidateFontSizeDidSet(_:)) } @@ -41,7 +41,7 @@ public extension SettingsPanesCocoa { } NSTabView.TabPage(title: "B") { NSStackView.buildSection(width: contentWidth) { - UserDef.kCandidateKeys.render { renderable in + UserDef.kCandidateKeys.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.candidateKeysDidSet(_:)) renderable.currentControl?.alignment = .right diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCassette.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCassette.swift index d7cdb516..6c45491c 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCassette.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaCassette.swift @@ -27,11 +27,11 @@ public extension SettingsPanesCocoa { var body: NSView? { NSStackView.build(.vertical, insets: .new(all: 14)) { NSStackView.buildSection(width: contentWidth) { - UserDef.kCassettePath.render { renderable in + UserDef.kCassettePath.render(fixWidth: contentWidth) { renderable in renderable.currentControl = self.pctCassetteFilePath renderable.mainViewOverride = self.pathControlMainView } - UserDef.kCassetteEnabled.render { renderable in + UserDef.kCassetteEnabled.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.cassetteEnabledToggled(_:)) } diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaDictionary.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaDictionary.swift index 69d83d5c..6af06b36 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaDictionary.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaDictionary.swift @@ -27,12 +27,12 @@ public extension SettingsPanesCocoa { var body: NSView? { NSStackView.build(.vertical, insets: .new(all: 14)) { NSStackView.buildSection(width: contentWidth) { - UserDef.kUserDataFolderSpecified.render { renderable in + UserDef.kUserDataFolderSpecified.render(fixWidth: contentWidth) { renderable in renderable.currentControl = self.pctUserDictionaryFolder renderable.mainViewOverride = self.pathControlMainView } NSStackView.build(.vertical) { - UserDef.kShouldAutoReloadUserDataFiles.render { renderable in + UserDef.kShouldAutoReloadUserDataFiles.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.lmmgrInitUserLMsWhenShould(_:)) } @@ -40,20 +40,20 @@ public extension SettingsPanesCocoa { } }?.boxed() NSStackView.buildSection(width: contentWidth) { - UserDef.kUseExternalFactoryDict.render { renderable in + UserDef.kUseExternalFactoryDict.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.lmmgrConnectCoreDB(_:)) } UserDef.kFetchSuggestionsFromUserOverrideModel.render(fixWidth: contentWidth) - UserDef.kCNS11643Enabled.render { renderable in + UserDef.kCNS11643Enabled.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.lmmgrSyncLMPrefs(_:)) } - UserDef.kSymbolInputEnabled.render { renderable in + UserDef.kSymbolInputEnabled.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.lmmgrSyncLMPrefs(_:)) } - UserDef.kPhraseReplacementEnabled.render { renderable in + UserDef.kPhraseReplacementEnabled.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.lmmgrSyncLMPrefsWithReplacementTable(_:)) } diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaGeneral.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaGeneral.swift index 5c6dc4f3..658b6088 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaGeneral.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaGeneral.swift @@ -34,7 +34,7 @@ public extension SettingsPanesCocoa { strNotice += "\n\u{2022} " strNotice += "Note: The “Delete ⌫” key on Mac keyboard is named as “BackSpace ⌫” here in order to distinguish the real “Delete ⌦” key from full-sized desktop keyboards. If you want to use the real “Delete ⌦” key on a Mac keyboard with no numpad equipped, you have to press “Fn+⌫” instead.".localized strNotice.makeNSLabel(descriptive: true, fixWidth: contentWidth) - UserDef.kAppleLanguages.render { renderable in + UserDef.kAppleLanguages.render(fixWidth: contentWidth) { renderable in renderable.currentControl = self.btnLangSelector } }?.boxed() diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaOutput.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaOutput.swift index 3c954bf1..f8ca4054 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaOutput.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaOutput.swift @@ -24,11 +24,11 @@ public extension SettingsPanesCocoa { var body: NSView? { NSStackView.build(.vertical, insets: .new(all: 14)) { NSStackView.buildSection(width: contentWidth) { - UserDef.kChineseConversionEnabled.render { renderable in + UserDef.kChineseConversionEnabled.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.sanityCheckKangXi(_:)) } - UserDef.kShiftJISShinjitaiOutputEnabled.render { renderable in + UserDef.kShiftJISShinjitaiOutputEnabled.render(fixWidth: contentWidth) { renderable in renderable.currentControl?.target = self renderable.currentControl?.action = #selector(self.sanityCheckJIS(_:)) } diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaPhrases.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaPhrases.swift index 32161555..ec9646ea 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaPhrases.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/VwrSettingsPaneCocoaPhrases.swift @@ -81,9 +81,10 @@ public extension SettingsPanesCocoa { txtPEField3.makeSimpleConstraint(.width, relation: .greaterThanOrEqual, value: 90) btnPEAdd } - UserDef.kPhraseEditorAutoReloadExternalModifications.render { renderable in - renderable.tinySize = true - } + UserDef.kPhraseEditorAutoReloadExternalModifications + .render(fixWidth: contentWidth) { renderable in + renderable.tinySize = true + } } }?.boxed() NSView().makeSimpleConstraint(.height, relation: .equal, value: NSFont.systemFontSize) diff --git a/Packages/vChewing_Shared/Sources/Shared/UserDef/UserDefRenderableCocoa.swift b/Packages/vChewing_Shared/Sources/Shared/UserDef/UserDefRenderableCocoa.swift index 854f52b1..dd7e7302 100644 --- a/Packages/vChewing_Shared/Sources/Shared/UserDef/UserDefRenderableCocoa.swift +++ b/Packages/vChewing_Shared/Sources/Shared/UserDef/UserDefRenderableCocoa.swift @@ -108,6 +108,11 @@ public extension UserDefRenderableCocoa { textField.font = NSFont.systemFont(ofSize: NSFont.smallSystemFontSize) } textField.preferredMaxLayoutWidth = fixedWidth ?? 0 + if let fixedWidth = fixedWidth { + textField.makeSimpleConstraint(.width, relation: .lessThanOrEqual, value: fixedWidth) + textField.sizeToFit() + textField.makeSimpleConstraint(.height, relation: .lessThanOrEqual, value: textField.fittingSize.height) + } return textField } @@ -130,10 +135,12 @@ public extension UserDefRenderableCocoa { } control } - if let fixedWidth = fixedWidth { + if let fixedWidth = fixedWidth, let textLabel = textLabel { let specifiedWidth = fixedWidth - controlWidth - NSFont.systemFontSize - textLabel?.preferredMaxLayoutWidth = specifiedWidth - textLabel?.makeSimpleConstraint(.width, relation: .lessThanOrEqual, value: specifiedWidth) + textLabel.preferredMaxLayoutWidth = specifiedWidth + textLabel.makeSimpleConstraint(.width, relation: .lessThanOrEqual, value: specifiedWidth) + textLabel.sizeToFit() + textLabel.makeSimpleConstraint(.height, relation: .lessThanOrEqual, value: textLabel.fittingSize.height) } textLabel?.sizeToFit() return result