|
@@ -3069,17 +3069,16 @@ void ImGui::Render()
|
|
|
g.DrawDataBuilder.FlattenIntoSingleLayer();
|
|
|
|
|
|
// Draw software mouse cursor if requested
|
|
|
- if (g.IO.MouseDrawCursor)
|
|
|
+ ImVec2 offset, size, uv[4];
|
|
|
+ if (g.IO.MouseDrawCursor && g.IO.Fonts->GetMouseCursorTexData(g.MouseCursor, &offset, &size, &uv[0], &uv[2]))
|
|
|
{
|
|
|
- const ImGuiMouseCursorData& cursor_data = g.MouseCursorData[g.MouseCursor];
|
|
|
- const ImVec2 pos = g.IO.MousePos - cursor_data.HotOffset;
|
|
|
- const ImVec2 size = cursor_data.Size;
|
|
|
+ const ImVec2 pos = g.IO.MousePos - offset;
|
|
|
const ImTextureID tex_id = g.IO.Fonts->TexID;
|
|
|
g.OverlayDrawList.PushTextureID(tex_id);
|
|
|
- g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(1,0), pos+ImVec2(1,0) + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], IM_COL32(0,0,0,48)); // Shadow
|
|
|
- g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(2,0), pos+ImVec2(2,0) + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], IM_COL32(0,0,0,48)); // Shadow
|
|
|
- g.OverlayDrawList.AddImage(tex_id, pos, pos + size, cursor_data.TexUvMin[1], cursor_data.TexUvMax[1], IM_COL32(0,0,0,255)); // Black border
|
|
|
- g.OverlayDrawList.AddImage(tex_id, pos, pos + size, cursor_data.TexUvMin[0], cursor_data.TexUvMax[0], IM_COL32(255,255,255,255)); // White fill
|
|
|
+ g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(1,0), pos+ImVec2(1,0) + size, uv[2], uv[3], IM_COL32(0,0,0,48)); // Shadow
|
|
|
+ g.OverlayDrawList.AddImage(tex_id, pos+ImVec2(2,0), pos+ImVec2(2,0) + size, uv[2], uv[3], IM_COL32(0,0,0,48)); // Shadow
|
|
|
+ g.OverlayDrawList.AddImage(tex_id, pos, pos + size, uv[2], uv[3], IM_COL32(0,0,0,255)); // Black border
|
|
|
+ g.OverlayDrawList.AddImage(tex_id, pos, pos + size, uv[0], uv[1], IM_COL32(255,255,255,255)); // White fill
|
|
|
g.OverlayDrawList.PopTextureID();
|
|
|
}
|
|
|
if (!g.OverlayDrawList.VtxBuffer.empty())
|