Changeset 468
- Timestamp:
- 01/12/07 01:22:18 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
sweep/branches/sweep-info-panel/src/sample-display.c
r467 r468 115 115 #define MARCH_INTERVAL 300 116 116 #define PULSE_INTERVAL 450 117 #define HAND_SCROLL_INTERVAL 50 117 118 118 119 extern sw_view * last_tmp_view; … … 1812 1813 1813 1814 static gint 1815 sample_display_hand_scroll (SampleDisplay * s) 1816 { 1817 gint new_win_start, win_length; 1818 gfloat step; 1819 1820 win_length = s->view->end - s->view->start; 1821 1822 step = win_length * 1.0 / s->width; 1823 1824 new_win_start = s->view->start + s->hand_scroll_delta * step; 1825 1826 new_win_start = CLAMP(new_win_start, 0, 1827 s->view->sample->sounddata->nr_frames - 1828 (s->view->end - s->view->start)); 1829 1830 if(new_win_start != s->view->start) { 1831 sample_display_set_window (s, 1832 new_win_start, 1833 new_win_start + win_length); 1834 } else { 1835 s->hand_scroll_delta = 0; 1836 } 1837 /* 1838 g_print ("s->delta: %i new_win_start: %i\n", s->hand_scroll_delta, new_win_start); 1839 */ 1840 s->hand_scroll_delta *= 0.98; 1841 1842 return (s->hand_scroll_delta != 0); 1843 } 1844 1845 static gint 1814 1846 sample_display_scroll_left (gpointer data) 1815 1847 { … … 2076 2108 gdouble step = (gdouble)(s->view->end - s->view->start) / ((gdouble)s->width); 2077 2109 GtkAdjustment * adj = GTK_ADJUSTMENT(s->view->adj); 2078 2110 gint delta; 2111 2112 delta = s->view->hand_offset - x; 2113 2114 s->hand_scroll_delta *= 0.9; 2115 2116 if (abs (delta) > abs (s->hand_scroll_delta)) 2117 s->hand_scroll_delta = delta; 2118 /* 2119 g_print ("HT:Delta: %i, %i\n", delta, s->hand_scroll_delta); 2120 */ 2079 2121 if (s->view->hand_offset != x){ 2080 2122 move = s->view->hand_offset - x; … … 2454 2496 2455 2497 case TOOL_HAND: 2456 s->selecting = SELECTING_HAND; 2457 s->view->hand_offset = x; 2458 SET_CURSOR(widget, HAND_CLOSE); 2459 sample_display_handle_hand_motion (s, x, y); 2498 // g_print("HT:Press:\n"); 2499 s->selecting = SELECTING_HAND; 2500 s->view->hand_offset = x; 2501 s->hand_scroll_delta = 0; 2502 if (s->hand_scroll_tag){ 2503 g_source_remove (s->hand_scroll_tag); 2504 s->hand_scroll_tag = 0; 2505 } 2506 SET_CURSOR(widget, HAND_CLOSE); 2507 sample_display_handle_hand_motion (s, x, y); 2460 2508 break; 2461 2509 2462 2510 case TOOL_MARKER: 2463 s->selecting = SELECTING_MARKER;2464 sample_display_handle_marker_motion (s, x, y);2511 s->selecting = SELECTING_MARKER; 2512 sample_display_handle_marker_motion (s, x, y); 2465 2513 break; 2466 2514 … … 2607 2655 break; 2608 2656 case TOOL_HAND: 2657 // g_print("HT:Release:\n"); 2609 2658 s->view->hand_offset = -1; 2659 2660 s->hand_scroll_tag = g_timeout_add (HAND_SCROLL_INTERVAL, 2661 (GSourceFunc)sample_display_hand_scroll, 2662 s); 2663 2610 2664 break; 2611 2665 … … 3214 3268 s->pulsing_tag = 0; 3215 3269 s->pulse = FALSE; 3270 s->hand_scroll_tag = 0; 3216 3271 s->mouse_x = 0; 3217 3272 s->mouse_offset = 0; sweep/branches/sweep-info-panel/src/sample-display.h
r459 r468 97 97 gboolean pulse; 98 98 99 gint hand_scroll_tag; /* gtk_timeout tag for natural hand scrolling */ 100 gint hand_scroll_delta; /* natural hand scrolling */ 101 99 102 /* Window panning */ 100 103 int selecting_x0; /* the coordinate where the mouse was clicked */
