diff --git a/src/info.cc b/src/info.cc index ce5510d..1adb915 100644 --- a/src/info.cc +++ b/src/info.cc @@ -1,5 +1,19 @@ #include "info.h" +namespace sigc { +#ifndef SIGC_FUNCTORS_DEDUCE_RESULT_TYPE_WITH_DECLTYPE + template + struct functor_trait { + typedef decltype (::sigc::mem_fun(std::declval(), + &Functor::operator())) _intermediate; + typedef typename _intermediate::result_type result_type; + typedef Functor functor_type; + }; +#else + SIGC_FUNCTORS_DEDUCE_RESULT_TYPE_WITH_DECLTYPE +#endif +} + Info::Info() { set_hexpand(false); set_halign(Gtk::Align::ALIGN_END); @@ -12,6 +26,15 @@ Info::Info() { auto provider = Gtk::CssProvider::create(); provider->load_from_data("* {border-radius: 5px;}"); get_style_context()->add_provider(provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + + //Workaround from https://bugzilla.gnome.org/show_bug.cgi?id=710888 + //Issue described at the same issue report + //TODO: remove later + auto revealer = gtk_widget_get_template_child (GTK_WIDGET (gobj()), GTK_TYPE_INFO_BAR, "revealer"); + if (revealer) { + gtk_revealer_set_transition_type (GTK_REVEALER (revealer), GTK_REVEALER_TRANSITION_TYPE_NONE); + gtk_revealer_set_transition_duration (GTK_REVEALER (revealer), 0); + } } void Info::print(const std::string &text) { diff --git a/src/window.cc b/src/window.cc index 6fe7c20..ac704c1 100644 --- a/src/window.cc +++ b/src/window.cc @@ -56,13 +56,16 @@ Window::Window() : notebook(Notebook::get()) { terminal_vbox.pack_end(info_and_status_hbox, Gtk::PACK_SHRINK); vpaned.pack2(terminal_vbox, true, true); +#if GTKMM_MAJOR_VERSION>3 || (GTKMM_MAJOR_VERSION>=3 && GTKMM_MINOR_VERSION>=18) overlay_vbox.pack_start(Info::get(), Gtk::PACK_SHRINK, 20); overlay_hbox.pack_end(overlay_vbox, Gtk::PACK_SHRINK, 20); - overlay.add(vpaned); overlay.add_overlay(overlay_hbox); overlay.set_overlay_pass_through(overlay_hbox, true); add(overlay); +#else + add(vpaned); +#endif show_all_children(); Info::get().hide(); diff --git a/src/window.h b/src/window.h index 12c8d8b..3d42ae1 100644 --- a/src/window.h +++ b/src/window.h @@ -29,7 +29,9 @@ private: Gtk::HBox info_and_status_hbox; Gtk::VBox overlay_vbox; Gtk::HBox overlay_hbox; +#if GTKMM_MAJOR_VERSION>3 || (GTKMM_MAJOR_VERSION>=3 && GTKMM_MINOR_VERSION>=18) Gtk::Overlay overlay; +#endif Gtk::AboutDialog about; Glib::RefPtr css_provider;