Browse Source

Info messages: need at least gtkmm version 3.18

merge-requests/365/head
eidheim 10 years ago
parent
commit
14ef75db3b
  1. 23
      src/info.cc
  2. 5
      src/window.cc
  3. 2
      src/window.h

23
src/info.cc

@ -1,5 +1,19 @@
#include "info.h"
namespace sigc {
#ifndef SIGC_FUNCTORS_DEDUCE_RESULT_TYPE_WITH_DECLTYPE
template <typename Functor>
struct functor_trait<Functor, false> {
typedef decltype (::sigc::mem_fun(std::declval<Functor&>(),
&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) {

5
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();

2
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<Gtk::CssProvider> css_provider;

Loading…
Cancel
Save