mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 19:56:31 +01:00
lincoln's patch for scroomer pinching, from #3222
git-svn-id: svn://localhost/ardour2/branches/3.0@7786 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
8e00b86ebb
commit
64ccab5227
2 changed files with 31 additions and 17 deletions
|
|
@ -81,6 +81,7 @@ private:
|
||||||
double grab_y;
|
double grab_y;
|
||||||
double unzoomed_val;
|
double unzoomed_val;
|
||||||
double unzoomed_page;
|
double unzoomed_page;
|
||||||
|
bool pinch;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
||||||
|
|
@ -103,17 +103,33 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev)
|
||||||
unzoomed_val = max(unzoomed_val, adj.get_lower());
|
unzoomed_val = max(unzoomed_val, adj.get_lower());
|
||||||
break;
|
break;
|
||||||
case Handle1:
|
case Handle1:
|
||||||
|
|
||||||
unzoomed_page += scale * fract * range;
|
unzoomed_page += scale * fract * range;
|
||||||
unzoomed_page = min(unzoomed_page, adj.get_upper() - unzoomed_val);
|
unzoomed_page = min(unzoomed_page, adj.get_upper() - unzoomed_val);
|
||||||
unzoomed_page = max(unzoomed_page, min_page_size);
|
unzoomed_page = max(unzoomed_page, min_page_size);
|
||||||
|
|
||||||
|
if (pinch){
|
||||||
|
temp = unzoomed_val + unzoomed_page;
|
||||||
|
unzoomed_val -= scale * fract * range * 0.5;
|
||||||
|
unzoomed_val = min(unzoomed_val, temp - min_page_size);
|
||||||
|
unzoomed_val = max(unzoomed_val, adj.get_lower());
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case Handle2:
|
case Handle2:
|
||||||
temp = unzoomed_val + unzoomed_page;
|
temp = unzoomed_val + unzoomed_page;
|
||||||
unzoomed_val += scale * fract * range;
|
unzoomed_val += scale * fract * range;
|
||||||
unzoomed_val = min(unzoomed_val, temp - min_page_size);
|
unzoomed_val = min(unzoomed_val, temp - min_page_size);
|
||||||
unzoomed_val = max(unzoomed_val, adj.get_lower());
|
unzoomed_val = max(unzoomed_val, adj.get_lower());
|
||||||
|
|
||||||
unzoomed_page = temp - unzoomed_val;
|
unzoomed_page = temp - unzoomed_val;
|
||||||
|
|
||||||
|
if (pinch){
|
||||||
|
|
||||||
|
unzoomed_page -= scale * fract * range;
|
||||||
|
}
|
||||||
|
|
||||||
|
unzoomed_page = min(unzoomed_page, adj.get_upper() - unzoomed_val);
|
||||||
unzoomed_page = max(unzoomed_page, min_page_size);
|
unzoomed_page = max(unzoomed_page, min_page_size);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -178,28 +194,18 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev)
|
||||||
val = unzoomed_val;
|
val = unzoomed_val;
|
||||||
page = unzoomed_page;
|
page = unzoomed_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
adj.set_page_size(page);
|
|
||||||
|
|
||||||
if (val == adj.get_value()) {
|
adj.set_page_size(page);
|
||||||
adj.value_changed();
|
adj.set_value(val);
|
||||||
}
|
adj.value_changed();
|
||||||
|
|
||||||
if (val < adj.get_lower()) {
|
|
||||||
adj.value_changed();
|
|
||||||
} else if (val > adj.get_upper()) {
|
|
||||||
adj.value_changed();
|
|
||||||
} else {
|
|
||||||
adj.set_value(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Scroomer::on_button_press_event (GdkEventButton* ev)
|
Scroomer::on_button_press_event (GdkEventButton* ev)
|
||||||
{
|
{
|
||||||
if (ev->button == 1) {
|
if (ev->button == 1 || ev->button == 3) {
|
||||||
Component comp = point_in(ev->y);
|
Component comp = point_in(ev->y);
|
||||||
|
|
||||||
if (comp == Total || comp == None) {
|
if (comp == Total || comp == None) {
|
||||||
|
|
@ -212,7 +218,14 @@ Scroomer::on_button_press_event (GdkEventButton* ev)
|
||||||
unzoomed_val = adj.get_value();
|
unzoomed_val = adj.get_value();
|
||||||
unzoomed_page = adj.get_page_size();
|
unzoomed_page = adj.get_page_size();
|
||||||
grab_window = ev->window;
|
grab_window = ev->window;
|
||||||
|
|
||||||
|
if (ev->button == 3){
|
||||||
|
pinch = true;
|
||||||
|
} else {
|
||||||
|
pinch = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -229,7 +242,7 @@ Scroomer::on_button_release_event (GdkEventButton* ev)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ev->button != 1) {
|
if (ev->button != 1 && ev->button != 3) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue