diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-04-20 18:14:00 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-04-20 18:14:00 +0000 |
commit | 17b18acda3447214bd739107d9a46eecfaa6ef70 (patch) | |
tree | 695aa15c29117e101a0246ece8bbf25803b2cd67 /libs | |
parent | d7e728476a18bc024ae18705aa9d32ea21a1c4af (diff) |
a) use ink extents in most places where we used to use logical extents
for text sizing
b) add back scroll-wheel functionality to plugin parameter controls
git-svn-id: svn://localhost/trunk/ardour2@460 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gtkmm2ext/barcontroller.cc | 79 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/barcontroller.h | 11 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/utils.h | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkutils.cc | 11 | ||||
-rw-r--r-- | libs/gtkmm2ext/utils.cc | 26 |
5 files changed, 76 insertions, 53 deletions
diff --git a/libs/gtkmm2ext/barcontroller.cc b/libs/gtkmm2ext/barcontroller.cc index c8a211a48f..3529d23e12 100644 --- a/libs/gtkmm2ext/barcontroller.cc +++ b/libs/gtkmm2ext/barcontroller.cc @@ -26,6 +26,7 @@ #include <midi++/controllable.h> #include <gtkmm2ext/gtk_ui.h> +#include <gtkmm2ext/utils.h> #include <gtkmm2ext/barcontroller.h> #include "i18n.h" @@ -67,12 +68,14 @@ BarController::BarController (Gtk::Adjustment& adj, Gdk::BUTTON_PRESS_MASK| Gdk::POINTER_MOTION_MASK| Gdk::ENTER_NOTIFY_MASK| - Gdk::LEAVE_NOTIFY_MASK); + Gdk::LEAVE_NOTIFY_MASK| + Gdk::SCROLL_MASK); darea.signal_expose_event().connect (mem_fun (*this, &BarController::expose)); darea.signal_motion_notify_event().connect (mem_fun (*this, &BarController::motion)); darea.signal_button_press_event().connect (mem_fun (*this, &BarController::button_press)); darea.signal_button_release_event().connect (mem_fun (*this, &BarController::button_release)); + darea.signal_scroll_event().connect (mem_fun (*this, &BarController::scroll)); prompter.signal_unmap_event().connect (mem_fun (*this, &BarController::prompter_hiding)); @@ -107,13 +110,15 @@ BarController::get_bind_button_state (guint &button, guint &statemask) } -gint +bool BarController::button_press (GdkEventButton* ev) { switch (ev->button) { case 1: if (ev->type == GDK_2BUTTON_PRESS) { switch_on_release = true; + grabbed = false; + darea.remove_modal_grab(); } else { switch_on_release = false; darea.add_modal_grab(); @@ -122,7 +127,7 @@ BarController::button_press (GdkEventButton* ev) grab_window = ev->window; StartGesture (); } - return TRUE; + return true; break; case 2: @@ -134,17 +139,17 @@ BarController::button_press (GdkEventButton* ev) break; } - return FALSE; + return false; } -gint +bool BarController::button_release (GdkEventButton* ev) { switch (ev->button) { case 1: if (switch_on_release) { Glib::signal_idle().connect (mem_fun (*this, &BarController::switch_to_spinner)); - return TRUE; + return true; } if ((ev->state & (GDK_SHIFT_MASK|GDK_CONTROL_MASK)) == GDK_SHIFT_MASK) { @@ -162,7 +167,6 @@ BarController::button_release (GdkEventButton* ev) mouse_control (ev->x, ev->window, scale); } - grabbed = false; darea.remove_modal_grab(); StopGesture (); break; @@ -176,29 +180,51 @@ BarController::button_release (GdkEventButton* ev) adjustment.set_value (adjustment.get_lower() + fract * (adjustment.get_upper() - adjustment.get_lower())); } - return TRUE; + return true; case 3: if ((ev->state & bind_statemask) && bind_button == 3) { midi_learn (); return TRUE; } - return FALSE; + return false; - case 4: - adjustment.set_value (adjustment.get_value() + - adjustment.get_step_increment()); + default: break; - case 5: - adjustment.set_value (adjustment.get_value() - - adjustment.get_step_increment()); + } + + return true; +} + +bool +BarController::scroll (GdkEventScroll* ev) +{ + double scale; + + if (ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) { + scale = 0.01; + } else if (ev->state & GDK_CONTROL_MASK) { + scale = 0.1; + } else { + scale = 1.0; + } + + switch (ev->direction) { + case GDK_SCROLL_UP: + case GDK_SCROLL_RIGHT: + adjustment.set_value (adjustment.get_value() + (scale * adjustment.get_step_increment())); + break; + + case GDK_SCROLL_DOWN: + case GDK_SCROLL_LEFT: + adjustment.set_value (adjustment.get_value() - (scale * adjustment.get_step_increment())); break; } - return TRUE; + return true; } -gint +bool BarController::motion (GdkEventMotion* ev) { double scale; @@ -254,7 +280,7 @@ BarController::mouse_control (double x, GdkWindow* window, double scaling) return TRUE; } -gint +bool BarController::expose (GdkEventExpose* event) { Glib::RefPtr<Gdk::Window> win (darea.get_window()); @@ -350,12 +376,11 @@ BarController::expose (GdkEventExpose* event) if (buf[0] != '\0') { - int width; - int height; - - layout->set_text (buf); - layout->get_pixel_size(width, height); - + layout->set_text (buf); + + int width, height; + layout->get_pixel_size (width, height); + int xpos; xpos = max (3, 1 + (x2 - (width/2))); @@ -368,7 +393,7 @@ BarController::expose (GdkEventExpose* event) } } - return TRUE; + return true; } void @@ -498,11 +523,11 @@ BarController::entry_activated () switch_to_bar (); } -gint +bool BarController::entry_focus_out (GdkEventFocus* ev) { entry_activated (); - return TRUE; + return true; } void diff --git a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h index 64f5068d03..67c8221a55 100644 --- a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h +++ b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h @@ -89,10 +89,12 @@ class BarController : public Gtk::Frame guint bind_statemask; bool prompting, unprompting; - gint button_press (GdkEventButton *); - gint button_release (GdkEventButton *); - gint motion (GdkEventMotion *); - gint expose (GdkEventExpose *); + bool button_press (GdkEventButton *); + bool button_release (GdkEventButton *); + bool motion (GdkEventMotion *); + bool expose (GdkEventExpose *); + bool scroll (GdkEventScroll *); + bool entry_focus_out (GdkEventFocus*); gint mouse_control (double x, GdkWindow* w, double scaling); @@ -105,7 +107,6 @@ class BarController : public Gtk::Frame gint switch_to_spinner (); void entry_activated (); - gint entry_focus_out (GdkEventFocus*); }; diff --git a/libs/gtkmm2ext/gtkmm2ext/utils.h b/libs/gtkmm2ext/gtkmm2ext/utils.h index 6f34866ce9..97dab523aa 100644 --- a/libs/gtkmm2ext/gtkmm2ext/utils.h +++ b/libs/gtkmm2ext/gtkmm2ext/utils.h @@ -37,6 +37,8 @@ namespace Gtk { namespace Gtkmm2ext { void init (); + void get_ink_pixel_size (Glib::RefPtr<Pango::Layout>, int& width, int& height); + void set_size_request_to_display_given_text (Gtk::Widget &w, const gchar *text, gint hpadding, diff --git a/libs/gtkmm2ext/gtkutils.cc b/libs/gtkmm2ext/gtkutils.cc index 2f63fb2eb5..23bf4d6b2f 100644 --- a/libs/gtkmm2ext/gtkutils.cc +++ b/libs/gtkmm2ext/gtkutils.cc @@ -18,16 +18,5 @@ $Id$ */ -#include <string> - -#include <gtkmm.h> #include <gtkmm2ext/gtkutils.h> -void -gtk_set_size_request_to_display_given_text (Gtk::Widget &w, - const std::string& text, - gint hpadding, - gint vpadding) -{ - -} diff --git a/libs/gtkmm2ext/utils.cc b/libs/gtkmm2ext/utils.cc index 0a0737becd..57661a05af 100644 --- a/libs/gtkmm2ext/utils.cc +++ b/libs/gtkmm2ext/utils.cc @@ -35,20 +35,26 @@ using namespace std; void +Gtkmm2ext::get_ink_pixel_size (Glib::RefPtr<Pango::Layout> layout, + int& width, + int& height) +{ + Pango::Rectangle ink_rect = layout->get_ink_extents (); + + width = (ink_rect.get_width() + PANGO_SCALE / 2) / PANGO_SCALE; + height = (ink_rect.get_height() + PANGO_SCALE / 2) / PANGO_SCALE; +} + +void Gtkmm2ext::set_size_request_to_display_given_text (Gtk::Widget &w, const gchar *text, gint hpadding, gint vpadding) - + { - int height = 0; - int width = 0; - + int width, height; w.ensure_style (); - w.create_pango_layout (text)->get_pixel_size (width, height); - - height += vpadding; - width += hpadding; - - w.set_size_request(width, height); + + get_ink_pixel_size (w.create_pango_layout (text), width, height); + w.set_size_request(width + hpadding, height + vpadding); } void |