From 0697aed059a8dae6c93440924287259422da82be Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 6 Mar 2009 17:06:38 +0000 Subject: [PATCH] combobox width fixes from mtaht, backported from 2.X git-svn-id: svn://localhost/ardour2/branches/3.0@4742 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/ardour_ui2.cc | 14 +++++++++----- gtk2_ardour/editor.cc | 12 ++++++------ libs/gtkmm2ext/gtkmm2ext/utils.h | 13 ++++++++++--- libs/gtkmm2ext/utils.cc | 20 ++++++++++++++++++++ 4 files changed, 45 insertions(+), 14 deletions(-) diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 3f0b5f57e2..98e65b43e3 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -189,6 +189,11 @@ ARDOUR_UI::transport_forwarding () void ARDOUR_UI::setup_transport () { +#ifdef GTKOSX + const guint32 FUDGE = 38; // Combo's are stupid - they steal space from the entry for the button +#else + const guint32 FUDGE = 24; // Combo's are stupid - they steal space from the entry for the button +#endif transport_tearoff = manage (new TearOff (transport_tearoff_hbox)); transport_tearoff->set_name ("TransportBase"); @@ -375,11 +380,12 @@ ARDOUR_UI::setup_transport () shuttle_units_button.set_name (X_("ShuttleButton")); shuttle_units_button.signal_clicked().connect (mem_fun(*this, &ARDOUR_UI::shuttle_unit_clicked)); - shuttle_style_button.set_name (X_("ShuttleButton")); + shuttle_style_button.set_name (X_("ShuttleStyleButton")); vector shuttle_strings; shuttle_strings.push_back (_("sprung")); shuttle_strings.push_back (_("wheel")); + set_size_request_to_display_given_text (shuttle_style_button, shuttle_strings, 6+FUDGE, 10); set_popdown_strings (shuttle_style_button, shuttle_strings); shuttle_style_button.signal_changed().connect (mem_fun (*this, &ARDOUR_UI::shuttle_style_changed)); @@ -390,8 +396,7 @@ ARDOUR_UI::setup_transport () mtc_port_changed (); sync_option_combo.signal_changed().connect (mem_fun (*this, &ARDOUR_UI::sync_option_changed)); - const guint32 FUDGE = 25; // Combo's are stupid - they steal space from the entry for the button - set_size_request_to_display_given_text (sync_option_combo, X_("Igternal"), 2+FUDGE, 10); + set_size_request_to_display_given_text (sync_option_combo, X_("Igternal"), 4+FUDGE, 10); shbox->pack_start (*sdframe, false, false); shbox->pack_start (shuttle_units_button, true, true); @@ -880,8 +885,7 @@ ARDOUR_UI::editor_realized () set_size_request_to_display_given_text (speed_display_box, _("-0.55"), 2, 2); const guint32 FUDGE = 25; // Combo's are stupid - they steal space from the entry for the button - set_size_request_to_display_given_text (shuttle_style_button, _("sprung"), 2+FUDGE, 10); - cerr << "I commented out line line 881 in ardour_ui2.cc, because it made ardour crash somewhere in Gnome::Canvas::Text" << endl; + cerr << "I commented out line line 889 in ardour_ui2.cc, because it made ardour crash somewhere in Gnome::Canvas::Text" << endl; //reset_dpi(); } diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 86efc2069c..fb1a81db13 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -3079,7 +3079,7 @@ Editor::setup_toolbar () edit_mode_strings.push_back (edit_mode_to_string (Lock)); edit_mode_selector.set_name ("EditModeSelector"); - Gtkmm2ext::set_size_request_to_display_given_text (edit_mode_selector, longest (edit_mode_strings).c_str(), 2+FUDGE, 10); + Gtkmm2ext::set_size_request_to_display_given_text (edit_mode_selector, edit_mode_strings, 7+FUDGE, 10); set_popdown_strings (edit_mode_selector, edit_mode_strings); edit_mode_selector.signal_changed().connect (mem_fun(*this, &Editor::edit_mode_selection_done)); @@ -3163,7 +3163,7 @@ Editor::setup_toolbar () ARDOUR_UI::instance()->tooltips().set_tip (zoom_out_full_button, _("Zoom to Session")); zoom_focus_selector.set_name ("ZoomFocusSelector"); - Gtkmm2ext::set_size_request_to_display_given_text (zoom_focus_selector, _("Playhead"), FUDGE, 0); + Gtkmm2ext::set_size_request_to_display_given_text (zoom_focus_selector, zoom_focus_strings, 2+FUDGE, 10); set_popdown_strings (zoom_focus_selector, zoom_focus_strings); zoom_focus_selector.signal_changed().connect (mem_fun(*this, &Editor::zoom_focus_selection_done)); ARDOUR_UI::instance()->tooltips().set_tip (zoom_focus_selector, _("Zoom focus")); @@ -3177,19 +3177,19 @@ Editor::setup_toolbar () snap_box.set_border_width (2); snap_type_selector.set_name ("SnapTypeSelector"); - Gtkmm2ext::set_size_request_to_display_given_text (snap_type_selector, _("SMPTE Seconds"), 2+FUDGE, 10); + Gtkmm2ext::set_size_request_to_display_given_text (snap_type_selector, snap_type_strings, 7+FUDGE, 10); set_popdown_strings (snap_type_selector, snap_type_strings); snap_type_selector.signal_changed().connect (mem_fun(*this, &Editor::snap_type_selection_done)); ARDOUR_UI::instance()->tooltips().set_tip (snap_type_selector, _("Snap/Grid Units")); snap_mode_selector.set_name ("SnapModeSelector"); - Gtkmm2ext::set_size_request_to_display_given_text (snap_mode_selector, _("Magnetic Snap"), 2+FUDGE, 10); + Gtkmm2ext::set_size_request_to_display_given_text (snap_mode_selector, snap_mode_strings, 7+FUDGE, 10); set_popdown_strings (snap_mode_selector, snap_mode_strings); snap_mode_selector.signal_changed().connect (mem_fun(*this, &Editor::snap_mode_selection_done)); ARDOUR_UI::instance()->tooltips().set_tip (snap_mode_selector, _("Snap/Grid Mode")); - edit_point_selector.set_name ("SnapModeSelector"); - Gtkmm2ext::set_size_request_to_display_given_text (edit_point_selector, _("Playhead"), 2+FUDGE, 10); + edit_point_selector.set_name ("EditPointSelector"); + Gtkmm2ext::set_size_request_to_display_given_text (edit_point_selector, edit_point_strings, 7+FUDGE, 10); set_popdown_strings (edit_point_selector, edit_point_strings); edit_point_selector.signal_changed().connect (mem_fun(*this, &Editor::edit_point_selection_done)); ARDOUR_UI::instance()->tooltips().set_tip (edit_point_selector, _("Edit point")); diff --git a/libs/gtkmm2ext/gtkmm2ext/utils.h b/libs/gtkmm2ext/gtkmm2ext/utils.h index ca1b88abba..e664f2420d 100644 --- a/libs/gtkmm2ext/gtkmm2ext/utils.h +++ b/libs/gtkmm2ext/gtkmm2ext/utils.h @@ -36,15 +36,22 @@ namespace Gtk { namespace Gtkmm2ext { void init (); - void get_ink_pixel_size (Glib::RefPtr, int& width, int& height); + void get_ink_pixel_size (Glib::RefPtr, + int& width, int& height); void set_size_request_to_display_given_text (Gtk::Widget &w, const gchar *text, gint hpadding, gint vpadding); - void set_popdown_strings (Gtk::ComboBoxText&, const std::vector&); - + void set_size_request_to_display_given_text (Gtk::Widget &w, + const std::vector&, + gint hpadding, + gint vpadding); + + void set_popdown_strings (Gtk::ComboBoxText&, + const std::vector&); + template void deferred_delete (void *ptr) { delete static_cast (ptr); } diff --git a/libs/gtkmm2ext/utils.cc b/libs/gtkmm2ext/utils.cc index 57661a05af..adcaaaaeb5 100644 --- a/libs/gtkmm2ext/utils.cc +++ b/libs/gtkmm2ext/utils.cc @@ -57,6 +57,26 @@ Gtkmm2ext::set_size_request_to_display_given_text (Gtk::Widget &w, const gchar * w.set_size_request(width + hpadding, height + vpadding); } +void +Gtkmm2ext::set_size_request_to_display_given_text (Gtk::Widget &w, + const std::vector& strings, + gint hpadding, gint vpadding) + +{ + int width, height; + int width_max = 0; + int height_max = 0; + w.ensure_style (); + + for (vector::const_iterator i = strings.begin(); + i != strings.end(); ++i) { + get_ink_pixel_size (w.create_pango_layout (*i), width, height); + width_max = max(width_max,width); + height_max = max(height_max, height); + } + w.set_size_request(width_max + hpadding, height_max + vpadding); +} + void Gtkmm2ext::init () {