IMEStateData // Disallow filtering single kanjis in .ofMarking() state.

This commit is contained in:
ShikiSuen 2023-03-05 13:24:26 +08:00
parent 4be3bca931
commit 3d8ad5423a
6 changed files with 25 additions and 10 deletions

View File

@ -103,7 +103,7 @@ public struct IMEStateData: IMEStateDataProtocol {
]
)
public var isFilterable: Bool {
markedTargetExists ? isMarkedLengthValid : false
markedTargetExists ? (isMarkedLengthValid && markedRange.count > 1) : false
}
public var isMarkedLengthValid: Bool {
@ -232,30 +232,40 @@ public extension IMEStateData {
let text = pair.1
let readingDisplay = readingThreadForDisplay
if markedRange.count < IMEStateData.allowedMarkLengthRange.lowerBound {
if markedRange.count < Self.allowedMarkLengthRange.lowerBound {
tooltipColorState = .denialInsufficiency
return String(
format: NSLocalizedString(
"\"%@\" length must ≥ 2 for a user phrase.", comment: ""
) + "\n" + readingDisplay, text
)
} else if markedRange.count > IMEStateData.allowedMarkLengthRange.upperBound {
} else if markedRange.count > Self.allowedMarkLengthRange.upperBound {
tooltipColorState = .denialOverflow
return String(
format: NSLocalizedString(
"\"%@\" length should ≤ %d for a user phrase.", comment: ""
) + "\n" + readingDisplay, text, IMEStateData.allowedMarkLengthRange.upperBound
) + "\n" + readingDisplay, text, Self.allowedMarkLengthRange.upperBound
)
}
if markedTargetExists {
tooltipColorState = .prompt
return String(
format: NSLocalizedString(
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude.",
comment: ""
) + "\n" + readingDisplay, text
)
switch markedRange.count {
case 1:
return String(
format: NSLocalizedString(
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf.",
comment: ""
) + "\n" + readingDisplay, text
)
default:
return String(
format: NSLocalizedString(
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude.",
comment: ""
) + "\n" + readingDisplay, text
)
}
}
tooltipColorState = .normal
return String(

View File

@ -106,6 +106,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase.";
"\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase.";
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf." = "\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf.";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude.";
"Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…";
"Use Phrase Replacement" = "Use Phrase Replacement";

View File

@ -106,6 +106,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "\"%@\" length must ≥ 2 for a user phrase.";
"\"%@\" length should ≤ %d for a user phrase." = "\"%@\" length should ≤ %d for a user phrase.";
"\"%@\" selected. ENTER to add user phrase." = "\"%@\" selected. ENTER to add user phrase.";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf." = "\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf.";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude.";
"Edit Phrase Replacement Table…" = "Edit Phrase Replacement Table…";
"Use Phrase Replacement" = "Use Phrase Replacement";

View File

@ -106,6 +106,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」もう1つ文字のお選びを。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」文字数過剰で登録不可、%d 文字以内にして下さい。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」を ENTER で辞書に登録。";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf." = "「%@」は既存語彙:\n ENTER で最優先にし、SHIFT+COMMAND+ENTER で優先順位を下げる。";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」は既存語彙:\n ENTER で最優先にし、SHIFT+COMMAND+ENTER で優先順位を下げる;\n BackSpace 或いは Delete で排除。";
"Edit Phrase Replacement Table…" = "言葉置換表を編集…";
"Use Phrase Replacement" = "言葉置換機能";

View File

@ -106,6 +106,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字数不足以自订语汇。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字数超过 %d、无法自订。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自订语汇。";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf." = "「%@」已存在:\n 敲 Enter 以升权、敲 Shift+Command+Enter 以降权。";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」已存在:\n 敲 Enter 以升权、敲 Shift+Command+Enter 以降权;\n 敲 BackSpace 或 Delete 以排除。";
"Edit Phrase Replacement Table…" = "编辑语汇置换表…";
"Use Phrase Replacement" = "使用语汇置换";

View File

@ -106,6 +106,7 @@
"\"%@\" length must ≥ 2 for a user phrase." = "「%@」字數不足以自訂語彙。";
"\"%@\" length should ≤ %d for a user phrase." = "「%@」字數超過 %d、無法自訂。";
"\"%@\" selected. ENTER to add user phrase." = "「%@」敲 Enter 添入自訂語彙。";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf." = "「%@」已存在:\n 敲 Enter 以升權、敲 Shift+Command+Enter 以降權。";
"\"%@\" already exists:\n ENTER to boost, SHIFT+COMMAND+ENTER to nerf, \n BackSpace or Delete key to exclude." = "「%@」已存在:\n 敲 Enter 以升權、敲 Shift+Command+Enter 以降權;\n 敲 BackSpace 或 Delete 以排除。";
"Edit Phrase Replacement Table…" = "編輯語彙置換表…";
"Use Phrase Replacement" = "使用語彙置換";