mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-12 01:26:31 +01:00
fix wire DnD (for thru connections)
This commit is contained in:
parent
01251e7e14
commit
2e38195e5c
2 changed files with 13 additions and 9 deletions
|
|
@ -848,16 +848,19 @@ PluginPinDialog::darea_size_allocate (Gtk::Allocation&)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
PluginPinDialog::drag_type_matches (CtrlType ct) {
|
PluginPinDialog::drag_type_matches (const CtrlElem& e) {
|
||||||
if (!_dragging || !_selection) {
|
if (!_dragging || !_selection) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (_selection->ct == Input && ct == Sink) { return true; }
|
if (_selection->dt != e->dt) {
|
||||||
if (_selection->ct == Sink && ct == Input) { return true; }
|
return false;
|
||||||
if (_selection->ct == Output && ct == Source) { return true; }
|
}
|
||||||
if (_selection->ct == Source && ct == Output) { return true; }
|
if (_selection->ct == Input && e->ct == Sink) { return true; }
|
||||||
if (_selection->ct == Input && ct == Output) { return true; }
|
if (_selection->ct == Sink && e->ct == Input) { return true; }
|
||||||
if (_selection->ct == Output && ct == Input) { return true; }
|
if (_selection->ct == Output && e->ct == Source) { return true; }
|
||||||
|
if (_selection->ct == Source && e->ct == Output) { return true; }
|
||||||
|
if (_selection->ct == Input && e->ct == Output) { return true; }
|
||||||
|
if (_selection->ct == Output && e->ct == Input) { return true; }
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -868,7 +871,8 @@ PluginPinDialog::darea_motion_notify_event (GdkEventMotion* ev)
|
||||||
_hover.reset ();
|
_hover.reset ();
|
||||||
for (CtrlElemList::iterator i = _elements.begin (); i != _elements.end (); ++i) {
|
for (CtrlElemList::iterator i = _elements.begin (); i != _elements.end (); ++i) {
|
||||||
if (ev->x >= i->x && ev->x <= i->x + i->w
|
if (ev->x >= i->x && ev->x <= i->x + i->w
|
||||||
&& ev->y >= i->y && ev->y <= i->y + i->h && drag_type_matches (i->e->ct))
|
&& ev->y >= i->y && ev->y <= i->y + i->h
|
||||||
|
&& drag_type_matches (i->e))
|
||||||
{
|
{
|
||||||
if (!i->prelight) changed = true;
|
if (!i->prelight) changed = true;
|
||||||
i->prelight = true;
|
i->prelight = true;
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ private:
|
||||||
bool darea_motion_notify_event (GdkEventMotion*);
|
bool darea_motion_notify_event (GdkEventMotion*);
|
||||||
bool darea_button_press_event (GdkEventButton*);
|
bool darea_button_press_event (GdkEventButton*);
|
||||||
bool darea_button_release_event (GdkEventButton*);
|
bool darea_button_release_event (GdkEventButton*);
|
||||||
bool drag_type_matches (CtrlType ct);
|
bool drag_type_matches (const CtrlElem& ct);
|
||||||
|
|
||||||
void draw_io_pin (cairo_t*, const CtrlWidget&);
|
void draw_io_pin (cairo_t*, const CtrlWidget&);
|
||||||
void draw_plugin_pin (cairo_t*, const CtrlWidget&);
|
void draw_plugin_pin (cairo_t*, const CtrlWidget&);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue