Reinstate mouse scroll actions (audio clocks, shuttle wheel, faders), clearing selection is undoable, fix compiler warning, add modified patch by Jon Michael Smith for mouse wheel track height adjustment and vertical canvas scrolling (thanks Jon)
git-svn-id: svn://localhost/trunk/ardour2@449 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -408,6 +408,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
|
||||
|
||||
gint shuttle_box_button_press (GdkEventButton*);
|
||||
gint shuttle_box_button_release (GdkEventButton*);
|
||||
gint shuttle_box_scroll (GdkEventScroll*);
|
||||
gint shuttle_box_motion (GdkEventMotion*);
|
||||
gint shuttle_box_expose (GdkEventExpose*);
|
||||
gint mouse_shuttle (double x, bool force);
|
||||
|
||||
@@ -306,11 +306,12 @@ ARDOUR_UI::setup_transport ()
|
||||
ARDOUR_UI::instance()->tooltips().set_tip (speed_display_box, _("Current transport speed"));
|
||||
|
||||
shuttle_box.set_flags (CAN_FOCUS);
|
||||
shuttle_box.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
shuttle_box.add_events (Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
shuttle_box.set_size_request (100, 15);
|
||||
|
||||
shuttle_box.signal_button_press_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_button_press));
|
||||
shuttle_box.signal_button_release_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_button_release));
|
||||
shuttle_box.signal_scroll_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_scroll));
|
||||
shuttle_box.signal_motion_notify_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_motion));
|
||||
shuttle_box.signal_expose_event().connect (mem_fun(*this, &ARDOUR_UI::shuttle_box_expose));
|
||||
|
||||
@@ -683,6 +684,28 @@ ARDOUR_UI::shuttle_box_button_release (GdkEventButton* ev)
|
||||
return true;
|
||||
}
|
||||
|
||||
gint
|
||||
ARDOUR_UI::shuttle_box_scroll (GdkEventScroll* ev)
|
||||
{
|
||||
if (!session) {
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (ev->direction) {
|
||||
|
||||
case GDK_SCROLL_UP:
|
||||
shuttle_fract += 0.005;
|
||||
break;
|
||||
case GDK_SCROLL_DOWN:
|
||||
shuttle_fract -= 0.005;
|
||||
break;
|
||||
}
|
||||
|
||||
use_shuttle_fract (true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
gint
|
||||
ARDOUR_UI::shuttle_box_motion (GdkEventMotion* ev)
|
||||
{
|
||||
|
||||
@@ -186,7 +186,7 @@ AudioClock::AudioClock (const string& name, bool allow_edit, bool duration, bool
|
||||
stays disabled.
|
||||
*/
|
||||
|
||||
clock_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
|
||||
clock_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::SCROLL_MASK);
|
||||
clock_base.signal_button_release_event().connect (bind (mem_fun (*this, &AudioClock::field_button_release_event), SMPTE_Hours));
|
||||
|
||||
if (editable) {
|
||||
@@ -201,17 +201,17 @@ AudioClock::setup_events ()
|
||||
{
|
||||
clock_base.set_flags (Gtk::CAN_FOCUS);
|
||||
|
||||
hours_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
minutes_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
seconds_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
frames_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
bars_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
beats_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
ticks_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
ms_hours_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
ms_minutes_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
ms_seconds_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
audio_frames_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
hours_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
minutes_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
seconds_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
frames_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
bars_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
beats_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
ticks_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
ms_hours_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
ms_minutes_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
ms_seconds_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
audio_frames_ebox.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::FOCUS_CHANGE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
|
||||
|
||||
hours_ebox.set_flags (Gtk::CAN_FOCUS);
|
||||
minutes_ebox.set_flags (Gtk::CAN_FOCUS);
|
||||
@@ -261,6 +261,18 @@ AudioClock::setup_events ()
|
||||
ms_minutes_ebox.signal_button_release_event().connect (bind (mem_fun(*this, &AudioClock::field_button_release_event), MS_Minutes));
|
||||
ms_seconds_ebox.signal_button_release_event().connect (bind (mem_fun(*this, &AudioClock::field_button_release_event), MS_Seconds));
|
||||
|
||||
hours_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), SMPTE_Hours));
|
||||
minutes_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), SMPTE_Minutes));
|
||||
seconds_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), SMPTE_Seconds));
|
||||
frames_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), SMPTE_Frames));
|
||||
audio_frames_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), AudioFrames));
|
||||
bars_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), Bars));
|
||||
beats_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), Beats));
|
||||
ticks_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), Ticks));
|
||||
ms_hours_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), MS_Hours));
|
||||
ms_minutes_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), MS_Minutes));
|
||||
ms_seconds_ebox.signal_scroll_event().connect (bind (mem_fun(*this, &AudioClock::field_button_scroll_event), MS_Seconds));
|
||||
|
||||
hours_ebox.signal_key_release_event().connect (bind (mem_fun(*this, &AudioClock::field_key_release_event), SMPTE_Hours));
|
||||
minutes_ebox.signal_key_release_event().connect (bind (mem_fun(*this, &AudioClock::field_key_release_event), SMPTE_Minutes));
|
||||
seconds_ebox.signal_key_release_event().connect (bind (mem_fun(*this, &AudioClock::field_key_release_event), SMPTE_Seconds));
|
||||
@@ -984,6 +996,51 @@ AudioClock::field_button_press_event (GdkEventButton *ev, Field field)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool
|
||||
AudioClock::field_button_scroll_event (GdkEventScroll *ev, Field field)
|
||||
{
|
||||
if (session == 0) return FALSE;
|
||||
|
||||
jack_nframes_t frames = 0;
|
||||
|
||||
switch (ev->direction) {
|
||||
|
||||
case GDK_SCROLL_UP:
|
||||
frames = get_frames (field);
|
||||
if (frames != 0) {
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
|
||||
frames *= 10;
|
||||
}
|
||||
set (current_time() + frames, true);
|
||||
ValueChanged (); /* EMIT_SIGNAL */
|
||||
}
|
||||
break;
|
||||
|
||||
case GDK_SCROLL_DOWN:
|
||||
frames = get_frames (field);
|
||||
if (frames != 0) {
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
|
||||
frames *= 10;
|
||||
}
|
||||
|
||||
if ((double)current_time() - (double)frames < 0.0) {
|
||||
set (0, true);
|
||||
} else {
|
||||
set (current_time() - frames, true);
|
||||
}
|
||||
|
||||
ValueChanged (); /* EMIT_SIGNAL */
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool
|
||||
AudioClock::field_motion_notify_event (GdkEventMotion *ev, Field field)
|
||||
{
|
||||
|
||||
@@ -153,6 +153,7 @@ class AudioClock : public Gtk::HBox
|
||||
bool field_motion_notify_event (GdkEventMotion *ev, Field);
|
||||
bool field_button_press_event (GdkEventButton *ev, Field);
|
||||
bool field_button_release_event (GdkEventButton *ev, Field);
|
||||
bool field_button_scroll_event (GdkEventScroll *ev, Field);
|
||||
bool field_key_release_event (GdkEventKey *, Field);
|
||||
bool field_focus_in_event (GdkEventFocus *, Field);
|
||||
bool field_focus_out_event (GdkEventFocus *, Field);
|
||||
|
||||
@@ -966,7 +966,7 @@ Editor::control_scroll (float fraction)
|
||||
} else if ((fraction > 0.0f) && (max_frames - session->transport_frame() < step)) {
|
||||
target = (max_frames - (current_page_frames()*2)); // allow room for slop in where the PH is on the screen
|
||||
} else {
|
||||
target = (session->transport_frame() + (fraction * current_page_frames()));
|
||||
target = (session->transport_frame() + (jack_nframes_t)(fraction * current_page_frames()));
|
||||
}
|
||||
|
||||
/* move visuals, we'll catch up with it later */
|
||||
|
||||
@@ -49,7 +49,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
|
||||
{
|
||||
int x, y;
|
||||
double wx, wy;
|
||||
|
||||
|
||||
switch (ev->direction) {
|
||||
case GDK_SCROLL_UP:
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
|
||||
@@ -72,6 +72,16 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
|
||||
jack_nframes_t where = event_frame (&event, 0, 0);
|
||||
temporal_zoom_to_frame (true, where);
|
||||
return true;
|
||||
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) {
|
||||
if (!current_stepping_trackview) {
|
||||
step_timeout = Glib::signal_timeout().connect (mem_fun(*this, &Editor::track_height_step_timeout), 500);
|
||||
if (!(current_stepping_trackview = dynamic_cast<AudioTimeAxisView*> (trackview_by_y_position (ev->y)))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
gettimeofday (&last_track_height_step_timestamp, 0);
|
||||
current_stepping_trackview->step_height (true);
|
||||
return true;
|
||||
} else {
|
||||
scroll_tracks_up_line ();
|
||||
return true;
|
||||
@@ -94,15 +104,15 @@ Editor::track_canvas_scroll (GdkEventScroll* ev)
|
||||
temporal_zoom_to_frame (false, where);
|
||||
return true;
|
||||
} else if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) {
|
||||
if (clicked_trackview) {
|
||||
if (!current_stepping_trackview) {
|
||||
step_timeout = Glib::signal_timeout().connect (mem_fun(*this, &Editor::track_height_step_timeout), 500);
|
||||
current_stepping_trackview = clicked_trackview;
|
||||
}
|
||||
gettimeofday (&last_track_height_step_timestamp, 0);
|
||||
current_stepping_trackview->step_height (true);
|
||||
if (!current_stepping_trackview) {
|
||||
step_timeout = Glib::signal_timeout().connect (mem_fun(*this, &Editor::track_height_step_timeout), 500);
|
||||
if (!(current_stepping_trackview = dynamic_cast<AudioTimeAxisView*> (trackview_by_y_position (ev->y)))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
gettimeofday (&last_track_height_step_timestamp, 0);
|
||||
current_stepping_trackview->step_height (false);
|
||||
return true;
|
||||
} else {
|
||||
scroll_tracks_down_line ();
|
||||
return true;
|
||||
|
||||
@@ -3609,11 +3609,13 @@ Editor::start_selection_grab (ArdourCanvas::Item* item, GdkEvent* event)
|
||||
void
|
||||
Editor::cancel_selection ()
|
||||
{
|
||||
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||
(*i)->hide_selection ();
|
||||
}
|
||||
begin_reversible_command (_("cancel selection"));
|
||||
selection->clear ();
|
||||
clicked_selection = 0;
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -984,7 +984,12 @@ Editor::scroll_tracks_down ()
|
||||
cnt = (int) floor (prefix);
|
||||
}
|
||||
|
||||
vertical_adjustment.set_value (vertical_adjustment.get_value() + (cnt * vertical_adjustment.get_page_size()));
|
||||
double vert_value = vertical_adjustment.get_value() + (cnt *
|
||||
vertical_adjustment.get_page_size());
|
||||
if (vert_value > vertical_adjustment.get_upper() - canvas_height) {
|
||||
vert_value = vertical_adjustment.get_upper() - canvas_height;
|
||||
}
|
||||
vertical_adjustment.set_value (vert_value);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1006,15 +1011,21 @@ Editor::scroll_tracks_up ()
|
||||
void
|
||||
Editor::scroll_tracks_down_line ()
|
||||
{
|
||||
|
||||
Gtk::Adjustment* adj = edit_vscrollbar.get_adjustment();
|
||||
adj->set_value (adj->get_value() + 10);
|
||||
double vert_value = adj->get_value() + 20;
|
||||
|
||||
if (vert_value>adj->get_upper() - canvas_height) {
|
||||
vert_value = adj->get_upper() - canvas_height;
|
||||
}
|
||||
adj->set_value (vert_value);
|
||||
}
|
||||
|
||||
void
|
||||
Editor::scroll_tracks_up_line ()
|
||||
{
|
||||
Gtk::Adjustment* adj = edit_vscrollbar.get_adjustment();
|
||||
adj->set_value (adj->get_value() - 10);
|
||||
adj->set_value (adj->get_value() - 20);
|
||||
}
|
||||
|
||||
/* ZOOM */
|
||||
|
||||
@@ -244,14 +244,14 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev)
|
||||
{
|
||||
switch (ev->direction) {
|
||||
case GDK_SCROLL_UP:
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) {
|
||||
step_height (true);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case GDK_SCROLL_DOWN:
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) {
|
||||
if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) {
|
||||
step_height (false);
|
||||
return true;
|
||||
}
|
||||
@@ -328,30 +328,35 @@ TimeAxisView::hide ()
|
||||
void
|
||||
TimeAxisView::step_height (bool bigger)
|
||||
{
|
||||
switch (height) {
|
||||
case Largest:
|
||||
if (!bigger) set_height (Large);
|
||||
break;
|
||||
case Large:
|
||||
if (bigger) set_height (Largest);
|
||||
else set_height (Larger);
|
||||
break;
|
||||
case Larger:
|
||||
if (bigger) set_height (Large);
|
||||
else set_height (Normal);
|
||||
break;
|
||||
case Normal:
|
||||
if (bigger) set_height (Larger);
|
||||
else set_height (Smaller);
|
||||
break;
|
||||
case Smaller:
|
||||
if (bigger) set_height (Normal);
|
||||
else set_height (Small);
|
||||
break;
|
||||
case Small:
|
||||
if (bigger) set_height (Smaller);
|
||||
break;
|
||||
}
|
||||
|
||||
if (height == hLargest) {
|
||||
if (!bigger) set_height (Large);
|
||||
return;
|
||||
}
|
||||
if (height == hLarge) {
|
||||
if (bigger) set_height (Largest);
|
||||
else set_height (Larger);
|
||||
return;
|
||||
}
|
||||
if (height == hLarger) {
|
||||
if (bigger) set_height (Large);
|
||||
else set_height (Normal);
|
||||
return;
|
||||
}
|
||||
if (height == hNormal) {
|
||||
if (bigger) set_height (Larger);
|
||||
else set_height (Smaller);
|
||||
return;
|
||||
}
|
||||
if (height == hSmaller) {
|
||||
if (bigger) set_height (Normal);
|
||||
else set_height (Small);
|
||||
return;
|
||||
}
|
||||
if (height == hSmall) {
|
||||
if (bigger) set_height (Smaller);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -18,6 +18,7 @@ class PixScroller : public Gtk::DrawingArea
|
||||
bool on_motion_notify_event (GdkEventMotion*);
|
||||
bool on_button_press_event (GdkEventButton*);
|
||||
bool on_button_release_event (GdkEventButton*);
|
||||
bool on_scroll_event (GdkEventScroll*);
|
||||
void on_size_request (GtkRequisition*);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -176,11 +176,34 @@ PixScroller::on_button_release_event (GdkEventButton* ev)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
PixScroller::on_scroll_event (GdkEventScroll* ev)
|
||||
{
|
||||
double scale;
|
||||
|
||||
if (ev->state & GDK_CONTROL_MASK) {
|
||||
if (ev->state & GDK_MOD1_MASK) {
|
||||
scale = 0.05;
|
||||
} else {
|
||||
scale = 0.1;
|
||||
}
|
||||
} else {
|
||||
scale = 0.5;
|
||||
}
|
||||
|
||||
switch (ev->direction) {
|
||||
|
||||
case GDK_SCROLL_UP:
|
||||
/* wheel up */
|
||||
adj.set_value (adj.get_value() + (adj.get_page_increment() * scale));
|
||||
break;
|
||||
case 5:
|
||||
case GDK_SCROLL_DOWN:
|
||||
/* wheel down */
|
||||
adj.set_value (adj.get_value() - (adj.get_page_increment() * scale));
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user