summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/audio_time_axis.cc23
-rw-r--r--gtk2_ardour/audio_time_axis.h2
-rw-r--r--gtk2_ardour/automation_gain_line.cc7
-rw-r--r--gtk2_ardour/automation_gain_line.h6
-rw-r--r--gtk2_ardour/automation_line.cc27
-rw-r--r--gtk2_ardour/automation_line.h15
-rw-r--r--gtk2_ardour/automation_pan_line.cc8
-rw-r--r--gtk2_ardour/automation_pan_line.h9
-rw-r--r--gtk2_ardour/automation_time_axis.cc12
-rw-r--r--gtk2_ardour/automation_time_axis.h9
-rw-r--r--gtk2_ardour/canvas_impl.h2
-rw-r--r--gtk2_ardour/crossfade_view.cc5
-rw-r--r--gtk2_ardour/editor.cc124
-rw-r--r--gtk2_ardour/editor.h24
-rw-r--r--gtk2_ardour/gain_automation_time_axis.cc5
-rw-r--r--gtk2_ardour/gain_automation_time_axis.h2
-rw-r--r--gtk2_ardour/imageframe_time_axis.cc5
-rw-r--r--gtk2_ardour/imageframe_time_axis.h5
-rw-r--r--gtk2_ardour/marker_time_axis.cc26
-rw-r--r--gtk2_ardour/marker_time_axis.h5
-rw-r--r--gtk2_ardour/option_editor.cc82
-rw-r--r--gtk2_ardour/option_editor.h20
-rw-r--r--gtk2_ardour/pan_automation_time_axis.cc5
-rw-r--r--gtk2_ardour/pan_automation_time_axis.h2
-rw-r--r--gtk2_ardour/plugin_ui.cc4
-rw-r--r--gtk2_ardour/plugin_ui.h4
-rw-r--r--gtk2_ardour/public_editor.h2
-rw-r--r--gtk2_ardour/redirect_automation_line.cc6
-rw-r--r--gtk2_ardour/redirect_automation_line.h8
-rw-r--r--gtk2_ardour/redirect_automation_time_axis.cc5
-rw-r--r--gtk2_ardour/redirect_automation_time_axis.h2
-rw-r--r--gtk2_ardour/time_axis_view.h2
-rw-r--r--gtk2_ardour/visual_time_axis.cc4
-rw-r--r--gtk2_ardour/visual_time_axis.h5
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/utils.h2
-rw-r--r--libs/gtkmm2ext/utils.cc4
36 files changed, 219 insertions, 259 deletions
diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc
index 3958bea4b5..9b444966aa 100644
--- a/gtk2_ardour/audio_time_axis.cc
+++ b/gtk2_ardour/audio_time_axis.cc
@@ -100,7 +100,7 @@ static const gchar * small_x_xpm[] = {
" ",
" "};
-AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session& sess, Route& rt, CanvasAA& canvas)
+AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session& sess, Route& rt, Canvas& canvas)
: AxisView(sess),
RouteUI(rt, sess, _("m"), _("s"), _("r")), // mute, solo, and record
TimeAxisView(sess,ed,(TimeAxisView*) 0, canvas),
@@ -1202,20 +1202,15 @@ AudioTimeAxisView::add_gain_automation_child ()
_route,
editor,
*this,
- *(parent_canvas.root()),
+ parent_canvas,
_("gain"),
_route.gain_automation_curve());
-
-#if 0
line = new AutomationGainLine ("automation gain",
_session,
*gain_track,
*gain_track->canvas_display,
- _route.gain_automation_curve(),
- mem_fun (editor, &PublicEditor::canvas_control_point_event),
- mem_fun (editor, &PublicEditor::canvas_line_event));
-#endif
+ _route.gain_automation_curve());
line->set_line_color (color_map[cAutomationLine]);
@@ -1248,7 +1243,7 @@ AudioTimeAxisView::add_pan_automation_child ()
{
XMLProperty* prop;
- pan_track = new PanAutomationTimeAxisView (_session, _route, editor, *this, *(parent_canvas.root()), _("pan"));
+ pan_track = new PanAutomationTimeAxisView (_session, _route, editor, *this, parent_canvas, _("pan"));
update_pans ();
@@ -1294,9 +1289,7 @@ AudioTimeAxisView::update_pans ()
line = new AutomationPanLine ("automation pan", _session, *pan_track,
*pan_track->canvas_display,
- (*p)->automation(),
- mem_fun (editor, &PublicEditor::canvas_control_point_event),
- mem_fun (editor, &PublicEditor::canvas_line_event));
+ (*p)->automation());
if (p == _route.panner().begin()) {
/* first line is a nice orange */
@@ -1472,13 +1465,11 @@ AudioTimeAxisView::add_redirect_automation_curve (Redirect *redirect, uint32_t w
char state_name[256];
snprintf (state_name, sizeof (state_name), "Redirect-%s-%" PRIu32, legalize_for_xml_node (redirect->name()).c_str(), what);
- ran->view = new RedirectAutomationTimeAxisView (_session, _route, editor, *this, (*parent_canvas.root()), name, what, *redirect, state_name);
+ ran->view = new RedirectAutomationTimeAxisView (_session, _route, editor, *this, parent_canvas, name, what, *redirect, state_name);
ral = new RedirectAutomationLine (name,
*redirect, what, _session, *ran->view,
- *ran->view->canvas_display, redirect->automation_list (what),
- mem_fun (editor, &PublicEditor::canvas_control_point_event),
- mem_fun (editor, &PublicEditor::canvas_line_event));
+ *ran->view->canvas_display, redirect->automation_list (what));
ral->set_line_color (color_map[cRedirectAutomationLine]);
ral->queue_reset ();
diff --git a/gtk2_ardour/audio_time_axis.h b/gtk2_ardour/audio_time_axis.h
index ed6cc49b2d..ca8aabf305 100644
--- a/gtk2_ardour/audio_time_axis.h
+++ b/gtk2_ardour/audio_time_axis.h
@@ -69,7 +69,7 @@ class AutomationTimeAxisView;
class AudioTimeAxisView : public RouteUI, public TimeAxisView
{
public:
- AudioTimeAxisView (PublicEditor&, ARDOUR::Session&, ARDOUR::Route&, ArdourCanvas::CanvasAA& canvas);
+ AudioTimeAxisView (PublicEditor&, ARDOUR::Session&, ARDOUR::Route&, ArdourCanvas::Canvas& canvas);
virtual ~AudioTimeAxisView ();
void show_selection (TimeSelection&);
diff --git a/gtk2_ardour/automation_gain_line.cc b/gtk2_ardour/automation_gain_line.cc
index b07f3c14a1..58dc502520 100644
--- a/gtk2_ardour/automation_gain_line.cc
+++ b/gtk2_ardour/automation_gain_line.cc
@@ -32,12 +32,9 @@
using namespace std;
using namespace ARDOUR;
-AutomationGainLine::AutomationGainLine (string name, Session& s, TimeAxisView& tv, Gnome::Canvas::Group& parent,
- Curve& c,
- sigc::slot<bool,GdkEvent*,ControlPoint*> point_callback,
- sigc::slot<bool,GdkEvent*,AutomationLine*> line_callback)
+AutomationGainLine::AutomationGainLine (string name, Session& s, TimeAxisView& tv, Gnome::Canvas::Group& parent, Curve& c)
- : AutomationLine (name, tv, parent, c, point_callback, line_callback),
+ : AutomationLine (name, tv, parent, c),
session (s)
{
set_verbose_cursor_uses_gain_mapping (true);
diff --git a/gtk2_ardour/automation_gain_line.h b/gtk2_ardour/automation_gain_line.h
index ba95b64480..2962b2a718 100644
--- a/gtk2_ardour/automation_gain_line.h
+++ b/gtk2_ardour/automation_gain_line.h
@@ -2,9 +2,9 @@
#define __ardour_gtk_automation_gain_line_h__
#include <ardour/ardour.h>
-#include <libgnomecanvas/libgnomecanvas.h>
#include <gtkmm.h>
+#include "canvas.h"
#include "automation_line.h"
namespace ARDOUR {
@@ -17,9 +17,7 @@ class TimeAxisView;
class AutomationGainLine : public AutomationLine
{
public:
- AutomationGainLine (string name, ARDOUR::Session&, TimeAxisView&, Gnome::Canvas::Group& parent,
- ARDOUR::Curve&,
- sigc::slot<bool,GdkEvent*,ControlPoint*>, sigc::slot<bool,GdkEvent*,AutomationLine*>);
+ AutomationGainLine (string name, ARDOUR::Session&, TimeAxisView&, ArdourCanvas::Group& parent, ARDOUR::Curve&);
void view_to_model_y (double&);
void model_to_view_y (double&);
diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc
index c21cf70582..da208489f4 100644
--- a/gtk2_ardour/automation_line.cc
+++ b/gtk2_ardour/automation_line.cc
@@ -51,7 +51,7 @@ using namespace ARDOUR;
using namespace Editing;
using namespace Gnome; // for Canvas
-ControlPoint::ControlPoint (AutomationLine& al, sigc::slot<bool,GdkEvent*,ControlPoint*> handler)
+ControlPoint::ControlPoint (AutomationLine& al)
: line (al)
{
model = al.the_list().end();
@@ -70,7 +70,7 @@ ControlPoint::ControlPoint (AutomationLine& al, sigc::slot<bool,GdkEvent*,Contro
item->property_outline_color_rgba() = color_map[cControlPointOutline];
item->property_outline_pixels() = 1;
item->set_data ("control_point", this);
- item->signal_event().connect (bind (handler, this));
+ item->signal_event().connect (mem_fun (this, &ControlPoint::event_handler));
hide ();
set_visible (false);
@@ -108,6 +108,12 @@ ControlPoint::~ControlPoint ()
gtk_object_destroy (GTK_OBJECT(item));
}
+bool
+ControlPoint::event_handler (GdkEvent* event)
+{
+ return PublicEditor::instance().canvas_control_point_event (event, item, this);
+}
+
void
ControlPoint::hide ()
{
@@ -211,10 +217,7 @@ ControlPoint::move_to (double x, double y, ShapeType shape)
/*****/
-AutomationLine::AutomationLine (string name, TimeAxisView& tv, Gnome::Canvas::Group& parent, AutomationList& al,
- slot<bool,GdkEvent*,ControlPoint*> point_handler,
- slot<bool,GdkEvent*,AutomationLine*> line_handler)
-
+AutomationLine::AutomationLine (string name, TimeAxisView& tv, Gnome::Canvas::Group& parent, AutomationList& al)
: trackview (tv),
_name (name),
alist (al),
@@ -225,7 +228,6 @@ AutomationLine::AutomationLine (string name, TimeAxisView& tv, Gnome::Canvas::Gr
_vc_uses_gain_mapping = false;
no_draw = false;
_visible = true;
- point_slot = point_handler;
terminal_points_can_slide = true;
_height = 0;
@@ -236,8 +238,7 @@ AutomationLine::AutomationLine (string name, TimeAxisView& tv, Gnome::Canvas::Gr
line = new Gnome::Canvas::Line (*group);
line->set_property ("width_pixels", (guint)1);
- line->set_data ("line", this);
- line->signal_event().connect (bind (line_handler, this));
+ line->signal_event().connect (mem_fun (*this, &AutomationLine::event_handler));
alist.StateChanged.connect (mem_fun(*this, &AutomationLine::list_changed));
}
@@ -249,6 +250,12 @@ AutomationLine::~AutomationLine ()
gtk_object_destroy (GTK_OBJECT(group));
}
+bool
+AutomationLine::event_handler (GdkEvent* event)
+{
+ return PublicEditor::instance().canvas_line_event (event, line, this);
+}
+
void
AutomationLine::queue_reset ()
{
@@ -736,7 +743,7 @@ AutomationLine::determine_visible_control_points (ALPoints& points)
if (view_index >= control_points.size()) {
/* make sure we have enough control points */
- ControlPoint* ncp = new ControlPoint (*this, point_slot);
+ ControlPoint* ncp = new ControlPoint (*this);
if (_height > (guint32) TimeAxisView::Larger) {
ncp->set_size (8.0);
diff --git a/gtk2_ardour/automation_line.h b/gtk2_ardour/automation_line.h
index dbb920f52a..ed3ad05b16 100644
--- a/gtk2_ardour/automation_line.h
+++ b/gtk2_ardour/automation_line.h
@@ -55,9 +55,9 @@ namespace Gnome {
class ControlPoint
{
public:
- ControlPoint (AutomationLine& al, sigc::slot<bool,GdkEvent*,ControlPoint*>);
+ ControlPoint (AutomationLine& al);
ControlPoint (const ControlPoint&, bool dummy_arg_to_force_special_copy_constructor);
- ~ControlPoint ();
+ virtual ~ControlPoint ();
enum ShapeType {
Full,
@@ -84,6 +84,9 @@ class ControlPoint
bool can_slide;
bool selected;
+ protected:
+ virtual bool event_handler (GdkEvent*);
+
private:
double _x;
double _y;
@@ -94,9 +97,7 @@ class ControlPoint
class AutomationLine : public sigc::trackable
{
public:
- AutomationLine (string name, TimeAxisView&, Gnome::Canvas::Group&, ARDOUR::AutomationList&,
- sigc::slot<bool,GdkEvent*,ControlPoint*>, sigc::slot<bool,GdkEvent*,AutomationLine*>);
-
+ AutomationLine (string name, TimeAxisView&, Gnome::Canvas::Group&, ARDOUR::AutomationList&);
virtual ~AutomationLine ();
void queue_reset ();
@@ -176,8 +177,6 @@ class AutomationLine : public sigc::trackable
Gnome::Canvas::Points line_points; /* coordinates for canvas line */
vector<ControlPoint*> control_points; /* visible control points */
- sigc::slot<bool,GdkEvent*,ControlPoint*> point_slot;
-
struct ALPoint {
double x;
double y;
@@ -202,6 +201,8 @@ class AutomationLine : public sigc::trackable
void list_changed (ARDOUR::Change);
UndoAction get_memento();
+
+ virtual bool event_handler (GdkEvent*);
private:
uint32_t drags;
diff --git a/gtk2_ardour/automation_pan_line.cc b/gtk2_ardour/automation_pan_line.cc
index 516795dff7..0bdbdef3f4 100644
--- a/gtk2_ardour/automation_pan_line.cc
+++ b/gtk2_ardour/automation_pan_line.cc
@@ -22,6 +22,7 @@
#include <ardour/curve.h>
+#include "canvas_impl.h"
#include "public_editor.h"
#include "automation_pan_line.h"
#include "utils.h"
@@ -31,12 +32,9 @@
using namespace ARDOUR;
-AutomationPanLine::AutomationPanLine (string name, Session& s, TimeAxisView& tv, Gnome::Canvas::Group& parent,
- Curve& c,
- sigc::slot<bool,GdkEvent*,ControlPoint*> point_handler,
- sigc::slot<bool,GdkEvent*,AutomationLine*> line_handler)
+AutomationPanLine::AutomationPanLine (string name, Session& s, TimeAxisView& tv, Gnome::Canvas::Group& parent, Curve& c)
- : AutomationLine (name, tv, parent, c, point_handler, line_handler),
+ : AutomationLine (name, tv, parent, c),
session (s)
{
}
diff --git a/gtk2_ardour/automation_pan_line.h b/gtk2_ardour/automation_pan_line.h
index 9957f52016..a8535da71b 100644
--- a/gtk2_ardour/automation_pan_line.h
+++ b/gtk2_ardour/automation_pan_line.h
@@ -2,9 +2,9 @@
#define __ardour_gtk_automation_pan_line_h__
#include <ardour/ardour.h>
-#include <libgnomecanvas/libgnomecanvas.h>
#include <gtkmm.h>
+#include "canvas.h"
#include "automation_line.h"
namespace ARDOUR {
@@ -16,17 +16,14 @@ class TimeAxisView;
class AutomationPanLine : public AutomationLine
{
public:
- AutomationPanLine (string name, ARDOUR::Session&, TimeAxisView&, Gnome::Canvas::Group& parent,
- ARDOUR::Curve&,
- sigc::slot<bool,GdkEvent*,ControlPoint*> point_handler,
- sigc::slot<bool,GdkEvent*,AutomationLine*> line_handler);
+ AutomationPanLine (string name, ARDOUR::Session&, TimeAxisView&, Gnome::Canvas::Group& parent, ARDOUR::Curve&);
void view_to_model_y (double&);
void model_to_view_y (double&);
private:
ARDOUR::Session& session;
- vector<GnomeCanvasItem*> lines;
+ vector<ArdourCanvas::Item*> lines;
};
diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc
index 5339b0a02e..9e3fb09a4a 100644
--- a/gtk2_ardour/automation_time_axis.cc
+++ b/gtk2_ardour/automation_time_axis.cc
@@ -4,13 +4,13 @@
#include "automation_time_axis.h"
#include "automation_line.h"
#include "public_editor.h"
-#include "canvas-simplerect.h"
-#include "canvas-waveview.h"
+#include "simplerect.h"
#include "selection.h"
#include "ghostregion.h"
#include "rgb_macros.h"
#include "automation_selectable.h"
#include "point_selection.h"
+#include "canvas_impl.h"
#include "i18n.h"
@@ -34,10 +34,12 @@ static const gchar * small_x_xpm[] = {
" ",
" "};
-AutomationTimeAxisView::AutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& rent, Widget* p, std::string nom, std::string state_name, std::string nomparent)
+AutomationTimeAxisView::AutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& rent,
+ ArdourCanvas::Canvas& canvas, std::string nom,
+ std::string state_name, std::string nomparent)
: AxisView (s),
- TimeAxisView (s, e, &rent, p),
+ TimeAxisView (s, e, &rent, canvas),
route (r),
_name (nom),
_state_name (state_name),
@@ -63,7 +65,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, Route& r, PublicEdit
// "outline_what", (guint32) (0x1|0x2|0x8),
// "fill_color_rgba", color_map[cAutomationTrackFill],
// NULL);
- base_rect = new Gnome::Canvas::SimpleRect(*canvas_display);
+ base_rect = new SimpleRect(*canvas_display);
base_rect->set_property ("x1", 0.0);
base_rect->set_property ("y1", 0.0);
base_rect->set_property ("x2", 1000000.0);
diff --git a/gtk2_ardour/automation_time_axis.h b/gtk2_ardour/automation_time_axis.h
index d43be38a49..2dc43853a2 100644
--- a/gtk2_ardour/automation_time_axis.h
+++ b/gtk2_ardour/automation_time_axis.h
@@ -6,6 +6,7 @@
#include <string>
#include <ardour/types.h>
+#include "canvas.h"
#include "time_axis_view.h"
#include "simplerect.h"
@@ -18,10 +19,6 @@ namespace ARDOUR {
class Route;
}
-namespace Gtk {
- class Widget;
-}
-
class PublicEditor;
class TimeSelection;
class AudioRegionSelection;
@@ -37,7 +34,7 @@ class AutomationTimeAxisView : public TimeAxisView {
ARDOUR::Route&,
PublicEditor&,
TimeAxisView& parent,
- Gtk::Widget* parent,
+ ArdourCanvas::Canvas& canvas,
std::string name, /* translatable */
std::string state_name, /* not translatable */
std::string plug_name = "");
@@ -78,7 +75,7 @@ class AutomationTimeAxisView : public TimeAxisView {
protected:
ARDOUR::Route& route;
- Gnome::Canvas::SimpleRect* base_rect;
+ ArdourCanvas::SimpleRect* base_rect;
string _name;
string _state_name;
bool in_destructor;
diff --git a/gtk2_ardour/canvas_impl.h b/gtk2_ardour/canvas_impl.h
index f492d2901e..817679b734 100644
--- a/gtk2_ardour/canvas_impl.h
+++ b/gtk2_ardour/canvas_impl.h
@@ -1,6 +1,8 @@
#ifndef __ardour_gtk_canvas_impl_h__
#define __ardour_gtk_canvas_impl_h__
+#include "canvas.h"
+
#include <libgnomecanvasmm/canvas.h>
#include <libgnomecanvasmm/polygon.h>
#include <libgnomecanvasmm/text.h>
diff --git a/gtk2_ardour/crossfade_view.cc b/gtk2_ardour/crossfade_view.cc
index 7e6a889a3e..cca92198f5 100644
--- a/gtk2_ardour/crossfade_view.cc
+++ b/gtk2_ardour/crossfade_view.cc
@@ -80,8 +80,9 @@ CrossfadeView::CrossfadeView (Gnome::Canvas::Group *parent,
vestigial_frame->hide();
show_vestigial = false;
- group->signal_event.connect (bind (mem_fun (editor, &Public::canvas_crossfade_view_event), group, this));
-
+ // GTK2FIX
+ // group->signal_event.connect (bind (mem_fun (tv.editor, &PublicEditor::canvas_crossfade_view_event), group, this));
+
crossfade_changed (Change (~0));
crossfade.StateChanged.connect (mem_fun(*this, &CrossfadeView::crossfade_changed));
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index fad53f8182..cfbb6ddd4d 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -90,20 +90,6 @@ const double Editor::timebar_height = 15.0;
#include "editor_xpms"
-static const gchar *route_list_titles[] = {
- N_("Tracks"),
- 0
-};
-
-static const gchar *edit_group_list_titles[] = {
- "foo", "bar", 0
-};
-
-static const gchar *named_selection_display_titles[] = {
- N_("Chunks"),
- 0
-};
-
static const int32_t slide_index = 0;
static const int32_t splice_index = 1;
@@ -525,8 +511,11 @@ Editor::Editor (AudioEngine& eng)
route_list.set_headers_visible (true);
route_list.set_headers_clickable (true);
- route_display_model->set_sort_func (0, mem_fun (*this, &Editor::route_list_compare_func));
- route_display_model->signal_rows_reordered().connect (mem_fun (*this, &Editor::queue_route_list_reordered));
+ // GTK2FIX
+ // route_list.signal_rows_reordered().connect (mem_fun (*this, &Editor::queue_route_list_reordered));
+
+ // GTK2FIX
+ // route_display_model->set_sort_func (0, mem_fun (*this, &Editor::route_list_compare_func));
// GTK2FIX
//route_list.set_shadow_type (Gtk::SHADOW_IN);
@@ -616,15 +605,16 @@ Editor::Editor (AudioEngine& eng)
region_list_scroller.add (region_list_display);
region_list_scroller.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
- vector<Gtk::TargetEntry> region_list_target_table;
+ list<Gtk::TargetEntry> region_list_target_table;
region_list_target_table.push_back (TargetEntry ("STRING"));
region_list_target_table.push_back (TargetEntry ("text/plain"));
region_list_target_table.push_back (TargetEntry ("text/uri-list"));
region_list_target_table.push_back (TargetEntry ("application/x-rootwin-drop"));
- region_list_display.drag_dest_set (region_list_target_table, DEST_DEFAULT_ALL, GdkDragAction (Gdk::ACTION_COPY|Gdk::ACTION_MOVE));
- region_list_display.signal_drag_data_received().connect (mem_fun(*this, &Editor::region_list_display_drag_data_received));
+ // GTK2FIX
+ // region_list_display.drag_dest_set (region_list_target_table, DEST_DEFAULT_ALL, GdkDragAction (Gdk::ACTION_COPY|Gdk::ACTION_MOVE));
+ // region_list_display.signal_drag_data_received().connect (mem_fun(*this, &Editor::region_list_display_drag_data_received));
region_list_display.signal_key_press_event().connect (mem_fun(*this, &Editor::region_list_display_key_press));
region_list_display.signal_key_release_event().connect (mem_fun(*this, &Editor::region_list_display_key_release));
@@ -816,10 +806,9 @@ Editor::initialize_canvas ()
// GNOME_CANVAS(track_canvas)->close_enough = 2;
- track_canvas.signal_event().connect (mem_fun (*this, &Editor::track_canvas_event));
+ track_canvas.signal_event().connect (bind (mem_fun (*this, &Editor::track_canvas_event), (ArdourCanvas::Item*) 0));
track_canvas.set_name ("EditorMainCanvas");
track_canvas.add_events (Gdk::POINTER_MOTION_HINT_MASK);
- track_canvas.signal_event().connect (mem_fun (*this, &Editor::track_canvas_event));
track_canvas.signal_leave_notify_event().connect (mem_fun(*this, &Editor::left_track_canvas));
/* set up drag-n-drop */
@@ -830,8 +819,9 @@ Editor::initialize_canvas ()
target_table.push_back (TargetEntry ("text/uri-list"));
target_table.push_back (TargetEntry ("application/x-rootwin-drop"));
- track_canvas.drag_dest_set (target_table, DEST_DEFAULT_ALL, GdkDragAction (Gdk::ACTION_COPY|Gdk::ACTION_MOVE));
- track_canvas.signal_drag_data_received().connect (mem_fun(*this, &Editor::track_canvas_drag_data_received));
+ // GTK2FIX
+ // track_canvas.drag_dest_set (target_table, DEST_DEFAULT_ALL, GdkDragAction (Gdk::ACTION_COPY|Gdk::ACTION_MOVE));
+ // track_canvas.signal_drag_data_received().connect (mem_fun(*this, &Editor::track_canvas_drag_data_received));
/* stuff for the verbose canvas cursor */
@@ -944,7 +934,7 @@ Editor::initialize_canvas ()
zoom_rect->set_property ("outline_pixels", 1);
zoom_rect->hide();
- zoom_rect->signal_event().connect (mem_fun (*this, &Editor::canvas_zoom_rect_event));
+ zoom_rect->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_zoom_rect_event), (ArdourCanvas::Item*) 0));
// used as rubberband rect
rubberband_rect = new Gnome::Canvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
@@ -953,11 +943,11 @@ Editor::initialize_canvas ()
rubberband_rect->set_property ("outline_pixels", 1);
rubberband_rect->hide();
- tempo_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_tempo_bar_event));
- meter_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_meter_bar_event));
- marker_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_marker_bar_event));
- range_marker_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_range_marker_bar_event));
- transport_marker_bar->signal_event().connect (mem_fun (*this, &Editor::canvas_transport_marker_bar_event));
+ tempo_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_tempo_bar_event), tempo_bar));
+ meter_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_meter_bar_event), meter_bar));
+ marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_marker_bar_event), marker_bar));
+ range_marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_range_marker_bar_event), range_marker_bar));
+ transport_marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_transport_marker_bar_event), transport_marker_bar));
/* separator lines */
@@ -997,8 +987,8 @@ Editor::initialize_canvas ()
double time_width = FLT_MAX/frames_per_unit;
time_canvas.set_scroll_region(0.0, 0.0, time_width, time_height);
- edit_cursor = new Cursor (*this, "blue", canvas_edit_cursor_event);
- playhead_cursor = new Cursor (*this, "red", canvas_playhead_cursor_event);
+ edit_cursor = new Cursor (*this, "blue", &Editor::canvas_edit_cursor_event);
+ playhead_cursor = new Cursor (*this, "red", &Editor::canvas_playhead_cursor_event);
track_canvas.signal_size_allocate().connect (mem_fun(*this, &Editor::track_canvas_allocate));
}
@@ -1226,10 +1216,10 @@ Editor::on_map ()
}
void
-Editor::track_canvas_allocate (GtkAllocation *alloc)
+Editor::track_canvas_allocate (Gtk::Allocation alloc)
{
- canvas_width = alloc->width;
- canvas_height = alloc->height;
+ canvas_width = alloc.get_width();
+ canvas_height = alloc.get_height();
if (session == 0 && !ARDOUR_UI::instance()->will_create_new_session_automatically()) {
@@ -1288,13 +1278,13 @@ Editor::track_canvas_allocate (GtkAllocation *alloc)
zoom_range_clock.set ((jack_nframes_t) (canvas_width * frames_per_unit));
edit_cursor->set_position (edit_cursor->current_frame);
playhead_cursor->set_position (playhead_cursor->current_frame);
- reset_scrolling_region (alloc);
+ reset_scrolling_region (&alloc);
Resized (); /* EMIT_SIGNAL */
}
void
-Editor::reset_scrolling_region (GtkAllocation *alloc)
+Editor::reset_scrolling_region (Gtk::Allocation* alloc)
{
guint32 last_canvas_unit;
double height;
@@ -1337,11 +1327,11 @@ Editor::reset_scrolling_region (GtkAllocation *alloc)
canvas_height = (guint32) height;
if (alloc) {
- canvas_alloc_height = alloc->height;
- canvas_alloc_width = alloc->width;
+ canvas_alloc_height = alloc->get_height();
+ canvas_alloc_width = alloc->get_width();
} else {
- canvas_alloc_height = track_canvas.get_height();
- canvas_alloc_width = track_canvas.get_width();
+ canvas_alloc_height = track_canvas.get_height();
+ canvas_alloc_width = track_canvas.get_width();
}
canvas_height = max (canvas_height, canvas_alloc_height);
@@ -2964,7 +2954,7 @@ Editor::setup_toolbar ()
edit_mode_box.pack_start (edit_mode_label, false, false);
edit_mode_box.pack_start (edit_mode_selector, false, false);
- edit_mode_selector.signal_unmap_event().connect (mem_fun(*this, &Editor::edit_mode_selection_done));
+ edit_mode_selector.signal_changed().connect (mem_fun(*this, &Editor::edit_mode_selection_done));
/* Snap Type */
@@ -2984,7 +2974,7 @@ Editor::setup_toolbar ()
snap_type_box.pack_start (snap_type_label, false, false);
snap_type_box.pack_start (snap_type_selector, false, false);
- snap_type_selector.signal_unmap_event().connect (mem_fun(*this, &Editor::snap_type_selection_done));
+ snap_type_selector.signal_changed().connect (mem_fun(*this, &Editor::snap_type_selection_done));
/* Snap mode, not snap type */
@@ -3001,7 +2991,7 @@ Editor::setup_toolbar ()
snap_mode_box.pack_start (snap_mode_label, false, false);
snap_mode_box.pack_start (snap_mode_selector, false, false);
- snap_mode_selector.signal_unmap_event().connect (mem_fun(*this, &Editor::snap_mode_selection_done));
+ snap_mode_selector.signal_changed().connect (mem_fun(*this, &Editor::snap_mode_selection_done));
/* Zoom focus mode */
@@ -3020,7 +3010,7 @@ Editor::setup_toolbar ()
zoom_focus_box.pack_start (zoom_focus_label, false, false);
zoom_focus_box.pack_start (zoom_focus_selector, false, false);
- zoom_focus_selector.signal_unmap_event().connect (mem_fun(*this, &Editor::zoom_focus_selection_done));
+ zoom_focus_selector.signal_changed().connect (mem_fun(*this, &Editor::zoom_focus_selection_done));
/* selection/cursor clocks */
@@ -3090,7 +3080,7 @@ Editor::setup_toolbar ()
tools_tearoff->set_name ("MouseModeBase");
tools_tearoff->Detach.connect (bind (mem_fun(*this, &Editor::detach_tearoff), static_cast<Gtk::Box*>(&toolbar_hbox),
- tools_tearoff->tearoff_window(), 0));
+ tools_tearoff->tearoff_window()));
tools_tearoff->Attach.connect (bind (mem_fun(*this, &Editor::reattach_tearoff), static_cast<Gtk::Box*> (&toolbar_hbox),
tools_tearoff->tearoff_window(), 0));
@@ -3630,7 +3620,7 @@ Editor::set_selected_regionview_from_region_list (Region& r, bool add)
commit_reversible_command () ;
}
-gint
+bool
Editor::set_selected_regionview_from_map_event (GdkEventAny* ev, StreamView* sv, Region* r)
{
AudioRegionView* rv;
@@ -3692,8 +3682,8 @@ Editor::set_edit_menu (Menu& menu)
edit_menu->signal_map_event().connect (mem_fun(*this, &Editor::edit_menu_map_handler));
}
-void
-Editor::edit_menu_map_handler ()
+bool
+Editor::edit_menu_map_handler (GdkEventAny* ev)
{
using namespace Menu_Helpers;
MenuList& edit_items = edit_menu->items();
@@ -3704,7 +3694,7 @@ Editor::edit_menu_map_handler ()
edit_items.clear ();
if (session == 0) {
- return;
+ return false;
}
if (session->undo_depth() == 0) {
@@ -3774,6 +3764,8 @@ Editor::edit_menu_map_handler ()
if (!session->have_captured()) {
edit_items.back().set_sensitive (false);
}
+
+ return false;
}
void
@@ -3887,11 +3879,11 @@ Editor::set_verbose_canvas_cursor_text (string txt)
verbose_canvas_cursor->set_property("text", txt.c_str());
}
-gint
-Editor::edit_mode_selection_done (GdkEventAny *ev)
+void
+Editor::edit_mode_selection_done ()
{
if (session == 0) {
- return FALSE;
+ return;
}
string choice = edit_mode_selector.get_active_text();
@@ -3904,15 +3896,13 @@ Editor::edit_mode_selection_done (GdkEventAny *ev)
}
session->set_edit_mode (mode);
-
- return FALSE;
}
-gint
-Editor::snap_type_selection_done (GdkEventAny *ev)
+void
+Editor::snap_type_selection_done ()
{
if (session == 0) {
- return FALSE;
+ return;
}
string choice = snap_type_selector.get_active_text();
@@ -3961,14 +3951,14 @@ Editor::snap_type_selection_done (GdkEventAny *ev)
}
set_snap_to (snaptype);
-
- return FALSE;
}
-gint
-Editor::snap_mode_selection_done (GdkEventAny *ev)
+void
+Editor::snap_mode_selection_done ()
{
- if(session == 0) return FALSE;
+ if(session == 0) {
+ return;
+ }
string choice = snap_mode_selector.get_active_text();
SnapMode mode = SnapNormal;
@@ -3980,15 +3970,13 @@ Editor::snap_mode_selection_done (GdkEventAny *ev)
}
set_snap_mode (mode);
-
- return FALSE;
}
-gint
-Editor::zoom_focus_selection_done (GdkEventAny *ev)
+void
+Editor::zoom_focus_selection_done ()
{
if (session == 0) {
- return FALSE;
+ return;
}
string choice = zoom_focus_selector.get_active_text();
@@ -4007,8 +3995,6 @@ Editor::zoom_focus_selection_done (GdkEventAny *ev)
}
set_zoom_focus (focus_type);
-
- return FALSE;
}
gint
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index b27ad65b32..43205fb31a 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -437,7 +437,7 @@ class Editor : public PublicEditor
void set_selected_track_from_click (bool add = false, bool with_undo = true, bool no_remove=false);
void set_selected_regionview_from_click (bool add = false, bool no_track_remove=false);
void set_selected_regionview_from_region_list (ARDOUR::Region& region, bool add = false);
- gint set_selected_regionview_from_map_event (GdkEventAny*, StreamView*, ARDOUR::Region*);
+ bool set_selected_regionview_from_map_event (GdkEventAny*, StreamView*, ARDOUR::Region*);
void collect_new_region_view (AudioRegionView *);
Gtk::Menu track_context_menu;
@@ -1184,15 +1184,15 @@ class Editor : public PublicEditor
/* non-public event handlers */
- bool canvas_playhead_cursor_event (GdkEvent* event, ArdourCanvas::Item*);
- bool canvas_edit_cursor_event (GdkEvent* event, ArdourCanvas::Item*);
+ bool canvas_playhead_cursor_event (GdkEvent* event);
+ bool canvas_edit_cursor_event (GdkEvent* event);
bool track_canvas_event (GdkEvent* event, ArdourCanvas::Item*);
bool track_canvas_button_press_event (GdkEventButton *);
bool track_canvas_button_release_event (GdkEventButton *);
- void track_canvas_allocate (GtkAllocation* alloc);
- void time_canvas_allocate (GtkAllocation* alloc);
+ void track_canvas_allocate (Gtk::Allocation alloc);
+ void time_canvas_allocate (Gtk::Allocation alloc);
void set_edit_cursor (GdkEvent* event);
void set_playhead_cursor (GdkEvent* event);
@@ -1215,7 +1215,7 @@ class Editor : public PublicEditor
void fake_handle_new_duration ();
void handle_new_duration ();
void initialize_canvas ();
- void reset_scrolling_region (GtkAllocation* alloc = 0);
+ void reset_scrolling_region (Gtk::Allocation* alloc = 0);
void scroll_canvas ();
/* sub-event loop handling */
@@ -1347,25 +1347,25 @@ class Editor : public PublicEditor
Gtk::Label edit_mode_label;
Gtk::VBox edit_mode_box;
- gint edit_mode_selection_done (GdkEventAny*);
+ void edit_mode_selection_done ();
Gtk::ComboBoxText snap_type_selector;
Gtk::Label snap_type_label;
Gtk::VBox snap_type_box;
- gint snap_type_selection_done (GdkEventAny*);
+ void snap_type_selection_done ();
Gtk::ComboBoxText snap_mode_selector;
Gtk::Label snap_mode_label;
Gtk::VBox snap_mode_box;
- gint snap_mode_selection_done (GdkEventAny*);
-
+ void snap_mode_selection_done ();
+
Gtk::ComboBoxText zoom_focus_selector;
Gtk::Label zoom_focus_label;
Gtk::VBox zoom_focus_box;
- gint zoom_focus_selection_done (GdkEventAny*);
+ void zoom_focus_selection_done ();
Gtk::Label zoom_indicator_label;
Gtk::HBox zoom_indicator_box;
@@ -1673,7 +1673,7 @@ class Editor : public PublicEditor
/* edit menu */
Gtk::Menu* edit_menu;
- void edit_menu_map_handler ();
+ bool edit_menu_map_handler (GdkEventAny*);
jack_nframes_t event_frame (GdkEvent*, double* px = 0, double* py = 0);
diff --git a/gtk2_ardour/gain_automation_time_axis.cc b/gtk2_ardour/gain_automation_time_axis.cc
index 17427d57fe..ed2ea49d67 100644
--- a/gtk2_ardour/gain_automation_time_axis.cc
+++ b/gtk2_ardour/gain_automation_time_axis.cc
@@ -23,16 +23,17 @@
#include "gain_automation_time_axis.h"
#include "automation_line.h"
+#include "canvas.h"
#include "i18n.h"
using namespace ARDOUR;
using namespace Gtk;
-GainAutomationTimeAxisView::GainAutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& parent, Widget* p, std::string n, ARDOUR::Curve& c)
+GainAutomationTimeAxisView::GainAutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& parent, Canvas& canvas, std::string n, ARDOUR::Curve& c)
: AxisView (s),
- AutomationTimeAxisView (s, r, e, parent, p, n, X_("gain"), ""),
+ AutomationTimeAxisView (s, r, e, parent, canvas, n, X_("gain"), ""),
curve (c)
{
diff --git a/gtk2_ardour/gain_automation_time_axis.h b/gtk2_ardour/gain_automation_time_axis.h
index f7b5ae426c..0cc211ee1b 100644
--- a/gtk2_ardour/gain_automation_time_axis.h
+++ b/gtk2_ardour/gain_automation_time_axis.h
@@ -16,7 +16,7 @@ class GainAutomationTimeAxisView : public AutomationTimeAxisView
ARDOUR::Route&,
PublicEditor&,
TimeAxisView& parent_axis,
- ArdourCanvas::Group& parent,
+ ArdourCanvas::Canvas& canvas,
std::string name,
ARDOUR::Curve&);
diff --git a/gtk2_ardour/imageframe_time_axis.cc b/gtk2_ardour/imageframe_time_axis.cc
index 5fe195c043..17bdf5ecab 100644
--- a/gtk2_ardour/imageframe_time_axis.cc
+++ b/gtk2_ardour/imageframe_time_axis.cc
@@ -31,7 +31,7 @@
#include "public_editor.h"
#include "imageframe_time_axis.h"
-#include "canvas-simplerect.h"
+#include "simplerect.h"
#include "enums.h"
#include "imageframe_time_axis_view.h"
#include "imageframe_time_axis_group.h"
@@ -40,6 +40,7 @@
#include "marker_time_axis.h"
#include "marker_view.h"
#include "gui_thread.h"
+#include "canvas_impl.h"
#include "i18n.h"
@@ -55,7 +56,7 @@ using namespace Gtk ;
* @param sess the current session
* @param canvas the parent canvas item
*/
-ImageFrameTimeAxis::ImageFrameTimeAxis(std::string track_id, PublicEditor& ed, ARDOUR::Session& sess, Widget *canvas)
+ImageFrameTimeAxis::ImageFrameTimeAxis(std::string track_id, PublicEditor& ed, ARDOUR::Session& sess, Canvas& canvas)
: AxisView(sess),
VisualTimeAxis(track_id, ed, sess, canvas)
{
diff --git a/gtk2_ardour/imageframe_time_axis.h b/gtk2_ardour/imageframe_time_axis.h
index 7625851a0a..266cb4405d 100644
--- a/gtk2_ardour/imageframe_time_axis.h
+++ b/gtk2_ardour/imageframe_time_axis.h
@@ -21,13 +21,14 @@
#ifndef __ardour_imageframe_time_axis_h__
#define __ardour_imageframe_time_axis_h__
+#include <list>
#include <gtkmm.h>
#include <libgnomecanvas/libgnomecanvas.h>
#include "ardour_dialog.h"
#include "enums.h"
#include "time_axis_view.h"
-#include <list>
+#include "canvas.h"
#include "visual_time_axis.h"
namespace ARDOUR
@@ -59,7 +60,7 @@ class ImageFrameTimeAxis : public VisualTimeAxis
* @param sess the current session
* @param canvas the parent canvas item
*/
- ImageFrameTimeAxis(std::string track_id, PublicEditor& ed, ARDOUR::Session& sess, Gtk::Widget *canvas) ;
+ ImageFrameTimeAxis(std::string track_id, PublicEditor& ed, ARDOUR::Session& sess, ArdourCanvas::Canvas& canvas) ;
/**
* Destructor
diff --git a/gtk2_ardour/marker_time_axis.cc b/gtk2_ardour/marker_time_axis.cc
index 37302cf6e0..767bb458f3 100644
--- a/gtk2_ardour/marker_time_axis.cc
+++ b/gtk2_ardour/marker_time_axis.cc
@@ -30,12 +30,12 @@
#include "ardour_ui.h"
#include "public_editor.h"
#include "imageframe_time_axis.h"
-#include "canvas-simplerect.h"
#include "selection.h"
#include "imageframe_time_axis_view.h"
#include "marker_time_axis_view.h"
#include "imageframe_view.h"
#include "marker_time_axis.h"
+#include "canvas_impl.h"
#include "i18n.h"
@@ -55,7 +55,7 @@ using namespace Gtk;
* @param name the name/id of this time axis
* @param tav the associated track view that this MarkerTimeAxis is marking up
*/
-MarkerTimeAxis::MarkerTimeAxis (PublicEditor& ed, ARDOUR::Session& sess, Widget *canvas, std::string name, TimeAxisView* tav)
+MarkerTimeAxis::MarkerTimeAxis (PublicEditor& ed, ARDOUR::Session& sess, Canvas& canvas, std::string name, TimeAxisView* tav)
: AxisView(sess),
VisualTimeAxis(name, ed, sess, canvas)
{
@@ -65,9 +65,7 @@ MarkerTimeAxis::MarkerTimeAxis (PublicEditor& ed, ARDOUR::Session& sess, Widget
_color = unique_random_color() ;
time_axis_name = name ;
- //GTK2FIX -- how to get the group? is the canvas display really a group?
- //selection_group = gnome_canvas_item_new (GNOME_CANVAS_GROUP(canvas_display), gnome_canvas_group_get_type (), 0) ;
- selection_group = new Gnome::Canvas::Group (*canvas_display);
+ selection_group = new Group (*canvas_display);
selection_group->hide();
// intialize our data items
@@ -96,28 +94,28 @@ MarkerTimeAxis::~MarkerTimeAxis()
for (list<SelectionRect*>::iterator i = free_selection_rects.begin(); i != free_selection_rects.end(); ++i)
{
- gtk_object_destroy (GTK_OBJECT((*i)->rect));
- gtk_object_destroy (GTK_OBJECT((*i)->start_trim));
- gtk_object_destroy (GTK_OBJECT((*i)->end_trim));
+ delete (*i)->rect;
+ delete (*i)->start_trim;
+ delete (*i)->end_trim;
}
for (list<SelectionRect*>::iterator i = used_selection_rects.begin(); i != used_selection_rects.end(); ++i)
{
- gtk_object_destroy (GTK_OBJECT((*i)->rect));
- gtk_object_destroy (GTK_OBJECT((*i)->start_trim));
- gtk_object_destroy (GTK_OBJECT((*i)->end_trim));
+ delete (*i)->rect;
+ delete (*i)->start_trim;
+ delete (*i)->end_trim;
}
if(selection_group)
{
- gtk_object_destroy(GTK_OBJECT (selection_group)) ;
+ delete selection_group;
selection_group = 0 ;
}
// destroy the view helper
// this handles removing and destroying individual marker items
- if(view)
- {
+
+ if(view) {
delete view ;
view = 0 ;
}
diff --git a/gtk2_ardour/marker_time_axis.h b/gtk2_ardour/marker_time_axis.h
index 480e38f5b0..a48eec7d5a 100644
--- a/gtk2_ardour/marker_time_axis.h
+++ b/gtk2_ardour/marker_time_axis.h
@@ -21,6 +21,7 @@
#ifndef __ardour_marker_time_axis_h__
#define __ardour_marker_time_axis_h__
+#include <string>
#include <gtkmm.h>
#include <libgnomecanvas/libgnomecanvas.h>
@@ -28,7 +29,7 @@
#include "route_ui.h"
#include "enums.h"
#include "time_axis_view.h"
-#include <string>
+#include "canvas.h"
#include "visual_time_axis.h"
namespace ARDOUR {
@@ -63,7 +64,7 @@ class MarkerTimeAxis : public VisualTimeAxis
* @param name the name/id of this time axis
* @param tav the associated track view that this MarkerTimeAxis is marking up
*/
- MarkerTimeAxis(PublicEditor& ed, ARDOUR::Session& sess, Gtk::Widget* canvas, std::string name, TimeAxisView* tav) ;
+ MarkerTimeAxis(PublicEditor& ed, ARDOUR::Session& sess, ArdourCanvas::Canvas& canvas, std::string name, TimeAxisView* tav) ;
/**
* Destructor
diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc
index c39736c0ff..1e98dda2d4 100644
--- a/gtk2_ardour/option_editor.cc
+++ b/gtk2_ardour/option_editor.cc
@@ -428,7 +428,7 @@ OptionEditor::setup_path_options()
vector<string> nfstrings = internationalize (native_format_strings);
set_popdown_strings (native_format_combo, nfstrings);
- native_format_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::native_format_chosen));
+ native_format_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::native_format_chosen));
fixup_combo_size (native_format_combo, nfstrings);
@@ -489,7 +489,7 @@ OptionEditor::setup_fade_options ()
dumb.push_back (lmode_strings[Session::AddHigher]);
set_popdown_strings (layer_mode_combo, dumb);
- layer_mode_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::layer_mode_chosen));
+ layer_mode_combo.signal_changed ().connect (mem_fun(*this, &OptionEditor::layer_mode_chosen));
fixup_combo_size (layer_mode_combo, layer_mode_strings);
@@ -507,7 +507,7 @@ OptionEditor::setup_fade_options ()
dumb.push_back (xfade_model_strings[ShortCrossfade]);
set_popdown_strings (xfade_model_combo, dumb);
- xfade_model_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::xfade_model_chosen));
+ xfade_model_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::xfade_model_chosen));
fixup_combo_size (xfade_model_combo, xfade_model_strings);
@@ -551,11 +551,11 @@ OptionEditor::short_xfade_adjustment_changed ()
}
}
-gint
-OptionEditor::layer_mode_chosen (GdkEventAny* ev)
+void
+OptionEditor::layer_mode_chosen ()
{
if (!session) {
- return FALSE;
+ return;
}
string which = layer_mode_combo.get_active_text ();
@@ -567,14 +567,13 @@ OptionEditor::layer_mode_chosen (GdkEventAny* ev)
} else if (which == layer_mode_strings[Session::AddHigher]) {
session->set_layer_model (Session::AddHigher);
}
- return FALSE;
}
-gint
-OptionEditor::xfade_model_chosen (GdkEventAny* ev)
+void
+OptionEditor::xfade_model_chosen ()
{
if (!session) {
- return FALSE;
+ return;
}
string which = xfade_model_combo.get_active_text ();
@@ -584,7 +583,6 @@ OptionEditor::xfade_model_chosen (GdkEventAny* ev)
} else if (which == xfade_model_strings[ShortCrossfade]) {
session->set_xfade_model (ShortCrossfade);
}
- return FALSE;
}
void
@@ -705,7 +703,7 @@ OptionEditor::setup_display_options ()
dumb.push_back (_("Medium"));
dumb.push_back (_("Long"));
set_popdown_strings (meter_hold_combo, dumb);
- meter_hold_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::meter_hold_chosen));
+ meter_hold_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::meter_hold_chosen));
hbox = manage (new HBox);
hbox->set_border_width (8);
hbox->set_spacing (8);
@@ -724,7 +722,7 @@ OptionEditor::setup_display_options ()
dumb.push_back (_("Faster"));
dumb.push_back (_("Fastest"));
set_popdown_strings (meter_falloff_combo, dumb);
- meter_falloff_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::meter_falloff_chosen));
+ meter_falloff_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::meter_falloff_chosen));
hbox = manage (new HBox);
hbox->set_border_width (8);
hbox->set_spacing (8);
@@ -747,8 +745,8 @@ OptionEditor::setup_display_options ()
follow_playhead_button.set_active (editor.follow_playhead());
}
-gint
-OptionEditor::meter_hold_chosen (GdkEventAny* ev)
+void
+OptionEditor::meter_hold_chosen ()
{
if (session) {
string str = meter_hold_combo.get_active_text();
@@ -763,12 +761,10 @@ OptionEditor::meter_hold_chosen (GdkEventAny* ev)
session->set_meter_hold (200);
}
}
-
- return TRUE;
}
-gint
-OptionEditor::meter_falloff_chosen (GdkEventAny* ev)
+void
+OptionEditor::meter_falloff_chosen ()
{
if (session) {
string str = meter_falloff_combo.get_active_text();
@@ -789,8 +785,6 @@ OptionEditor::meter_falloff_chosen (GdkEventAny* ev)
session->set_meter_falloff (2.5f);
}
}
-
- return TRUE;
}
void
@@ -834,7 +828,7 @@ OptionEditor::setup_sync_options ()
positional_sync_strings = internationalize (psync_strings);
slave_type_combo.set_name ("OptionsEntry");
- slave_type_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::slave_type_chosen));
+ slave_type_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::slave_type_chosen));
dumb.clear ();
dumb.push_back (X_("24 FPS"));
@@ -843,7 +837,7 @@ OptionEditor::setup_sync_options ()
dumb.push_back (X_("30 FPS non-drop"));
set_popdown_strings (smpte_fps_combo, dumb);
- smpte_fps_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::smpte_fps_chosen));
+ smpte_fps_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::smpte_fps_chosen));
smpte_offset_clock.set_mode (AudioClock::SMPTE);
smpte_offset_clock.ValueChanged.connect (mem_fun(*this, &OptionEditor::smpte_offset_chosen));
@@ -911,8 +905,8 @@ OptionEditor::smpte_offset_negative_clicked ()
}
}
-gint
-OptionEditor::smpte_fps_chosen (GdkEventAny* ev)
+void
+OptionEditor::smpte_fps_chosen ()
{
if (session) {
string str = smpte_fps_combo.get_active_text();
@@ -927,8 +921,6 @@ OptionEditor::smpte_fps_chosen (GdkEventAny* ev)
session->set_smpte_type (30.0, false);
}
}
-
- return TRUE;
}
void
@@ -1466,13 +1458,13 @@ OptionEditor::session_control_changed (Session::ControlType t)
}
}
-gint
-OptionEditor::native_format_chosen (GdkEventAny *ignored)
+void
+OptionEditor::native_format_chosen ()
{
string which;
if (session == 0) {
- return FALSE;
+ return;
}
bool use_bwf = (native_format_combo.get_active_text() == native_format_strings[0]);
@@ -1481,17 +1473,15 @@ OptionEditor::native_format_chosen (GdkEventAny *ignored)
Config->set_native_format_is_bwf (use_bwf);
session->reset_native_file_format ();
}
-
- return TRUE;
}
-gint
-OptionEditor::slave_type_chosen (GdkEventAny *ignored)
+void
+OptionEditor::slave_type_chosen ()
{
string which;
if (session == 0) {
- return FALSE;
+ return;
}
which = slave_type_combo.get_active_text();
@@ -1503,7 +1493,6 @@ OptionEditor::slave_type_chosen (GdkEventAny *ignored)
} else if (which == positional_sync_strings[Session::JACK]) {
session->request_slave_source (Session::JACK);
}
- return FALSE;
}
void
@@ -1833,7 +1822,7 @@ OptionEditor::setup_keyboard_options ()
}
set_popdown_strings (edit_modifier_combo, dumb);
- edit_modifier_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::edit_modifier_chosen));
+ edit_modifier_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::edit_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
if (modifiers[x].modifier == Keyboard::edit_modifier ()) {
@@ -1860,7 +1849,7 @@ OptionEditor::setup_keyboard_options ()
edit_button_adjustment.signal_value_changed().connect (mem_fun(*this, &OptionEditor::edit_button_changed));
set_popdown_strings (delete_modifier_combo, dumb);
- delete_modifier_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::delete_modifier_chosen));
+ delete_modifier_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::delete_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
if (modifiers[x].modifier == Keyboard::delete_modifier ()) {
@@ -1887,7 +1876,7 @@ OptionEditor::setup_keyboard_options ()
delete_button_adjustment.signal_value_changed().connect (mem_fun(*this, &OptionEditor::delete_button_changed));
set_popdown_strings (snap_modifier_combo, dumb);
- snap_modifier_combo.signal_unmap_event().connect (mem_fun(*this, &OptionEditor::snap_modifier_chosen));
+ snap_modifier_combo.signal_changed().connect (mem_fun(*this, &OptionEditor::snap_modifier_chosen));
for (int x = 0; modifiers[x].name; ++x) {
if (modifiers[x].modifier == (guint) Keyboard::snap_modifier ()) {
@@ -1904,8 +1893,8 @@ OptionEditor::setup_keyboard_options ()
keyboard_mouse_table.attach (snap_modifier_combo, 1, 2, 2, 3, Gtk::FILL|Gtk::EXPAND, FILL);
}
-gint
-OptionEditor::edit_modifier_chosen (GdkEventAny *ev)
+void
+OptionEditor::edit_modifier_chosen ()
{
string txt;
@@ -1917,11 +1906,10 @@ OptionEditor::edit_modifier_chosen (GdkEventAny *ev)
break;
}
}
- return TRUE;
}
-gint
-OptionEditor::delete_modifier_chosen (GdkEventAny *ev)
+void
+OptionEditor::delete_modifier_chosen ()
{
string txt;
@@ -1933,11 +1921,10 @@ OptionEditor::delete_modifier_chosen (GdkEventAny *ev)
break;
}
}
- return TRUE;
}
-gint
-OptionEditor::snap_modifier_chosen (GdkEventAny *ev)
+void
+OptionEditor::snap_modifier_chosen ()
{
string txt;
@@ -1949,7 +1936,6 @@ OptionEditor::snap_modifier_chosen (GdkEventAny *ev)
break;
}
}
- return TRUE;
}
void
diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h
index 82771a071d..2808b18ddd 100644
--- a/gtk2_ardour/option_editor.h
+++ b/gtk2_ardour/option_editor.h
@@ -83,7 +83,7 @@ class OptionEditor : public ArdourDialog
void setup_path_options();
void add_session_paths ();
void remove_session_paths ();
- gint native_format_chosen (GdkEventAny *);
+ void native_format_chosen ();
void raid_path_changed ();
/* fades */
@@ -102,8 +102,8 @@ class OptionEditor : public ArdourDialog
void auto_xfade_clicked ();
void xfade_active_clicked ();
- gint layer_mode_chosen (GdkEventAny*);
- gint xfade_model_chosen (GdkEventAny*);
+ void layer_mode_chosen ();
+ void xfade_model_chosen ();
void setup_fade_options();
void short_xfade_adjustment_changed ();
@@ -135,8 +135,8 @@ class OptionEditor : public ArdourDialog
void show_measures_clicked ();
void strip_width_clicked ();
void follow_playhead_clicked ();
- gint meter_hold_chosen (GdkEventAny *);
- gint meter_falloff_chosen (GdkEventAny *);
+ void meter_hold_chosen ();
+ void meter_falloff_chosen ();
void display_control_changed (Editing::DisplayControl);
@@ -155,10 +155,10 @@ class OptionEditor : public ArdourDialog
void setup_sync_options ();
gint send_mtc_toggled (GdkEventButton*, Gtk::CheckButton*);
- gint slave_type_chosen (GdkEventAny*);
+ void slave_type_chosen ();
void jack_time_master_clicked ();
void jack_transport_master_clicked ();
- gint smpte_fps_chosen (GdkEventAny*);
+ void smpte_fps_chosen ();
void smpte_offset_chosen ();
void smpte_offset_negative_clicked ();
@@ -247,9 +247,9 @@ class OptionEditor : public ArdourDialog
Gtk::SpinButton edit_button_spin;
void setup_keyboard_options ();
- gint delete_modifier_chosen (GdkEventAny*);
- gint edit_modifier_chosen (GdkEventAny*);
- gint snap_modifier_chosen (GdkEventAny*);
+ void delete_modifier_chosen ();
+ void edit_modifier_chosen ();
+ void snap_modifier_chosen ();
void edit_button_changed ();
void delete_button_changed ();
diff --git a/gtk2_ardour/pan_automation_time_axis.cc b/gtk2_ardour/pan_automation_time_axis.cc
index efeb1727f8..6b614a5a47 100644
--- a/gtk2_ardour/pan_automation_time_axis.cc
+++ b/gtk2_ardour/pan_automation_time_axis.cc
@@ -26,16 +26,17 @@
#include "pan_automation_time_axis.h"
#include "automation_line.h"
+#include "canvas_impl.h"
#include "i18n.h"
using namespace ARDOUR;
using namespace Gtk;
-PanAutomationTimeAxisView::PanAutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& parent, Widget* p, std::string n)
+PanAutomationTimeAxisView::PanAutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& parent, Canvas& canvas, std::string n)
: AxisView (s),
- AutomationTimeAxisView (s, r, e, parent, p, n, X_("pan"), "")
+ AutomationTimeAxisView (s, r, e, parent, canvas, n, X_("pan"), "")
{
}
diff --git a/gtk2_ardour/pan_automation_time_axis.h b/gtk2_ardour/pan_automation_time_axis.h
index 5224bd4aca..b35ee67735 100644
--- a/gtk2_ardour/pan_automation_time_axis.h
+++ b/gtk2_ardour/pan_automation_time_axis.h
@@ -15,7 +15,7 @@ class PanAutomationTimeAxisView : public AutomationTimeAxisView
ARDOUR::Route&,
PublicEditor&,
TimeAxisView& parent_axis,
- ArdourCanvas::Group& parent,
+ ArdourCanvas::Canvas& canvas,
std::string name);
~PanAutomationTimeAxisView();
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index a70aedaf70..d155db57c6 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -479,7 +479,7 @@ PluginUI::build_control_ui (AudioEngine &engine, guint32 port_index, MIDI::Contr
control_ui->combo = new Gtk::ComboBoxText;
//control_ui->combo->set_value_in_list(true, false);
set_popdown_strings (*control_ui->combo, setup_scale_values(port_index, control_ui));
- control_ui->combo->signal_unmap_event().connect (bind (mem_fun(*this, &PluginUI::control_combo_changed), control_ui));
+ control_ui->combo->signal_changed().connect (bind (mem_fun(*this, &PluginUI::control_combo_changed), control_ui));
plugin.ParameterChanged.connect (bind (mem_fun (*this, &PluginUI::parameter_changed), control_ui));
control_ui->pack_start(control_ui->label, true, true);
control_ui->pack_start(*control_ui->combo, false, true);
@@ -873,7 +873,7 @@ PlugUIBase::PlugUIBase (PluginInsert& pi)
//combo.set_use_arrows_always(true);
set_popdown_strings (combo, plugin.get_presets());
combo.set_active_text ("");
- combo.signal_unmap_event().connect(mem_fun(*this, &PlugUIBase::setting_selected));
+ combo.signal_changed().connect(mem_fun(*this, &PlugUIBase::setting_selected));
save_button.set_name ("PluginSaveButton");
save_button.signal_clicked().connect(mem_fun(*this, &PlugUIBase::save_plugin_setting));
diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h
index 0046147c96..ef7ba1eb2a 100644
--- a/gtk2_ardour/plugin_ui.h
+++ b/gtk2_ardour/plugin_ui.h
@@ -81,7 +81,7 @@ class PlugUIBase : public sigc::trackable
Gtk::Button save_button;
Gtk::ToggleButton bypass_button;
- gint setting_selected(GdkEventAny* ignored);
+ void setting_selected();
void save_plugin_setting (void);
void bypass_toggled();
};
@@ -186,7 +186,7 @@ class PluginUI : public PlugUIBase, public Gtk::VBox
void parameter_changed (uint32_t, float, ControlUI* cui);
void update_control_display (ControlUI* cui);
void control_port_toggled (ControlUI* cui);
- bool control_combo_changed (GdkEventAny* ignored, ControlUI* cui);
+ void control_combo_changed (GdkEventAny* ignored, ControlUI* cui);
gint entry_focus_event (GdkEventFocus* ev);
void redirect_active_changed (ARDOUR::Redirect*, void*);
diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h
index 3be8123c23..7a7fa1925e 100644
--- a/gtk2_ardour/public_editor.h
+++ b/gtk2_ardour/public_editor.h
@@ -52,7 +52,7 @@ class PublicEditor : public Gtk::Window, public Stateful, public KeyboardTarget
typedef list<TimeAxisView *> TrackViewList;
- static PublicEditor* instance() { return _instance; }
+ static PublicEditor& instance() { return *_instance; }
virtual void connect_to_session (ARDOUR::Session*) = 0;
virtual ARDOUR::Session* current_session() const = 0;
diff --git a/gtk2_ardour/redirect_automation_line.cc b/gtk2_ardour/redirect_automation_line.cc
index 0879bd28a4..90acec08c4 100644
--- a/gtk2_ardour/redirect_automation_line.cc
+++ b/gtk2_ardour/redirect_automation_line.cc
@@ -35,11 +35,9 @@ using namespace ARDOUR;
RedirectAutomationLine::RedirectAutomationLine (string name, Redirect& rd, uint32_t port, Session& s,
TimeAxisView& tv, Gnome::Canvas::Group& parent,
- AutomationList& l,
- sigc::slot<bool,GdkEvent*,ControlPoint*> point_handler,
- sigc::slot<bool,GdkEvent*,AutomationLine*> line_handler),
+ AutomationList& l)
- : AutomationLine (name, tv, parent, l, point_handler, line_handler),
+ : AutomationLine (name, tv, parent, l)
session (s),
_redirect (rd),
_port (port)
diff --git a/gtk2_ardour/redirect_automation_line.h b/gtk2_ardour/redirect_automation_line.h
index 0a26a95ecb..feeb024276 100644
--- a/gtk2_ardour/redirect_automation_line.h
+++ b/gtk2_ardour/redirect_automation_line.h
@@ -24,7 +24,6 @@
#include <ardour/ardour.h>
#include <gtkmm.h>
-#include "canvas.h"
#include "automation_line.h"
namespace ARDOUR {
@@ -37,11 +36,8 @@ class TimeAxisView;
class RedirectAutomationLine : public AutomationLine
{
public:
- RedirectAutomationLine (string name, ARDOUR::Redirect&, uint32_t port, ARDOUR::Session&, TimeAxisView&,
- ArdourCanvas::Group& parent,
- ARDOUR::AutomationList&,
- sigc::slot<bool,GdkEvent*,ControlPoint*> point_handler,
- sigc::slot<bool,GdkEvent*,AutomationLine*> line_handler);
+ RedirectAutomationLine (string name, ARDOUR::Redirect&, uint32_t port, ARDOUR::Session&, TimeAxisView&,
+ ArdourCanvas::Group& parent, ARDOUR::AutomationList&);
uint32_t port() const { return _port; }
ARDOUR::Redirect& redirect() const { return _redirect; }
diff --git a/gtk2_ardour/redirect_automation_time_axis.cc b/gtk2_ardour/redirect_automation_time_axis.cc
index 236d182475..f3c6ca3776 100644
--- a/gtk2_ardour/redirect_automation_time_axis.cc
+++ b/gtk2_ardour/redirect_automation_time_axis.cc
@@ -24,17 +24,18 @@
#include "redirect_automation_time_axis.h"
#include "automation_line.h"
+#include "canvas_impl.h"
#include "i18n.h"
using namespace ARDOUR;
using namespace Gtk;
-RedirectAutomationTimeAxisView::RedirectAutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& parent, ArdourCanvas::Group& gp, std::string n,
+RedirectAutomationTimeAxisView::RedirectAutomationTimeAxisView (Session& s, Route& r, PublicEditor& e, TimeAxisView& parent, Canvas& canvas, std::string n,
uint32_t prt, Redirect& rd, string state_name)
: AxisView (s),
- AutomationTimeAxisView (s, r, e, parent, gp, n, state_name, rd.name()),
+ AutomationTimeAxisView (s, r, e, parent, canvas, n, state_name, rd.name()),
redirect (rd),
port (prt)
diff --git a/gtk2_ardour/redirect_automation_time_axis.h b/gtk2_ardour/redirect_automation_time_axis.h
index 0e57afb8b6..b8d94b2a3e 100644
--- a/gtk2_ardour/redirect_automation_time_axis.h
+++ b/gtk2_ardour/redirect_automation_time_axis.h
@@ -17,7 +17,7 @@ class RedirectAutomationTimeAxisView : public AutomationTimeAxisView
ARDOUR::Route&,
PublicEditor&,
TimeAxisView& parent,
- ArdourCanvas::Group& parent,
+ ArdourCanvas::Canvas& canvas,
std::string name,
uint32_t port,
ARDOUR::Redirect& rd,
diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h
index 7f4d88e5ec..59bb6c58ea 100644
--- a/gtk2_ardour/time_axis_view.h
+++ b/gtk2_ardour/time_axis_view.h
@@ -229,7 +229,7 @@ class TimeAxisView : public virtual AxisView
* Do anything that needs to be done to dynamically reset
* the LHS control menu.
*/
- virtual gint handle_display_menu_map_event (GdkEventAny *ev) { return FALSE; }
+ virtual bool handle_display_menu_map_event (GdkEventAny *ev) { return false; }
/**
* Build the standard LHS control size menu for the default TrackHeight options.
diff --git a/gtk2_ardour/visual_time_axis.cc b/gtk2_ardour/visual_time_axis.cc
index 0030c05fb5..1f2de282d3 100644
--- a/gtk2_ardour/visual_time_axis.cc
+++ b/gtk2_ardour/visual_time_axis.cc
@@ -41,7 +41,6 @@
#include "ardour_ui.h"
#include "public_editor.h"
#include "imageframe_time_axis.h"
-#include "canvas-simplerect.h"
#include "imageframe_time_axis_view.h"
#include "marker_time_axis_view.h"
#include "imageframe_view.h"
@@ -50,6 +49,7 @@
#include "utils.h"
#include "prompter.h"
#include "rgb_macros.h"
+#include "canvas_impl.h"
#include "i18n.h"
@@ -83,7 +83,7 @@ static const gchar* small_x_xpm[] = {
* @param sess the current session
* @param canvas the parent canvas object
*/
-VisualTimeAxis::VisualTimeAxis(std::string name, PublicEditor& ed, ARDOUR::Session& sess, Widget *canvas)
+VisualTimeAxis::VisualTimeAxis(std::string name, PublicEditor& ed, ARDOUR::Session& sess, Canvas& canvas)
: AxisView(sess),
TimeAxisView(sess,ed,(TimeAxisView*) 0, canvas),
visual_button (_("v")),
diff --git a/gtk2_ardour/visual_time_axis.h b/gtk2_ardour/visual_time_axis.h
index 43176fa6e8..2768a0aac0 100644
--- a/gtk2_ardour/visual_time_axis.h
+++ b/gtk2_ardour/visual_time_axis.h
@@ -22,14 +22,13 @@
#define __ardour_visual_time_axis_h__
#include <gtkmm.h>
-#include <libgnomecanvas/libgnomecanvas.h>
#include <gtkmm2ext/selector.h>
#include "ardour_dialog.h"
#include "route_ui.h"
#include "enums.h"
#include "time_axis_view.h"
-
+#include "canvas.h"
namespace ARDOUR
{
@@ -145,7 +144,7 @@ class VisualTimeAxis : public TimeAxisView
* @param sess the current session
* @param canvas the parent canvas object
*/
- VisualTimeAxis(std::string name, PublicEditor& ed, ARDOUR::Session& sess, Gtk::Widget* canvas) ;
+ VisualTimeAxis(std::string name, PublicEditor& ed, ARDOUR::Session& sess, ArdourCanvas::Canvas& canvas) ;
//---------------------------------------------------------------------------------------//
diff --git a/libs/gtkmm2ext/gtkmm2ext/utils.h b/libs/gtkmm2ext/gtkmm2ext/utils.h
index f9d4569e44..7de3101496 100644
--- a/libs/gtkmm2ext/gtkmm2ext/utils.h
+++ b/libs/gtkmm2ext/gtkmm2ext/utils.h
@@ -35,7 +35,7 @@ namespace Gtkmm2ext {
gint hpadding,
gint vpadding);
- void set_popdown_strings (Gtk::ComboBoxText&, std::vector<std::string>&);
+ void set_popdown_strings (Gtk::ComboBoxText&, const std::vector<std::string>&);
template<class T> void deferred_delete (void *ptr) {
delete static_cast<T *> (ptr);
diff --git a/libs/gtkmm2ext/utils.cc b/libs/gtkmm2ext/utils.cc
index 2f0bf3a98e..b82fad3c55 100644
--- a/libs/gtkmm2ext/utils.cc
+++ b/libs/gtkmm2ext/utils.cc
@@ -44,11 +44,11 @@ Gtkmm2ext::init ()
}
void
-Gtkmm2ext::set_popdown_strings (Gtk::ComboBoxText& cr, vector<string>& strings)
+Gtkmm2ext::set_popdown_strings (Gtk::ComboBoxText& cr, const vector<string>& strings)
{
cr.clear ();
- for (vector<string>::iterator i = strings.begin(); i != strings.end(); ++i) {
+ for (vector<string>::const_iterator i = strings.begin(); i != strings.end(); ++i) {
cr.append_text (*i);
}
}