Files
CMLeonOS/Gui/UILib/ToolTip.cs

57 lines
1.6 KiB
C#
Raw Normal View History

2026-03-26 20:13:29 +08:00
using System;
using System.Drawing;
namespace CMLeonOS.Gui.UILib
{
internal class ToolTip
{
internal ToolTip(Process process, WindowManager wm)
{
this.process = process;
this.wm = wm;
}
private readonly Process process;
private readonly WindowManager wm;
private Window window;
internal void Show(Window anchor, string text, int offsetX = 0, int offsetY = 0)
{
Hide();
string message = text ?? string.Empty;
int width = Math.Max(80, (message.Length * 8) + 12);
int height = 24;
int x = anchor.ScreenX + offsetX;
int y = anchor.ScreenY + anchor.Height + 6 + offsetY;
if (x + width > wm.ScreenWidth)
{
x = (int)wm.ScreenWidth - width - 6;
}
if (y + height > wm.ScreenHeight)
{
y = anchor.ScreenY - height - 6;
}
window = new Window(process, x, y, width, height);
window.Clear(Color.FromArgb(33, 39, 49));
window.DrawFilledRectangle(0, 0, width, height, Color.FromArgb(33, 39, 49));
window.DrawRectangle(0, 0, width, height, UITheme.SurfaceBorder);
window.DrawString(message, Color.White, 6, 4);
wm.AddWindow(window);
wm.Update(window);
}
internal void Hide()
{
if (window != null)
{
wm.RemoveWindow(window);
window = null;
}
}
}
}