// DragonX Wallet - ImGui Edition // Copyright 2024-2026 The Hush Developers // Released under the GPLv3 // // App-wide tooltip styling: a compact (small padding) and slightly-translucent tooltip. ImGui has // no tooltip-specific padding (tooltips inherit WindowPadding, shared with every window) and PopupBg // is shared with menus/combos, so we can't restyle tooltips via the global style without side // effects. Instead, every tooltip goes through these wrappers, which scope the style to the tooltip: // dragonx::ui::material::Tooltip("fmt", ...); // replaces ImGui::SetTooltip // if (material::BeginTooltip()) { ...; material::EndTooltip(); } // replaces ImGui::Begin/EndTooltip #pragma once #include #include "imgui.h" #include "../layout.h" namespace dragonx { namespace ui { namespace material { // Scope tooltip-only styling: small padding + a slightly-transparent background. inline void PushTooltipStyle() { const float s = Layout::dpiScale(); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(8.0f * s, 4.0f * s)); ImVec4 bg = ImGui::GetStyle().Colors[ImGuiCol_PopupBg]; bg.w = 0.85f; // slightly transparent (the global PopupBg is ~0.98 opaque) ImGui::PushStyleColor(ImGuiCol_PopupBg, bg); } inline void PopTooltipStyle() { ImGui::PopStyleColor(); ImGui::PopStyleVar(); } // Drop-in replacement for ImGui::SetTooltip (same printf-style signature). (No IM_FMTARGS: GCC // rejects the format attribute on an inline definition; call sites already passed SetTooltip's check.) inline void Tooltip(const char* fmt, ...) { PushTooltipStyle(); va_list args; va_start(args, fmt); ImGui::SetTooltipV(fmt, args); va_end(args); PopTooltipStyle(); } // Drop-in replacements for ImGui::BeginTooltip / ImGui::EndTooltip (must be paired, as before). inline bool BeginTooltip() { PushTooltipStyle(); return ImGui::BeginTooltip(); } inline void EndTooltip() { ImGui::EndTooltip(); PopTooltipStyle(); } } // namespace material } // namespace ui } // namespace dragonx