summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor.cc140
-rw-r--r--gtk2_ardour/editor.h13
-rw-r--r--gtk2_ardour/editor_canvas.cc122
-rw-r--r--gtk2_ardour/editor_hscroller.cc1
-rw-r--r--gtk2_ardour/editor_mouse.cc2
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc2
-rw-r--r--libs/gtkmm2ext/fastmeter.cc46
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/fastmeter.h3
8 files changed, 82 insertions, 247 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index cde3e0cf45..1ac371c857 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -551,19 +551,6 @@ Editor::Editor (AudioEngine& eng)
edit_group_vbox.pack_start (edit_group_list_button, false, false);
edit_group_vbox.pack_start (edit_group_list_scroller, true, true);
- route_list_frame.set_name ("BaseFrame");
- route_list_frame.set_shadow_type (Gtk::SHADOW_IN);
- route_list_frame.add (route_list_scroller);
-
- edit_group_list_frame.set_name ("BaseFrame");
- edit_group_list_frame.set_shadow_type (Gtk::SHADOW_IN);
- edit_group_list_frame.add (edit_group_vbox);
-
- route_group_vpane.add1 (route_list_frame);
- route_group_vpane.add2 (edit_group_list_frame);
-
- list_vpacker.pack_start (route_group_vpane, true, true);
-
region_list_model = TreeStore::create (region_list_columns);
region_list_sort_model = TreeModelSort::create (region_list_model);
region_list_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
@@ -615,44 +602,21 @@ Editor::Editor (AudioEngine& eng)
named_selection_display.signal_button_press_event().connect (mem_fun(*this, &Editor::named_selection_display_button_press));
named_selection_display.get_selection()->signal_changed().connect (mem_fun (*this, &Editor::named_selection_display_selection_changed));
- region_selection_vpane.pack1 (region_list_scroller, true, true);
- region_selection_vpane.pack2 (named_selection_scroller, true, true);
-
- canvas_region_list_pane.pack1 (edit_frame, true, true);
- canvas_region_list_pane.pack2 (region_selection_vpane, true, true);
+ the_notebook.append_page (route_list_scroller, _("Tracks/Busses"));
+ the_notebook.append_page (edit_group_vbox, _("Edit Groups"));
+ the_notebook.append_page (region_list_scroller, _("Regions"));
+ the_notebook.append_page (named_selection_scroller, _("Chunks"));
+ the_notebook.set_show_tabs (true);
- track_list_canvas_pane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&track_list_canvas_pane)));
- canvas_region_list_pane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&canvas_region_list_pane)));
- route_group_vpane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&route_group_vpane)));
- region_selection_vpane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler),
- static_cast<Gtk::Paned*> (&region_selection_vpane)));
-
- track_list_canvas_pane.pack1 (list_vpacker, true, true);
- track_list_canvas_pane.pack2 (canvas_region_list_pane, true, true);
+ edit_pane.pack1 (edit_frame, true, true);
+ edit_pane.pack2 (the_notebook, true, true);
- /* provide special pane-handle event handling for easy "hide" action */
-
- /* 0: collapse to show left/upper child
- 1: collapse to show right/lower child
- */
-
- route_group_vpane.set_data ("collapse-direction", (gpointer) 0);
- region_selection_vpane.set_data ("collapse-direction", (gpointer) 0);
- canvas_region_list_pane.set_data ("collapse-direction", (gpointer) 0);
- track_list_canvas_pane.set_data ("collapse-direction", (gpointer) 1);
-
- route_group_vpane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (&route_group_vpane)));
- region_selection_vpane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (&region_selection_vpane)));
- canvas_region_list_pane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (&canvas_region_list_pane)));
- track_list_canvas_pane.signal_button_release_event().connect (bind (sigc::ptr_fun (pane_handler), static_cast<Paned*> (&track_list_canvas_pane)));
+ edit_pane.signal_size_allocate().connect_notify (bind (mem_fun(*this, &Editor::pane_allocation_handler), static_cast<Gtk::Paned*> (&edit_pane)));
top_hbox.pack_start (toolbar_frame, true, true);
HBox *hbox = manage (new HBox);
- hbox->pack_start (track_list_canvas_pane, true, true);
+ hbox->pack_start (edit_pane, true, true);
global_vpacker.pack_start (top_hbox, false, false);
global_vpacker.pack_start (*hbox, true, true);
@@ -817,7 +781,7 @@ Editor::set_frames_per_unit (double fpu)
// convert fpu to frame count
- frames = (jack_nframes_t) (fpu * canvas_width);
+ frames = (jack_nframes_t) floor (fpu * canvas_width);
/* don't allow zooms that fit more than the maximum number
of frames into an 800 pixel wide space.
@@ -907,15 +871,14 @@ Editor::zoom_adjustment_changed ()
return;
}
- double fpu = (double) zoom_range_clock.current_duration() / (double) canvas_width;
+ double fpu = zoom_range_clock.current_duration() / canvas_width;
if (fpu < 1.0) {
fpu = 1.0;
- zoom_range_clock.set ((jack_nframes_t) (fpu * canvas_width));
- }
- else if (fpu > session->current_end_frame() / (double) canvas_width) {
- fpu = session->current_end_frame() / (double) canvas_width;
- zoom_range_clock.set ((jack_nframes_t) (fpu * canvas_width));
+ zoom_range_clock.set ((jack_nframes_t) floor (fpu * canvas_width));
+ } else if (fpu > session->current_end_frame() / canvas_width) {
+ fpu = session->current_end_frame() / canvas_width;
+ zoom_range_clock.set ((jack_nframes_t) floor (fpu * canvas_width));
}
temporal_zoom (fpu);
@@ -1065,13 +1028,13 @@ Editor::map_position_change (jack_nframes_t frame)
void
Editor::center_screen (jack_nframes_t frame)
{
- float page = canvas_width * frames_per_unit;
+ double page = canvas_width * frames_per_unit;
/* if we're off the page, then scroll.
*/
if (frame < leftmost_frame || frame >= leftmost_frame + page) {
- center_screen_internal (frame,page);
+ center_screen_internal (frame, page);
}
}
@@ -2180,14 +2143,8 @@ Editor::get_state ()
geometry->add_property("x_off", string(buf));
snprintf(buf, sizeof(buf), "%d", yoff);
geometry->add_property("y_off", string(buf));
- snprintf(buf,sizeof(buf), "%d",gtk_paned_get_position (static_cast<Paned*>(&canvas_region_list_pane)->gobj()));
- geometry->add_property("canvas_region_list_pane_pos", string(buf));
- snprintf(buf,sizeof(buf), "%d", gtk_paned_get_position (static_cast<Paned*>(&track_list_canvas_pane)->gobj()));
- geometry->add_property("track_list_canvas_pane_pos", string(buf));
- snprintf(buf,sizeof(buf), "%d", gtk_paned_get_position (static_cast<Paned*>(&region_selection_vpane)->gobj()));
- geometry->add_property("region_selection_pane_pos", string(buf));
- snprintf(buf,sizeof(buf), "%d", gtk_paned_get_position (static_cast<Paned*>(&route_group_vpane)->gobj()));
- geometry->add_property("route_group_pane_pos", string(buf));
+ snprintf(buf,sizeof(buf), "%d",gtk_paned_get_position (static_cast<Paned*>(&edit_pane)->gobj()));
+ geometry->add_property("edit_pane_pos", string(buf));
node->add_child_nocopy (*geometry);
}
@@ -3738,72 +3695,21 @@ Editor::pane_allocation_handler (Gtk::Allocation &alloc, Gtk::Paned* which)
height = atoi(geometry->property("y_size")->value());
}
- if (which == static_cast<Gtk::Paned*> (&track_list_canvas_pane)) {
+ if (which == static_cast<Gtk::Paned*> (&edit_pane)) {
if (done[0]) {
return;
}
- if (!geometry || (prop = geometry->property("track_list_canvas_pane_pos")) == 0) {
+ if (!geometry || (prop = geometry->property ("edit_pane_pos")) == 0) {
pos = 75;
snprintf (buf, sizeof(buf), "%d", pos);
} else {
pos = atoi (prop->value());
}
- if ((done[0] = GTK_WIDGET(track_list_canvas_pane.gobj())->allocation.width > pos)) {
- track_list_canvas_pane.set_position (pos);
- }
-
- } else if (which == static_cast<Gtk::Paned*> (&canvas_region_list_pane)) {
-
- if (done[1]) {
- return;
- }
-
- if (!geometry || (prop = geometry->property("canvas_region_list_pane_pos")) == 0) {
- pos = width - (95 * 2);
- snprintf (buf, sizeof(buf), "%d", pos);
- } else {
- pos = atoi (prop->value());
- }
-
- if ((done[1] = GTK_WIDGET(canvas_region_list_pane.gobj())->allocation.width > pos)) {
- canvas_region_list_pane.set_position (pos);
- }
-
- } else if (which == static_cast<Gtk::Paned*> (&route_group_vpane)) {
-
- if (done[2]) {
- return;
- }
-
- if (!geometry || (prop = geometry->property("route_group_pane_pos")) == 0) {
- pos = width - (95 * 2);
- snprintf (buf, sizeof(buf), "%d", pos);
- } else {
- pos = atoi (prop->value());
- }
-
- if ((done[2] = GTK_WIDGET(route_group_vpane.gobj())->allocation.height > pos)) {
- route_group_vpane.set_position (pos);
- }
-
- } else if (which == static_cast<Gtk::Paned*> (&region_selection_vpane)) {
-
- if (done[3]) {
- return;
- }
-
- if (!geometry || (prop = geometry->property("region_selection_pane_pos")) == 0) {
- pos = width - (95 * 2);
- snprintf (buf, sizeof(buf), "%d", pos);
- } else {
- pos = atoi (prop->value());
- }
-
- if ((done[3] = GTK_WIDGET(region_selection_vpane.gobj())->allocation.height > pos)) {
- region_selection_vpane.set_position (pos);
+ if ((done[0] = GTK_WIDGET(edit_pane.gobj())->allocation.width > pos)) {
+ edit_pane.set_position (pos);
}
}
}
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 67d92360bc..7ce050fc87 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -374,8 +374,8 @@ class Editor : public PublicEditor
void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*);
- Gtk::HPaned canvas_region_list_pane;
- Gtk::HPaned track_list_canvas_pane;
+ Gtk::Notebook the_notebook;
+ Gtk::HPaned edit_pane;
Gtk::EventBox meter_base;
Gtk::HBox meter_box;
@@ -674,8 +674,8 @@ class Editor : public PublicEditor
gint hscroll_right_arrow_button_press (GdkEventButton *);
gint hscroll_right_arrow_button_release (GdkEventButton *);
- guint32 canvas_width;
- guint32 canvas_height;
+ double canvas_width;
+ double canvas_height;
Gtk::ScrolledWindow track_canvas_scroller;
Gtk::ScrolledWindow time_canvas_scroller;
@@ -765,7 +765,6 @@ class Editor : public PublicEditor
NamedSelectionDisplayModelColumns named_selection_columns;
Glib::RefPtr<Gtk::TreeStore> named_selection_model;
- Gtk::VPaned region_selection_vpane;
Gtk::TreeView named_selection_display;
Gtk::ScrolledWindow named_selection_scroller;
@@ -1404,10 +1403,6 @@ class Editor : public PublicEditor
bool audio_region_selection_covers (jack_nframes_t where);
- Gtk::VPaned route_group_vpane;
- Gtk::Frame route_list_frame;
- Gtk::Frame edit_group_list_frame;
-
/* transport range select process */
enum RangeMarkerOp {
CreateRangeMarker,
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 32fefe664d..3de31f0317 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -269,74 +269,46 @@ Editor::track_canvas_allocate (Gtk::Allocation alloc)
if (session == 0 && !ARDOUR_UI::instance()->will_create_new_session_automatically()) {
- Pango::FontDescription font = get_font_for_style (N_("FirstActionMessage"));
-
- cerr << "font for style = "
- << font.get_family() << ' '
- << font.get_size() << ' '
- << font.get_weight() << ' '
- << font.get_variant() << ' '
- << endmsg;
-
- const char *txt1 = _("Start a new session\n");
- const char *txt2 = _("via Session menu");
-
/* this mess of code is here to find out how wide this text is and
- position the message in the center of the editor window. there
- are two lines, so we use the longer of the the lines to
- compute width, and multiply the height by 2.
+ position the message in the center of the editor window.
*/
int pixel_height;
int pixel_width;
- /* this is a dummy widget that exists so that we can get the
- style from the RC file.
- */
-
- Label foo (_(txt2));
- Glib::RefPtr<Pango::Layout> layout;
+ ustring msg = string_compose ("<span face=\"sans\" style=\"normal\" weight=\"bold\" size=\"x-large\">%1%2</span>",
+ _("Start a new session\n"), _("via Session menu"));
- top_hbox.pack_start (foo);
- foo.set_name ("FirstActionMessage");
- foo.ensure_style ();
-
- layout = foo.create_pango_layout (_(txt2));
- layout->set_font_description (font);
- layout->set_font_description (font);
+ RefPtr<Pango::Layout> layout = create_pango_layout (msg);
+ Pango::FontDescription font = get_font_for_style (N_("FirstActionMessage"));
layout->get_pixel_size (pixel_width, pixel_height);
- top_hbox.remove (foo);
-
if (first_action_message == 0) {
- char txt[strlen(txt1)+strlen(txt2)+1];
-
- /* merge both lines */
-
- strcpy (txt, _(txt1));
- strcat (txt, _(txt2));
-
first_action_message = new ArdourCanvas::Text (*track_canvas.root());
first_action_message->property_font_desc() = font;
first_action_message->property_fill_color_rgba() = color_map[cFirstActionMessage];
- first_action_message->property_x() = (gdouble) (canvas_width - pixel_width) / 2.0;
- first_action_message->property_y() = (gdouble) (canvas_height/2.0) - (2.0 * (pixel_height));
+ first_action_message->property_x() = (canvas_width - pixel_width) / 2.0;
+ first_action_message->property_y() = (canvas_height/2.0) - pixel_height;
first_action_message->property_anchor() = ANCHOR_NORTH_WEST;
- first_action_message->property_text() = ustring (txt);
+ first_action_message->property_markup() = msg;
} else {
/* center it */
- first_action_message->property_x() = (gdouble) (canvas_width - pixel_width) / 2.0;
- first_action_message->property_y() = (gdouble) (canvas_height/2.0) - (2.0 * (pixel_height));
+ first_action_message->property_x() = (canvas_width - pixel_width) / 2.0;
+ first_action_message->property_y() = (canvas_height/2.0) - pixel_height;
}
}
- zoom_range_clock.set ((jack_nframes_t) (canvas_width * frames_per_unit));
+ zoom_range_clock.set ((jack_nframes_t) floor ((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);
+
+ double last_canvas_unit = ceil ((double) max_frames / frames_per_unit);
+
+ track_canvas.set_scroll_region ( 0.0, 0.0, max (last_canvas_unit, canvas_width), canvas_height);
+ time_canvas.set_scroll_region ( 0.0, 0.0, max (last_canvas_unit, canvas_width), canvas_height);
if (edit_cursor) edit_cursor->set_length (canvas_height);
if (playhead_cursor) playhead_cursor->set_length (canvas_height);
@@ -348,27 +320,27 @@ Editor::track_canvas_allocate (Gtk::Allocation alloc)
if (range_marker_drag_rect) {
range_marker_drag_rect->property_y1() = 0.0;
- range_marker_drag_rect->property_y2() = (double) canvas_height;
+ range_marker_drag_rect->property_y2() = canvas_height;
}
if (transport_loop_range_rect) {
transport_loop_range_rect->property_y1() = 0.0;
- transport_loop_range_rect->property_y2() = (double) canvas_height;
+ transport_loop_range_rect->property_y2() = canvas_height;
}
if (transport_punch_range_rect) {
transport_punch_range_rect->property_y1() = 0.0;
- transport_punch_range_rect->property_y2() = (double) canvas_height;
+ transport_punch_range_rect->property_y2() = canvas_height;
}
if (transport_punchin_line) {
transport_punchin_line->property_y1() = 0.0;
- transport_punchin_line->property_y2() = (double) canvas_height;
+ transport_punchin_line->property_y2() = canvas_height;
}
if (transport_punchout_line) {
transport_punchout_line->property_y1() = 0.0;
- transport_punchout_line->property_y2() = (double) canvas_height;
+ transport_punchout_line->property_y2() = canvas_height;
}
update_fixed_rulers ();
@@ -386,58 +358,6 @@ Editor::track_canvas_allocate (Gtk::Allocation alloc)
void
Editor::reset_scrolling_region (Gtk::Allocation* alloc)
{
- guint32 last_canvas_unit;
- double height;
- guint32 canvas_alloc_height, canvas_alloc_width;
- TrackViewList::iterator i;
-
- /* We need to make sure that the canvas always has its
- scrolling region set to larger of:
-
- - the size allocated for it (within the container its packed in)
- - the size required to see the entire session
-
- If we don't ensure at least the first of these, the canvas
- does some wierd and in my view unnecessary stuff to center
- itself within the allocated area, which causes bad, bad
- results.
-
- XXX GnomeCanvas has fixed this, and has an option to
- control the centering behaviour.
- */
-
-#if 0
- last_canvas_unit = (guint32) ceil ((float) max_frames / frames_per_unit);
-
- height = 0;
-
- if (session) {
- for (i = track_views.begin(); i != track_views.end(); ++i) {
- if ((*i)->control_parent) {
- height += (*i)->effective_height;
- height += track_spacing;
- }
- }
-
- if (height) {
- height -= track_spacing;
- }
- }
-
- canvas_height = (guint32) height;
-#endif
-
- if (alloc) {
- 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_height = 0;
- canvas_height = max (canvas_height, canvas_alloc_height);
- track_canvas.set_scroll_region ( 0.0, 0.0, max (last_canvas_unit, canvas_alloc_width), canvas_height);
}
bool
diff --git a/gtk2_ardour/editor_hscroller.cc b/gtk2_ardour/editor_hscroller.cc
index b188060350..d918983f94 100644
--- a/gtk2_ardour/editor_hscroller.cc
+++ b/gtk2_ardour/editor_hscroller.cc
@@ -147,7 +147,6 @@ Editor::hscroll_slider_button_release (GdkEventButton *ev)
return TRUE;
-
start = (gint) floor (bar_max * ((double) leftmost_frame / session->current_end_frame()));
width = (gint) floor (bar_max * ((canvas_width * frames_per_unit) / session->current_end_frame()));
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 9324bed8cc..3e43111863 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -3651,7 +3651,6 @@ Editor::drag_selection (ArdourCanvas::Item* item, GdkEvent* event)
break;
}
-
if (event->button.x >= track_canvas_scroller.get_hadjustment()->get_value() + canvas_width) {
start_canvas_autoscroll (1);
}
@@ -4184,7 +4183,6 @@ Editor::drag_range_markerbar_op (ArdourCanvas::Item* item, GdkEvent* event)
break;
}
-
if (event->button.x >= track_canvas_scroller.get_hadjustment()->get_value() + canvas_width) {
start_canvas_autoscroll (1);
}
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index 65d772db3e..0533792dd9 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -217,7 +217,7 @@ Editor::draw_measures ()
line = get_time_line ();
line->property_x1() = xpos;
line->property_x2() = xpos;
- line->property_y2() = (gdouble) canvas_height;
+ line->property_y2() = canvas_height;
line->property_color_rgba() = color;
line->raise_to_top();
line->show();
diff --git a/libs/gtkmm2ext/fastmeter.cc b/libs/gtkmm2ext/fastmeter.cc
index 240ed5f0db..5067bf5c16 100644
--- a/libs/gtkmm2ext/fastmeter.cc
+++ b/libs/gtkmm2ext/fastmeter.cc
@@ -26,16 +26,18 @@
#include <gtkmm/style.h>
using namespace Gtk;
+using namespace Gdk;
+using namespace Glib;
using namespace Gtkmm2ext;
using namespace std;
-Glib::RefPtr<Gdk::Pixmap> FastMeter::v_pixmap;
-Glib::RefPtr<Gdk::Bitmap> FastMeter::v_mask;
+RefPtr<Pixmap> FastMeter::v_pixmap;
+RefPtr<Bitmap> FastMeter::v_mask;
gint FastMeter::v_pixheight = 0;
gint FastMeter::v_pixwidth = 0;
-Glib::RefPtr<Gdk::Pixmap> FastMeter::h_pixmap;
-Glib::RefPtr<Gdk::Bitmap> FastMeter::h_mask;
+RefPtr<Pixmap> FastMeter::h_pixmap;
+RefPtr<Bitmap> FastMeter::h_mask;
gint FastMeter::h_pixheight = 0;
gint FastMeter::h_pixwidth = 0;
@@ -48,7 +50,7 @@ FastMeter::FastMeter (long hold, unsigned long dimen, Orientation o)
current_level = 0;
current_user_level = -100.0f;
- set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
+ set_events (BUTTON_PRESS_MASK|BUTTON_RELEASE_MASK);
pixrect.set_x(0);
pixrect.set_y(0);
@@ -70,12 +72,26 @@ FastMeter::~FastMeter ()
}
void
+FastMeter::on_realize ()
+{
+ DrawingArea::on_realize();
+
+ RefPtr<Style> style = get_style();
+ Color black = style->get_black();
+
+ style->set_bg (STATE_NORMAL, black);
+ style->set_bg (STATE_ACTIVE, black);
+ style->set_bg (STATE_SELECTED, black);
+ style->set_bg (STATE_INSENSITIVE, black);
+}
+
+void
FastMeter::set_vertical_xpm (const char **xpm)
{
if (v_pixmap == 0) {
gint w, h;
- v_pixmap = Gdk::Pixmap::create_from_xpm(Gdk::Colormap::get_system(), v_mask, xpm);
+ v_pixmap = Pixmap::create_from_xpm(Colormap::get_system(), v_mask, xpm);
v_pixmap->get_size(w, h);
v_pixheight = h;
@@ -89,7 +105,7 @@ FastMeter::set_horizontal_xpm (const char **xpm)
if (h_pixmap == 0) {
gint w, h;
- h_pixmap = Gdk::Pixmap::create_from_xpm(Gdk::Colormap::get_system(), h_mask, xpm);
+ h_pixmap = Pixmap::create_from_xpm(Colormap::get_system(), h_mask, xpm);
h_pixmap->get_size(w, h);
h_pixheight = h;
@@ -131,7 +147,7 @@ FastMeter::on_expose_event (GdkEventExpose* ev)
bool
FastMeter::vertical_expose (GdkEventExpose* ev)
{
- Gdk::Rectangle intersect;
+ Rectangle intersect;
gint top_of_meter;
bool blit = false;
bool intersecting = false;
@@ -139,12 +155,12 @@ FastMeter::vertical_expose (GdkEventExpose* ev)
top_of_meter = (gint) floor (v_pixheight * current_level);
pixrect.set_height(top_of_meter);
- intersect = pixrect.intersect(Glib::wrap(&ev->area), intersecting);
+ intersect = pixrect.intersect(wrap(&ev->area), intersecting);
if (intersecting) {
/* draw the part of the meter image that we need. the area we draw is bounded "in reverse" (top->bottom)
*/
- Glib::RefPtr<Gdk::Window> win(get_window());
+ RefPtr<Gdk::Window> win(get_window());
win->draw_drawable(get_style()->get_fg_gc(get_state()), v_pixmap,
intersect.get_x(), v_pixheight - top_of_meter,
intersect.get_x(), v_pixheight - top_of_meter,
@@ -156,7 +172,7 @@ FastMeter::vertical_expose (GdkEventExpose* ev)
/* draw peak bar */
if (hold_state) {
- Glib::RefPtr<Gdk::Window> win(get_window());
+ RefPtr<Gdk::Window> win(get_window());
win->draw_drawable(get_style()->get_fg_gc(get_state()), v_pixmap,
intersect.get_x(), v_pixheight - (gint) floor (v_pixheight * current_peak),
intersect.get_x(), v_pixheight - (gint) floor (v_pixheight * current_peak),
@@ -169,19 +185,19 @@ FastMeter::vertical_expose (GdkEventExpose* ev)
bool
FastMeter::horizontal_expose (GdkEventExpose* ev)
{
- Gdk::Rectangle intersect;
+ Rectangle intersect;
bool intersecting = false;
gint right_of_meter;
right_of_meter = (gint) floor (h_pixwidth * current_level);
pixrect.set_width(right_of_meter);
- intersect = pixrect.intersect(Glib::wrap(&ev->area), intersecting);
+ intersect = pixrect.intersect(wrap(&ev->area), intersecting);
if (intersecting) {
/* draw the part of the meter image that we need.
*/
- Glib::RefPtr<Gdk::Window> win(get_window());
+ RefPtr<Gdk::Window> win(get_window());
win->draw_drawable(get_style()->get_fg_gc(get_state()), h_pixmap,
intersect.get_x(), intersect.get_y(),
intersect.get_x(), intersect.get_y(),
@@ -191,7 +207,7 @@ FastMeter::horizontal_expose (GdkEventExpose* ev)
/* draw peak bar */
if (hold_state) {
- Glib::RefPtr<Gdk::Window> win(get_window());
+ RefPtr<Gdk::Window> win(get_window());
win->draw_drawable(get_style()->get_fg_gc(get_state()), h_pixmap,
right_of_meter, intersect.get_y(),
right_of_meter, intersect.get_y(),
diff --git a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
index f0e26a09ca..5c41fcba84 100644
--- a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
+++ b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h
@@ -52,7 +52,8 @@ class FastMeter : public Gtk::DrawingArea {
protected:
bool on_expose_event (GdkEventExpose*);
void on_size_request (GtkRequisition*);
-
+ void on_realize ();
+
private:
static Glib::RefPtr<Gdk::Pixmap> h_pixmap;
static Glib::RefPtr<Gdk::Bitmap> h_mask;