From fe85a922ec4a3e0cf1107adadfa50ad7b8417aa3 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 17 Jun 2010 15:06:30 +0000 Subject: [PATCH] new trim cursors from chrisg, fix up hotspots for said cursors, make Editor cursors public; note draw mode now trims existing notes (but without trim cursor :( git-svn-id: svn://localhost/ardour2/branches/3.0@7270 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor.cc | 4 +-- gtk2_ardour/editor.h | 40 +++++++++++++----------- gtk2_ardour/editor_drag.cc | 9 +++--- gtk2_ardour/editor_mouse.cc | 7 +++++ gtk2_ardour/icons/trim_left_cursor.png | Bin 467 -> 631 bytes gtk2_ardour/icons/trim_right_cursor.png | Bin 450 -> 625 bytes gtk2_ardour/midi_region_view.cc | 2 +- 7 files changed, 36 insertions(+), 26 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index b923955c8d..98287553ba 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1245,12 +1245,12 @@ Editor::build_cursors () { Glib::RefPtr apixbuf (::get_icon ("trim_left_cursor")); - left_side_trim_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 5, 17); + left_side_trim_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 5, 11); } { Glib::RefPtr apixbuf (::get_icon ("trim_right_cursor")); - right_side_trim_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 5, 17); + right_side_trim_cursor = new Gdk::Cursor (Gdk::Display::get_default(), apixbuf, 23, 11); } selector_cursor = new Gdk::Cursor (XTERM); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index d11bb309f2..65af453982 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -447,6 +447,27 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void begin_reversible_command (std::string cmd_name); void commit_reversible_command (); + /* handy cursors for everyone to use */ + + static Gdk::Cursor* cross_hair_cursor; + static Gdk::Cursor* trimmer_cursor; + static Gdk::Cursor* right_side_trim_cursor; + static Gdk::Cursor* left_side_trim_cursor; + static Gdk::Cursor* selector_cursor; + static Gdk::Cursor* grabber_cursor; + static Gdk::Cursor* grabber_edit_point_cursor; + static Gdk::Cursor* zoom_cursor; + static Gdk::Cursor* time_fx_cursor; + static Gdk::Cursor* fader_cursor; + static Gdk::Cursor* speaker_cursor; + static Gdk::Cursor* midi_pencil_cursor; + static Gdk::Cursor* midi_select_cursor; + static Gdk::Cursor* midi_resize_cursor; + static Gdk::Cursor* midi_erase_cursor; + static Gdk::Cursor* wait_cursor; + static Gdk::Cursor* timebar_cursor; + static Gdk::Cursor* transparent_cursor; + protected: void map_transport_state (); void map_position_change (nframes64_t); @@ -986,25 +1007,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD TrackViewList get_tracks_for_range_action () const; - static Gdk::Cursor* cross_hair_cursor; - static Gdk::Cursor* trimmer_cursor; - static Gdk::Cursor* right_side_trim_cursor; - static Gdk::Cursor* left_side_trim_cursor; - static Gdk::Cursor* selector_cursor; - static Gdk::Cursor* grabber_cursor; - static Gdk::Cursor* grabber_edit_point_cursor; - static Gdk::Cursor* zoom_cursor; - static Gdk::Cursor* time_fx_cursor; - static Gdk::Cursor* fader_cursor; - static Gdk::Cursor* speaker_cursor; - static Gdk::Cursor* midi_pencil_cursor; - static Gdk::Cursor* midi_select_cursor; - static Gdk::Cursor* midi_resize_cursor; - static Gdk::Cursor* midi_erase_cursor; - static Gdk::Cursor* wait_cursor; - static Gdk::Cursor* timebar_cursor; - static Gdk::Cursor* transparent_cursor; - static void build_cursors (); sigc::connection super_rapid_screen_update_connection; diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index d978029d2d..ee27e001fd 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -1592,7 +1592,7 @@ NoteResizeDrag::NoteResizeDrag (Editor* e, ArdourCanvas::Item* i) void NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor *) { - Gdk::Cursor cursor; + Gdk::Cursor* cursor; ArdourCanvas::CanvasNote* cnote = dynamic_cast(_item); Drag::start_grab (event); @@ -1603,14 +1603,15 @@ NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor *) double const middle_point = region_start + cnote->x1() + (cnote->x2() - cnote->x1()) / 2.0L; if (grab_x() <= middle_point) { - cursor = Gdk::Cursor(Gdk::LEFT_SIDE); + cursor = _editor->left_side_trim_cursor; at_front = true; } else { - cursor = Gdk::Cursor(Gdk::RIGHT_SIDE); + cursor = _editor->right_side_trim_cursor; at_front = false; } + cerr << "Set cursor for note resize\n"; - _item->grab(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, cursor, event->motion.time); + _item->grab(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK, *cursor, event->motion.time); if (event->motion.state & Keyboard::PrimaryModifier) { relative = false; diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 8aef3f9a5e..3bf0b3d352 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -663,6 +663,13 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT } break; + case NoteItem: + if (internal_editing()) { + /* trim notes if we're in internal edit mode and near the ends of the note */ + _drags->set (new NoteResizeDrag (this, item), event); + } + return true; + case StreamItem: if (internal_editing()) { _drags->set (new RegionCreateDrag (this, item, clicked_axisview), event); diff --git a/gtk2_ardour/icons/trim_left_cursor.png b/gtk2_ardour/icons/trim_left_cursor.png index d8ab14daa0eb09383a90e9260f67ec446f50c77b..7f9535195be20b14fee01ee82928d21aa62d34e5 100644 GIT binary patch delta 567 zcmV-70?7T-1NQ_WiBL{Q4GJ0x0000DNk~Le0000S0000M2nGNE0MnNI@{u7;fAmR2 zK~zYI&6Y8X8c`I5&q=b(EX<6SD;B{nWr7JNGZ>hEpjae-K(Mw;wXKazVUfmeA!Lgn z<6lT1d8}(2Y=mi|%YYy#vTF9Gab-6BP6k4qocM^4j9{g*- zUjs>&V&)%{%9&0K78{W7cRimSGsmWHJ$5*B4Rc4&bHhx{K*_e=5V_P%4$m zoa6<7x3_#zKma9@Kg#9ud@vZuY&H`SkuVHJ*YzcUClTX~>$;24Xe1&cj?@=i=3eJ#78EJ~Cq2!hYuZuj+0i2J@`aNn1xUrgqMk#V{T4X^+J002ovPDHLk FV1jnk07d`+ delta 401 zcmV;C0dD^H1k(c{iBL{Q4GJ0x0000DNk~Le0000P0000K2nGNE0C;zny^$eJe^5z8 zK~y-6W9;qi{Vy#o&43FWJ$m%+q)C%ha4H}MtXQ$)KLZ1UCj$e61`aI$|NnmmN-zu5 zuKWN0|Gzf3YKq94S5fq{WRNlA(I zz<~p=aRt}DefyXsBqUf^SXdb3x+OT^P9xCS=jXVDB`*3r?) zB%p@N(9kdiU)hBh{Qv*|F9QR^bOLI=F)%R9!6r9&a{Q361QsWXjEs!9)O`Q{|NldZ vEP49$DZ`2tE4JZMaP;WWy9^8r6ji?fmE5s4ot1^x00000NkvXXu0mjfC;Pzm diff --git a/gtk2_ardour/icons/trim_right_cursor.png b/gtk2_ardour/icons/trim_right_cursor.png index dcaf8e82877568e89713c7d8dbae0140bbdef607..c06ca71580982d1ab401f211c15da3f397beb661 100644 GIT binary patch delta 561 zcmV-10?z%y1MvhQiBL{Q4GJ0x0000DNk~Le0000S0000M2nGNE0MnNI@{u7;f9^>{ zK~zYI#g;*98c`I5&kco{fU|B&Kp7XM%c3pQj%~qzFybPmxD{Nxva9?8VZfgdDP&QY zt=rC`gpi;s5v03T!=NZA5@+h^q8N-gDrK-2?&_ZRKJI(>@Sc!F6k!;Kn@lF(ZPU1} z3y_Q?tJP|UJHoOoK8d6~0QGwPf6jH?=ONvrQmFs{A_Lyu-hK$H<#M@)dpn8>xNqzP ziija1iI7@8GN6c@ipV8^?*N{K$i9fkwTPtu87LyhB66;2+7H{d^QLKr`bJTdBgb*l zx~^Y|$c2cU>?E#^Hh_;Ja#t#q=KX%3)9IAiY}ND=%RW_MhKS`becnhExBKt)0HOZTOXJ+SXLGo%#?d!gvWgOfVk-dkh zRO(wIk$AtUW*A2Fz(S$$v|KLl)Cmv#iTVT9l5Bw<^~Vzc0000<2SrXqu0mjfpdteZ delta 384 zcmV-`0e}AS1i}L$iBL{Q4GJ0x0000DNk~Le0000P0000K2nGNE0C;zny^$eJe?Lh? zK~y-6-IcLw!cY{3|5F`OamdikfRru{hMG8LkiI~>7u;N2@&Hc0fdOB^;VvERo~;lZ zONV3$B-!kgB~8t7C@n=u3|z?I4`;ai=ki_7f%_9PLq@i32bN{smHBZTgJdB@)CX`~ zV&4iOUfWUx0L&a#JOBW2B@3yee+!40ra2>`PSr(S*XKmkszqVuzZ#Fn51Y+q9|S=G zK>hEXmg~CtcDqd{lgV>g4}gIX;^&|!N`JXrzK3D>o##3GzMr3i>~_1aq9{0uqJ!f& zQLop#FN4r@I(=Cz7LS^ywY%Le03c0Mc%Ju3L`B&IMx)V@(tTD`5; z>nCR30{{^Xgb*K%EWVL(HMjWFG7Mt|pi>1I4u^99t*V}1i1Y_prA8NjIS}bQITu<0 eMbdRF|0000button; return true; @@ -347,7 +348,6 @@ MidiRegionView::button_release (GdkEventButton* ev) if (!success) { beats = 1; } - create_note_at (event_x, event_y, beats); break; }