mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-01-02 13:53:40 +01:00
Ensure borders on IME mode foreground icon
This commit is contained in:
parent
01b45c98ac
commit
2c3139d8b7
3 changed files with 59 additions and 10 deletions
|
|
@ -611,29 +611,51 @@ public enum SeIconChar
|
||||||
QuestRepeatable = 0xE0BF,
|
QuestRepeatable = 0xE0BF,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The IME hiragana icon unicode character.
|
/// The [あ] character indicating that the Japanese IME is in full-width Hiragana input mode.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Half-width Hiragana exists as a Windows API constant, but the feature is unused, or at least unexposed to the end user via the IME.
|
||||||
|
/// </remarks>
|
||||||
ImeHiragana = 0xE020,
|
ImeHiragana = 0xE020,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The IME katakana icon unicode character.
|
/// The [ア] character indicating that the Japanese IME is in full-width Katakana input mode.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ImeKatakana = 0xE021,
|
ImeKatakana = 0xE021,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The IME alphanumeric icon unicode character.
|
/// The [A] character indicating that Japanese or Korean IME is in full-width Latin character input mode.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ImeAlphanumeric = 0xE022,
|
ImeAlphanumeric = 0xE022,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The IME katakana half-width icon unicode character.
|
/// The [_ア] character indicating that the Japanese IME is in half-width Katakana input mode.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ImeKatakanaHalfWidth = 0xE023,
|
ImeKatakanaHalfWidth = 0xE023,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The IME alphanumeric half-width icon unicode character.
|
/// The [_A] character indicating that Japanese or Korean IME is in half-width Latin character input mode.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ImeAlphanumericHalfWidth = 0xE024,
|
ImeAlphanumericHalfWidth = 0xE024,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The [가] character indicating that the Korean IME is in Hangul input mode.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Use <see cref="ImeAlphanumeric"/> and <see cref="ImeAlphanumericHalfWidth"/> for alphanumeric input mode,
|
||||||
|
/// toggled via Alt+=.
|
||||||
|
/// </remarks>
|
||||||
|
ImeKoreanHangul = 0xE025,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The [中] character indicating that the Chinese IME is in Han character input mode.
|
||||||
|
/// </summary>
|
||||||
|
ImeChineseHan = 0xE026,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The [英] character indicating that the Chinese IME is in Latin character input mode.
|
||||||
|
/// </summary>
|
||||||
|
ImeChineseLatin = 0xE027,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The instance (1) icon unicode character.
|
/// The instance (1) icon unicode character.
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ using static TerraFX.Interop.Windows.Windows;
|
||||||
namespace Dalamud.Interface.Internal;
|
namespace Dalamud.Interface.Internal;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This class handles IME for non-English users.
|
/// This class handles CJK IME.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ServiceManager.EarlyLoadedService]
|
[ServiceManager.EarlyLoadedService]
|
||||||
internal sealed unsafe class DalamudIme : IDisposable, IServiceType
|
internal sealed unsafe class DalamudIme : IDisposable, IServiceType
|
||||||
|
|
@ -251,7 +251,7 @@ internal sealed unsafe class DalamudIme : IDisposable, IServiceType
|
||||||
{
|
{
|
||||||
case LANG.LANG_KOREAN:
|
case LANG.LANG_KOREAN:
|
||||||
if (native)
|
if (native)
|
||||||
this.InputModeIcon = "\uE025";
|
this.InputModeIcon = $"{(char)SeIconChar.ImeKoreanHangul}";
|
||||||
else if (fullwidth)
|
else if (fullwidth)
|
||||||
this.InputModeIcon = $"{(char)SeIconChar.ImeAlphanumeric}";
|
this.InputModeIcon = $"{(char)SeIconChar.ImeAlphanumeric}";
|
||||||
else
|
else
|
||||||
|
|
@ -274,11 +274,10 @@ internal sealed unsafe class DalamudIme : IDisposable, IServiceType
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LANG.LANG_CHINESE:
|
case LANG.LANG_CHINESE:
|
||||||
// TODO: does Chinese IME also need "open" check?
|
|
||||||
if (native)
|
if (native)
|
||||||
this.InputModeIcon = "\uE026";
|
this.InputModeIcon = $"{(char)SeIconChar.ImeChineseHan}";
|
||||||
else
|
else
|
||||||
this.InputModeIcon = "\uE027";
|
this.InputModeIcon = $"{(char)SeIconChar.ImeChineseLatin}";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,20 @@ internal unsafe class DalamudImeWindow : Window
|
||||||
|
|
||||||
if (!expandUpward && drawIme)
|
if (!expandUpward && drawIme)
|
||||||
{
|
{
|
||||||
|
for (var dx = -2; dx <= 2; dx++)
|
||||||
|
{
|
||||||
|
for (var dy = -2; dy <= 2; dy++)
|
||||||
|
{
|
||||||
|
if (dx != 0 || dy != 0)
|
||||||
|
{
|
||||||
|
drawList.AddText(
|
||||||
|
cursor + new Vector2(dx, dy),
|
||||||
|
ImGui.GetColorU32(ImGuiCol.WindowBg),
|
||||||
|
ime.InputModeIcon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
drawList.AddText(cursor, ImGui.GetColorU32(ImGuiCol.Text), ime.InputModeIcon);
|
drawList.AddText(cursor, ImGui.GetColorU32(ImGuiCol.Text), ime.InputModeIcon);
|
||||||
cursor.Y += candTextSize.Y + spaceY;
|
cursor.Y += candTextSize.Y + spaceY;
|
||||||
}
|
}
|
||||||
|
|
@ -179,6 +193,20 @@ internal unsafe class DalamudImeWindow : Window
|
||||||
|
|
||||||
if (expandUpward && drawIme)
|
if (expandUpward && drawIme)
|
||||||
{
|
{
|
||||||
|
for (var dx = -2; dx <= 2; dx++)
|
||||||
|
{
|
||||||
|
for (var dy = -2; dy <= 2; dy++)
|
||||||
|
{
|
||||||
|
if (dx != 0 || dy != 0)
|
||||||
|
{
|
||||||
|
drawList.AddText(
|
||||||
|
cursor + new Vector2(dx, dy),
|
||||||
|
ImGui.GetColorU32(ImGuiCol.WindowBg),
|
||||||
|
ime.InputModeIcon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
drawList.AddText(cursor, ImGui.GetColorU32(ImGuiCol.Text), ime.InputModeIcon);
|
drawList.AddText(cursor, ImGui.GetColorU32(ImGuiCol.Text), ime.InputModeIcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue