summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-12-18 21:39:36 +0100
committerRobin Gareus <robin@gareus.org>2016-12-18 21:39:36 +0100
commit06938105a4c4ed4e343acaebf82087002b53e591 (patch)
tree156b515bc297436f664028e14b627b4ff3d68513
parentdae2dcd53ec10b38f649781450a7a9ff73f8e4d8 (diff)
Simplify spacer code
-rw-r--r--gtk2_ardour/ardour_spacer.h47
-rw-r--r--gtk2_ardour/ardour_ui.h2
-rw-r--r--gtk2_ardour/ardour_ui2.cc39
-rw-r--r--gtk2_ardour/editor.cc31
4 files changed, 60 insertions, 59 deletions
diff --git a/gtk2_ardour/ardour_spacer.h b/gtk2_ardour/ardour_spacer.h
new file mode 100644
index 0000000000..b2fdd56a34
--- /dev/null
+++ b/gtk2_ardour/ardour_spacer.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2016 Robin Gareus <robin@gareus.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __gtkardour_ardour_spacer_h__
+#define __gtkardour_ardour_spacer_h__
+
+#include "gtkmm2ext/cairo_widget.h"
+
+class ArdourVSpacer : public CairoWidget
+{
+public:
+ ArdourVSpacer (float r = 0.75f) : CairoWidget (), ratio (r) {}
+
+protected:
+ void render (cairo_t* cr, cairo_rectangle_t* r) {
+ float h = r->height * ratio;
+ float t = .5f * (r->height - h);
+ cairo_rectangle (cr, 0, t, 1, h);
+ cairo_set_source_rgb (cr, 0, 0, 0);
+ cairo_fill (cr);
+ }
+
+ void on_size_request (Gtk::Requisition* req) {
+ req->width = 1;
+ req->height = 0;
+ CairoWidget::on_size_request (req);
+ }
+
+ float ratio;
+};
+
+#endif
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index a8ee9dd30f..33dd9edf3a 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -380,8 +380,6 @@ public:
ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt);
- bool spacer_expose (GdkEventExpose*);
-
protected:
friend class PublicEditor;
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 4f9b48a2b3..a97303605e 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -44,6 +44,7 @@
#include "ardour/session.h"
#include "ardour/types.h"
+#include "ardour_spacer.h"
#include "ardour_ui.h"
#include "keyboard.h"
#include "public_editor.h"
@@ -70,7 +71,6 @@ using namespace Gtk;
using namespace Glib;
using namespace ARDOUR_UI_UTILS;
-
void
ARDOUR_UI::setup_tooltips ()
{
@@ -180,18 +180,6 @@ bool drag_failed (const Glib::RefPtr<Gdk::DragContext>& context, DragResult resu
}
bool
-ARDOUR_UI::spacer_expose (GdkEventExpose* ev)
-{
- cairo_t *cr = gdk_cairo_create (ev->window);
-
- cairo_rectangle (cr, 1, 0, ev->area.width-2, ev->area.height);
- cairo_set_source_rgb (cr, 0,0,0);
- cairo_fill (cr);
-
- return true;
-}
-
-bool
ARDOUR_UI::transport_expose (GdkEventExpose* ev)
{
return false;
@@ -476,9 +464,7 @@ ARDOUR_UI::setup_transport ()
transport_table.attach (*shuttle_box, 1, 2, 1, 2 , FILL, SHRINK, 3, 0);
//spacer
- EventBox *spacer = manage (new EventBox ()); spacer->set_size_request(3, 42);
- spacer->signal_expose_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::spacer_expose), false); spacer->show();
- transport_table.attach (*spacer, 2, 3, 0, 2 , FILL, SHRINK, 3, 0);
+ transport_table.attach (*(manage (new ArdourVSpacer ())), 2, 3, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
transport_table.attach (punch_label, 3, 4, 0, 1 , FILL, SHRINK, 3, 0);
transport_table.attach (layered_label, 3, 4, 1, 2 , FILL, SHRINK, 3, 0);
@@ -488,26 +474,20 @@ ARDOUR_UI::setup_transport ()
transport_table.attach (layered_button, 4, 7, 1, 2 , FILL, SHRINK, 0, 2);
//spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 42);
- spacer->signal_expose_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::spacer_expose), false); spacer->show();
- transport_table.attach (*spacer, 7, 8, 0, 2 , FILL, SHRINK, 3, 0);
+ transport_table.attach (*(manage (new ArdourVSpacer ())), 7, 8, 3, 0 , SHRINK, EXPAND|FILL, 3, 0);
transport_table.attach (follow_edits_button, 8, 9, 0, 1 , FILL, SHRINK, 2, 0);
transport_table.attach (auto_return_button, 8, 9, 1, 2 , FILL, SHRINK, 2, 0);
//spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 42);
- spacer->signal_expose_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::spacer_expose), false); spacer->show();
- transport_table.attach (*spacer, 9, 10, 0, 2 , FILL, SHRINK, 3, 0);
+ transport_table.attach (*(manage (new ArdourVSpacer ())), 9, 10, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
transport_table.attach (*primary_clock, 10, 12, 0, 1 , FILL, SHRINK, 2, 0);
transport_table.attach (*primary_clock->left_btn(), 10, 11, 1, 2 , FILL, SHRINK, 2, 0);
transport_table.attach (*primary_clock->right_btn(), 11, 12, 1, 2 , FILL, SHRINK, 2, 0);
//spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 42);
- spacer->signal_expose_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::spacer_expose), false); spacer->show();
- transport_table.attach (*spacer, 12, 13, 0, 2 , FILL, SHRINK, 3, 0);
+ transport_table.attach (*(manage (new ArdourVSpacer ())), 12, 13, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
if (!ARDOUR::Profile->get_small_screen()) {
transport_table.attach (*secondary_clock, 13, 15, 0, 1 , FILL, SHRINK, 2, 0);
@@ -516,17 +496,12 @@ ARDOUR_UI::setup_transport ()
}
//spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 42);
- spacer->signal_expose_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::spacer_expose), false); spacer->show();
- transport_table.attach (*spacer, 15, 16, 0, 2 , FILL, SHRINK, 3, 0);
+ transport_table.attach (*(manage (new ArdourVSpacer ())), 15, 16, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
transport_table.attach (*alert_box, 16, 17, 0, 2, SHRINK, EXPAND|FILL, 2, 0);
//spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 42);
- spacer->signal_expose_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::spacer_expose), false); spacer->show();
- transport_table.attach (*spacer, 17, 18, 0, 2 , FILL, SHRINK, 3, 0);
-
+ transport_table.attach (*(manage (new ArdourVSpacer ())), 17, 18, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
/* editor-meter is in transport_hbox */
transport_hbox.set_spacing (PX_SCALE(1));
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index f309fdb948..518fdce547 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -87,6 +87,7 @@
#include "actions.h"
#include "analysis_window.h"
+#include "ardour_spacer.h"
#include "audio_clock.h"
#include "audio_region_view.h"
#include "audio_streamview.h"
@@ -758,11 +759,6 @@ Editor::Editor ()
global_vpacker.set_spacing (2);
global_vpacker.set_border_width (0);
- //spacer
- EventBox *spacer = manage (new EventBox ()); spacer->set_size_request(-1, 1);
- spacer->signal_expose_event().connect (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::spacer_expose), false); spacer->show();
-// global_vpacker.pack_start (*spacer, false, false, 0);
-
global_vpacker.pack_start (toolbar_hbox, false, false);
global_vpacker.pack_start (edit_pane, true, true);
global_hpacker.pack_start (global_vpacker, true, true);
@@ -3190,38 +3186,23 @@ Editor::setup_toolbar ()
if (!ARDOUR::Profile->get_trx()) {
- //spacer
- EventBox *spacer = manage (new EventBox ()); spacer->set_size_request(3, 12);
- spacer->signal_expose_event().connect (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::spacer_expose), false); spacer->show();
- toolbar_hbox.pack_start (*spacer, false, false, 3);
+ toolbar_hbox.pack_start (*(manage (new ArdourVSpacer ())), false, false, 3);
toolbar_hbox.pack_start (_zoom_box, false, false);
- //spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 12);
- spacer->signal_expose_event().connect (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::spacer_expose), false); spacer->show();
- toolbar_hbox.pack_start (*spacer, false, false, 3);
+ toolbar_hbox.pack_start (*(manage (new ArdourVSpacer ())), false, false, 3);
toolbar_hbox.pack_start (_track_box, false, false);
- //spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 12);
- spacer->signal_expose_event().connect (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::spacer_expose), false); spacer->show();
- toolbar_hbox.pack_start (*spacer, false, false, 3);
+ toolbar_hbox.pack_start (*(manage (new ArdourVSpacer ())), false, false, 3);
toolbar_hbox.pack_start (snap_box, false, false);
- //spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 12);
- spacer->signal_expose_event().connect (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::spacer_expose), false); spacer->show();
- toolbar_hbox.pack_start (*spacer, false, false, 3);
+ toolbar_hbox.pack_start (*(manage (new ArdourVSpacer ())), false, false, 3);
toolbar_hbox.pack_start (*ep_box, false, false);
- //spacer
- spacer = manage (new EventBox ()); spacer->set_size_request(3, 12);
- spacer->signal_expose_event().connect (sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::spacer_expose), false); spacer->show();
- toolbar_hbox.pack_start (*spacer, false, false, 3);
+ toolbar_hbox.pack_start (*(manage (new ArdourVSpacer ())), false, false, 3);
toolbar_hbox.pack_start (*nudge_box, false, false);
}