summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-11-09 22:54:24 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-11-09 22:54:24 +0000
commit95a59536a7c7e827587c215262c3ddd7929c259f (patch)
tree0b96c6d29bb9bb5cb03baee32d5407036a888440
parent1082218dfadd636865c1b84fce1ca1d6c3dd23de (diff)
make drop_paths() run in an idle handler on OS X to deal with the current DnD handling there. still need to fix drop_regions() to do the same
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4130 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/editor.h15
-rw-r--r--gtk2_ardour/editor_audio_import.cc8
-rw-r--r--gtk2_ardour/editor_canvas.cc23
3 files changed, 37 insertions, 9 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 5dffd13b7a..05066d5d8c 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1162,6 +1162,20 @@ class Editor : public PublicEditor
void bring_in_external_audio (Editing::ImportMode mode, nframes64_t& pos);
+ bool idle_drop_paths (const Glib::RefPtr<Gdk::DragContext>& context,
+ gint x,
+ gint y,
+ const Gtk::SelectionData& data,
+ guint info,
+ guint time);
+
+ void _drop_paths (const Glib::RefPtr<Gdk::DragContext>& context,
+ gint x,
+ gint y,
+ const Gtk::SelectionData& data,
+ guint info,
+ guint time);
+
void _do_import (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&);
void do_import (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&);
bool idle_do_import (vector<Glib::ustring> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t&);
@@ -1883,7 +1897,6 @@ public:
guint info,
guint time);
-
void drop_paths (const Glib::RefPtr<Gdk::DragContext>& context,
gint x,
gint y,
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index d8be18300f..41f07692ca 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -291,11 +291,7 @@ Editor::idle_do_import (vector<ustring> paths, ImportDisposition chns, ImportMod
void
Editor::do_import (vector<ustring> paths, ImportDisposition chns, ImportMode mode, SrcQuality quality, nframes64_t& pos)
{
-#ifdef GTKOSX
- Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_do_import), paths, chns, mode, quality, pos));
-#else
_do_import (paths, chns, mode, quality, pos);
-#endif
}
void
@@ -424,11 +420,7 @@ Editor::idle_do_embed (vector<ustring> paths, ImportDisposition chns, ImportMode
void
Editor::do_embed (vector<ustring> paths, ImportDisposition chns, ImportMode mode, nframes64_t& pos)
{
-#ifdef GTKOSX
- Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_do_embed), paths, chns, mode, pos));
-#else
_do_embed (paths, chns, mode, pos);
-#endif
}
void
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index fbfd4770e7..b2334ecdc7 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -456,12 +456,35 @@ Editor::track_canvas_drag_data_received (const RefPtr<Gdk::DragContext>& context
}
}
+bool
+Editor::idle_drop_paths (const RefPtr<Gdk::DragContext>& context,
+ int x, int y,
+ const SelectionData& data,
+ guint info, guint time)
+{
+ _drop_paths (context, x, y, data, info, time);
+ return false;
+}
+
void
Editor::drop_paths (const RefPtr<Gdk::DragContext>& context,
int x, int y,
const SelectionData& data,
guint info, guint time)
{
+#ifdef GTKOSX
+ Glib::signal_idle().connect (bind (mem_fun (*this, &Editor::idle_drop_paths), context, x, y, data, info, time));
+#else
+ _drop_paths (context, x, y, data, info, time);
+#endif
+}
+
+void
+Editor::_drop_paths (const RefPtr<Gdk::DragContext>& context,
+ int x, int y,
+ const SelectionData& data,
+ guint info, guint time)
+{
TimeAxisView* tvp;
AudioTimeAxisView* tv;
double cy;