/* ui/tooltip.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "ui/tooltip.h" #include "ui/ui.h" #include "ui/paint.h" #include namespace ui { Tooltip *Tooltip::tooltip_global = nullptr; Tooltip::Tooltip(Widget *parent) : Label(parent) { set_label("tooltip"); set_alignment(AlignCenter); set_background(true); set_visible(false); } Tooltip::~Tooltip() { } void Tooltip::resize() { set_size(font()->width() * text().size() + UI::padding, font()->height() + UI::padding); } void Tooltip::draw_background() { Paint::draw_material(global_location(), size(), "ui/window"); } void Tooltip::draw() { if (tooltip_global != this) { hide(); } else { Label::draw(); } } void Tooltip::show() { if ((tooltip_global != nullptr) && (tooltip_global != this)) { tooltip_global->hide(); } tooltip_global = this; event_resize(); Label::show(); } void Tooltip::hide() { if (tooltip_global == this) { tooltip_global = nullptr; } Label::hide(); } void Tooltip::event_draw() { } void Tooltip::event_draw_global() { if (tooltip_global && tooltip_global->visible()) { if (tooltip_global->background()) tooltip_global->draw_background(); if (tooltip_global->border()) tooltip_global->draw_border(); tooltip_global->draw(); if (debug()) tooltip_global->draw_debug(); } } }