// Text
WM_Render_DrawText(Window,
- ciMenu_LeftPadding, y,
+ ciMenu_LeftPadding, y+1,
w, ciMenu_ItemHeight,
gMenu_Font,
cMenu_LabelColour,
- item->Label
+ item->Label, -1
);
// Underline
if(item->UnderlineW)
{
WM_Render_FillRect(Window,
- ciMenu_LeftPadding + item->UnderlineX, y + ciMenu_FontHeight,
+ ciMenu_LeftPadding + item->UnderlineX, y + 1 + ciMenu_FontHeight,
item->UnderlineW, 1,
cMenu_LabelColour
);
w, ciMenu_ItemHeight,
gMenu_Font,
cMenu_ShortcutColour,
- item->Shortcut
+ item->Shortcut, -1
);
}
{
char tmp = item->Label[item->KeyOffset];
// Get width of preceding substring
- item->Label[item->KeyOffset] = '\0';
- WM_Render_GetTextDims(NULL, item->Label, &item->UnderlineX, NULL);
+ WM_Render_GetTextDims(NULL, item->Label, item->KeyOffset, &item->UnderlineX, NULL);
// Get the width of the underlined character
- // TODO: Fix for high UTF-8 characters
item->Label[item->KeyOffset] = tmp;
- tmp = item->Label[item->KeyOffset+1];
- item->Label[item->KeyOffset+1] = '\0';
+ // NOTE: 1 makes only one character be parsed, even if it is >1 byte long
WM_Render_GetTextDims(
- NULL, item->Label+item->KeyOffset,
+ NULL, item->Label+item->KeyOffset, 1,
&item->UnderlineW, NULL
);
item->Label[item->KeyOffset+1] = tmp;
}
// - Labels
- WM_Render_GetTextDims(NULL, item->Label, &item->LabelWidth, NULL);
+ WM_Render_GetTextDims(NULL, item->Label, -1, &item->LabelWidth, NULL);
if(item->Shortcut)
- WM_Render_GetTextDims(NULL, item->Shortcut, &item->ShortcutWidth, NULL);
+ WM_Render_GetTextDims(NULL, item->Shortcut, -1, &item->ShortcutWidth, NULL);
else
item->ShortcutWidth = 0;