From 206a58f9996a36693b1e73460191b08db1db0327 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 26 Oct 2018 21:51:44 +0200 Subject: Change window notification style --- src/WindowNotification.cpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/WindowNotification.cpp b/src/WindowNotification.cpp index acb47da..9e17108 100644 --- a/src/WindowNotification.cpp +++ b/src/WindowNotification.cpp @@ -1,34 +1,46 @@ #include "../include/WindowNotification.hpp" #include -static Gtk::Overlay *overlay = nullptr; -static Gtk::Label *label = nullptr; - namespace dchat { WindowNotification::WindowNotification() { label.set_line_wrap(true); label.set_line_wrap_mode(Pango::WRAP_WORD_CHAR); - label.set_halign(Gtk::ALIGN_START); + label.set_halign(Gtk::ALIGN_CENTER); revealer.add(label); - add(revealer); + revealer.set_hexpand(true); + + Gtk::Grid *grid = Gtk::manage(new Gtk::Grid()); + grid->add(revealer); + grid->get_style_context()->add_class("window-notification"); + + add(*grid); set_valign(Gtk::ALIGN_START); - set_halign(Gtk::ALIGN_CENTER); - revealer.get_style_context()->add_class("window-notification"); + set_hexpand(true); show_all(); + set_visible(false); } void WindowNotification::show(const Glib::ustring &text) { hideTimer.disconnect(); + visibilityTimer.disconnect(); label.set_text(text); + set_visible(true); revealer.set_reveal_child(true); - int showTime = (int)std::max(1.0, (double)text.size() * 0.1); - hideTimer = Glib::signal_timeout().connect_seconds([this] + int showTime = (int)std::max(1.0, (double)text.size() * 0.1) * 1000; + + hideTimer = Glib::signal_timeout().connect([this] { revealer.set_reveal_child(false); return false; }, showTime); + + visibilityTimer = Glib::signal_timeout().connect([this] + { + set_visible(false); + return false; + }, showTime + revealer.get_transition_duration()); } } \ No newline at end of file -- cgit v1.2.3