// A wrapper around set_tooltip_*() for portability across different gtkmm versions. void app_gtkmm_set_widget_tooltip(Gtk::Widget& widget, const Glib::ustring& tooltip_text, bool use_markup) { // set_tooltip_* is available since 2.12 #ifndef APP_GTKMM_OLD_TOOLTIPS if (use_markup) { widget.set_tooltip_markup(tooltip_text); } else { widget.set_tooltip_text(tooltip_text); } #else // use the old tooltips api Gtk::Widget* toplevel = widget.get_toplevel(); if (toplevel && toplevel->is_toplevel()) { // orphan widgets return themselves, so check toplevelness. GtkTooltips* tooltips = static_cast<GtkTooltips*>(toplevel->get_data("window_tooltips")); if (tooltips) { if (use_markup) { // strip markup Glib::ustring stripped; if (app_pango_strip_markup(tooltip_text, stripped)) { gtk_tooltips_set_tip(tooltips, widget.gobj(), stripped.c_str(), ""); } } else { gtk_tooltips_set_tip(tooltips, widget.gobj(), tooltip_text.c_str(), ""); } } } #endif }
PopupWin::PopupWin( Gtk::Widget* parent, SKELETON::View* view, const int mrg_x, const int mrg_y ) : PopupWinBase( POPUPWIN_NOFRAME ), m_parent( parent ), m_view( view ), m_mrg_x( mrg_x ), m_mrg_y( mrg_y ) { #ifdef _DEBUG std::cout << "PopupWin::PopupWin\n"; #endif m_view->sig_resize_popup().connect( sigc::mem_fun( *this, &PopupWin::slot_resize_popup ) ); add( *m_view ); m_view->sig_hide_popup().connect( sigc::mem_fun( *this, &PopupWin::slot_hide_popup ) ); m_view->show_view(); Gtk::Widget* toplevel = m_parent->get_toplevel(); if( toplevel->is_toplevel() ) set_transient_for( *( ( Gtk::Window* )toplevel ) ); slot_resize_popup(); }