summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-06-17 22:08:51 +0000
committerCarl Hetherington <carl@carlh.net>2009-06-17 22:08:51 +0000
commit9402d3f1e3b351cfb7b5f47cb5b95faba8d77b6c (patch)
tree972658d2c33167e96454fa7a004d4e8322d7d9e9 /gtk2_ardour
parent45671f13e3b3137f876944d7b978707c16aef821 (diff)
Remove unused resize-line code. When resizing multiple tracks, resize them in proportion, as per mantis 2732.
git-svn-id: svn://localhost/ardour2/branches/3.0@5213 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor.cc184
-rw-r--r--gtk2_ardour/editor.h15
-rw-r--r--gtk2_ardour/editor_ops.cc4
-rw-r--r--gtk2_ardour/public_editor.h6
-rw-r--r--gtk2_ardour/time_axis_view.cc10
-rw-r--r--gtk2_ardour/time_axis_view.h1
6 files changed, 47 insertions, 173 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 9be36a0841..30786e9d91 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -19,11 +19,14 @@
/* Note: public Editor methods are documented in public_editor.h */
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
#include <unistd.h>
#include <cstdlib>
#include <cmath>
#include <string>
#include <algorithm>
+#include <map>
#include <boost/none.hpp>
@@ -347,9 +350,6 @@ Editor::Editor ()
}
allow_vertical_scroll = false;
no_save_visual = false;
- need_resize_line = false;
- resize_line_y = 0;
- old_resize_line_y = -1;
no_region_list_redisplay = false;
resize_idle_id = -1;
@@ -5171,169 +5171,67 @@ Editor::first_idle ()
_have_idled = true;
}
-void
-Editor::start_resize_line_ops ()
+static gboolean
+_idle_resizer (gpointer arg)
{
-#if 0
- old_resize_line_y = -1;
- resize_line_y = -1;
- need_resize_line = true;
-#endif
+ return ((Editor*)arg)->idle_resize ();
}
-void
-Editor::end_resize_line_ops ()
+/** Add a view and change to the idle track resize list.
+ * @param view View.
+ * @param h Change in height (+ve is bigger).
+ * @return Resulting height of the view.
+ */
+int32_t
+Editor::add_single_to_idle_resize (TimeAxisView* view, int32_t h)
{
-#if 0
- need_resize_line = false;
-
- if (old_resize_line_y >= 0) {
- Gdk::Rectangle r (0, old_resize_line_y, (int) _canvas_width, 3);
- Glib::RefPtr<Gdk::Window> win = get_window();
- cerr << "Final invalidation at " << old_resize_line_y << endl;
- win->invalidate_rect (r, false);
+ if (pending_resizes.find (view) != pending_resizes.end()) {
+ pending_resizes[view] += h;
+ } else {
+ pending_resizes[view] = h;
}
-#endif
+
+ return view->current_height() + pending_resizes[view];
}
void
-Editor::queue_draw_resize_line (int at)
+Editor::add_to_idle_resize (TimeAxisView* view, int32_t h)
{
-#if 0
- Glib::RefPtr<Gdk::Window> win = get_window();
-
- resize_line_y = at;
-
- if (win && _canvas_width) {
-
- int controls_width = controls_layout.get_width();
- int xroot, discard;
-
- controls_layout.get_window()->get_origin (xroot, discard);
-
- if (old_resize_line_y >= 0) {
-
- /* redraw where it used to be */
-
-
- Gdk::Rectangle r (0, old_resize_line_y - 1, controls_width + (int) _canvas_width, 3);
- win->invalidate_rect (r, true);
- cerr << "invalidate " << xroot << "," << old_resize_line_y - 1 << ' '
- << controls_width + _canvas_width << " x 3\n";
- }
-
- /* draw where it is */
-
- Gdk::Rectangle r (0, at - 1, controls_width + (int) _canvas_width, 3);
- win->invalidate_rect (r, true);
+ if (resize_idle_id < 0) {
+ resize_idle_id = g_idle_add (_idle_resizer, this);
}
-#endif
-}
-
-bool
-Editor::on_expose_event (GdkEventExpose* ev)
-{
- /* cerr << "+++ editor expose "
- << ev->area.x << ',' << ev->area.y
- << ' '
- << ev->area.width << " x " << ev->area.height
- << " need reize ? " << need_resize_line
- << endl;
- */
- bool ret = Window::on_expose_event (ev);
-
-#if 0
- if (need_resize_line) {
-
- int xroot, yroot, discard;
- int controls_width;
- /* Our root coordinates for drawing the line will be the left edge
- of the track controls, and the upper left edge of our own window.
- */
-
- get_window()->get_origin (discard, yroot);
- controls_layout.get_window()->get_origin (xroot, discard);
- controls_width = controls_layout.get_width();
-
- GdkRectangle lr;
- GdkRectangle intersection;
-
- lr.x = 0;
- lr.y = resize_line_y;
- lr.width = controls_width + (int) _canvas_width;
- lr.height = 3;
+ /* make a note of the smallest resulting height, so that we can clamp the
+ lower limit at TimeAxisView::hSmall */
- if (gdk_rectangle_intersect (&lr, &ev->area, &intersection)) {
-
- Glib::RefPtr<Gtk::Style> style (get_style());
- Glib::RefPtr<Gdk::GC> black_gc (style->get_black_gc ());
- Glib::RefPtr<Gdk::GC> gc = wrap (black_gc->gobj_copy(), false);
-
- /* draw on root window */
+ int32_t min_resulting = INT32_MAX;
- GdkWindow* win = gdk_get_default_root_window();
-
- gc->set_subwindow (Gdk::INCLUDE_INFERIORS);
- gc->set_line_attributes (3, Gdk::LINE_SOLID,
- Gdk::CAP_NOT_LAST,
- Gdk::JOIN_MITER);
-
- gdk_draw_line (win, gc->gobj(),
- 0,
- resize_line_y,
- (int) _canvas_width + controls_width,
- resize_line_y);
-#if 0
- cerr << "drew line @ " << xroot << ", " << yroot + resize_line_y
- << " to " << xroot + (int) _canvas_width + controls_width
- << ", " << yroot + resize_line_y
- << endl;
-#endif
- old_resize_line_y = resize_line_y;
- cerr << "NEXT EXPOSE SHOULD BE AT " << old_resize_line_y << endl;
- } else {
- cerr << "no intersect with "
- << lr.x << ',' << lr.y
- << ' '
- << lr.width << " x " << lr.height
- << endl;
+ if (selection->selected (view)) {
+ for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
+ min_resulting = min (min_resulting, add_single_to_idle_resize (*i, h));
}
+ } else {
+ min_resulting = min (min_resulting, add_single_to_idle_resize (view, h));
}
- //cerr << "--- editor expose\n";
-#endif
-
- return ret;
-}
-
-static gboolean
-_idle_resizer (gpointer arg)
-{
- return ((Editor*)arg)->idle_resize ();
-}
-
-void
-Editor::add_to_idle_resize (TimeAxisView* view, uint32_t h)
-{
- if (resize_idle_id < 0) {
- resize_idle_id = g_idle_add (_idle_resizer, this);
- }
-
- resize_idle_target = h;
-
- pending_resizes.push_back (view);
+ if (min_resulting < 0) {
+ min_resulting = 0;
+ }
- if (selection->selected (view) && !selection->tracks.empty()) {
- pending_resizes.insert (pending_resizes.end(), selection->tracks.begin(), selection->tracks.end());
+ /* clamp */
+ if (uint32_t (min_resulting) < TimeAxisView::hSmall) {
+ for (std::map<TimeAxisView*, int32_t>::iterator i = pending_resizes.begin(); i != pending_resizes.end(); ++i) {
+ i->second += TimeAxisView::hSmall - min_resulting;
+ }
}
}
+/** Handle pending resizing of tracks */
bool
Editor::idle_resize ()
{
- for (vector<TimeAxisView*>::iterator i = pending_resizes.begin(); i != pending_resizes.end(); ++i) {
- (*i)->idle_resize (resize_idle_target);
+ for (std::map<TimeAxisView*, int32_t>::iterator i = pending_resizes.begin(); i != pending_resizes.end(); ++i) {
+ i->first->idle_resize (i->first->current_height() + i->second);
}
pending_resizes.clear();
flush_canvas ();
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 6e30ef2954..f83ce96540 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -192,7 +192,7 @@ class Editor : public PublicEditor
TimeAxisView* get_named_time_axis(const std::string & name) ;
void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>);
- void add_to_idle_resize (TimeAxisView*, uint32_t);
+ void add_to_idle_resize (TimeAxisView*, int32_t);
RouteTimeAxisView* get_route_view_by_id (PBD::ID& id);
@@ -399,16 +399,11 @@ class Editor : public PublicEditor
void goto_visual_state (uint32_t);
void save_visual_state (uint32_t);
- void queue_draw_resize_line (int at);
- void start_resize_line_ops ();
- void end_resize_line_ops ();
-
protected:
void map_transport_state ();
void map_position_change (nframes64_t);
void on_realize();
- bool on_expose_event (GdkEventExpose*);
private:
@@ -600,10 +595,6 @@ class Editor : public PublicEditor
Gtk::VBox global_vpacker;
Gtk::VBox vpacker;
- bool need_resize_line;
- int resize_line_y;
- int old_resize_line_y;
-
Gdk::Cursor* current_canvas_cursor;
void set_canvas_cursor ();
Gdk::Cursor* which_grabber_cursor ();
@@ -2222,10 +2213,9 @@ public:
bool _have_idled;
int resize_idle_id;
- int32_t resize_idle_target;
bool idle_resize();
friend gboolean _idle_resize (gpointer);
- std::vector<TimeAxisView*> pending_resizes;
+ std::map<TimeAxisView*, int32_t> pending_resizes;
void visible_order_range (int*, int*) const;
@@ -2237,6 +2227,7 @@ public:
void update_canvas_now ();
void streamview_height_changed ();
+ int32_t add_single_to_idle_resize (TimeAxisView*, int32_t);
friend class Drag;
friend class RegionDrag;
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index a90ffb0801..de6941aa7b 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -6046,10 +6046,6 @@ Editor::set_track_height (uint32_t h)
{
TrackSelection& ts (selection->tracks);
- if (ts.empty()) {
- return;
- }
-
for (TrackSelection::iterator x = ts.begin(); x != ts.end(); ++x) {
(*x)->set_height (h);
}
diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h
index 8e366a3dd7..ed73f59258 100644
--- a/gtk2_ardour/public_editor.h
+++ b/gtk2_ardour/public_editor.h
@@ -261,7 +261,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
virtual void split_region_at_points (boost::shared_ptr<ARDOUR::Region>, ARDOUR::AnalysisFeatureList&, bool can_ferret) = 0;
virtual void mouse_add_new_marker (nframes64_t where, bool is_cd=false, bool is_xrun=false) = 0;
virtual void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>) = 0;
- virtual void add_to_idle_resize (TimeAxisView*,uint32_t) = 0;
+ virtual void add_to_idle_resize (TimeAxisView*, int32_t) = 0;
#ifdef WITH_CMT
virtual void add_imageframe_time_axis(const std::string & track_name, void*) = 0;
@@ -322,10 +322,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
virtual bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*) = 0;
#endif
- virtual void queue_draw_resize_line (int at) = 0;
- virtual void start_resize_line_ops () = 0;
- virtual void end_resize_line_ops () = 0;
-
static const int window_border_width;
static const int container_border_width;
static const int vertical_spacing;
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index b2b0bde460..8d0f4194af 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -1284,8 +1284,6 @@ bool
TimeAxisView::resizer_button_press (GdkEventButton* event)
{
_resize_drag_start = event->y_root;
- _resize_idle_target = current_height ();
- _editor.start_resize_line_ops ();
return true;
}
@@ -1293,7 +1291,6 @@ bool
TimeAxisView::resizer_button_release (GdkEventButton* ev)
{
_resize_drag_start = -1;
- _editor.end_resize_line_ops ();
return true;
}
@@ -1310,11 +1307,8 @@ TimeAxisView::resizer_motion (GdkEventMotion* ev)
return true;
}
- int32_t const delta = (int32_t) floor (_resize_drag_start - ev->y_root);
-
- _resize_idle_target = std::max (_resize_idle_target - delta, (int) hSmall);
- _editor.add_to_idle_resize (this, _resize_idle_target);
-
+ int32_t const delta = (int32_t) floor (ev->y_root - _resize_drag_start);
+ _editor.add_to_idle_resize (this, delta);
_resize_drag_start = ev->y_root;
return true;
diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h
index 56e7042548..f5d5c08ef0 100644
--- a/gtk2_ardour/time_axis_view.h
+++ b/gtk2_ardour/time_axis_view.h
@@ -347,7 +347,6 @@ private:
int _order;
uint32_t _effective_height;
double _resize_drag_start;
- int32_t _resize_idle_target;
ArdourCanvas::Group* _ghost_group;
static int const _max_order;