Merge branch 'master' into windows
[ardour.git] / gtk2_ardour / canvas_patch_change.cc
index 1958ea2b5efc5c37b03b5fd56aca17892c8828fa..7ab0eefd8c59a107122719c2b126651b7ef0e416 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "gtkmm2ext/keyboard.h"
 #include "ardour/instrument_info.h"
+#include "midi++/midnam_patch.h"
 
 #include "ardour_ui.h"
 #include "midi_region_view.h"
@@ -92,10 +93,10 @@ CanvasPatchChange::initialize_popup_menus()
                     ++bank) {
                        Gtk::Menu& patch_bank_menu = *manage(new Gtk::Menu());
                        
-                       const PatchBank::PatchNameList& patches = (*bank)->patch_name_list();
+                       const PatchNameList& patches = (*bank)->patch_name_list();
                        Gtk::Menu::MenuList& patch_menus = patch_bank_menu.items();
                        
-                       for (PatchBank::PatchNameList::const_iterator patch = patches.begin();
+                       for (PatchNameList::const_iterator patch = patches.begin();
                             patch != patches.end();
                             ++patch) {
                                std::string name = (*patch)->name();
@@ -119,10 +120,10 @@ CanvasPatchChange::initialize_popup_menus()
        } else {
                /* only one patch bank, so make it the initial menu */
 
-               const PatchBank::PatchNameList& patches = patch_banks.front()->patch_name_list();
+               const PatchNameList& patches = patch_banks.front()->patch_name_list();
                Gtk::Menu::MenuList& patch_menus = _popup.items();
                
-               for (PatchBank::PatchNameList::const_iterator patch = patches.begin();
+               for (PatchNameList::const_iterator patch = patches.begin();
                     patch != patches.end();
                     ++patch) {
                        std::string name = (*patch)->name();
@@ -154,28 +155,28 @@ in_edit_mode(Editor* editor)
 bool
 CanvasPatchChange::on_event (GdkEvent* ev)
 {
-       Editor* e;
+       /* XXX: icky dcast */
+       Editor* e = dynamic_cast<Editor*> (&_region.get_time_axis_view().editor());
+       
+       if (!in_edit_mode(e)) {
+               return false;
+       }
 
        switch (ev->type) {
        case GDK_BUTTON_PRESS:
-               /* XXX: icky dcast */
-               e = dynamic_cast<Editor*> (&_region.get_time_axis_view().editor());
-               if (in_edit_mode(e)) {
-
-                       if (Gtkmm2ext::Keyboard::is_delete_event (&ev->button)) {
-
-                               _region.delete_patch_change (this);
-                               return true;
-
-                       } else if (Gtkmm2ext::Keyboard::is_edit_event (&ev->button)) {
-
-                               _region.edit_patch_change (this);
-                               return true;
-
-                       } else if (ev->button.button == 1) {
-                               e->drags()->set (new PatchChangeDrag (e, this, &_region), ev);
-                               return true;
-                       }
+               if (Gtkmm2ext::Keyboard::is_delete_event (&ev->button)) {
+                       
+                       _region.delete_patch_change (this);
+                       return true;
+                       
+               } else if (Gtkmm2ext::Keyboard::is_edit_event (&ev->button)) {
+                       
+                       _region.edit_patch_change (this);
+                       return true;
+                       
+               } else if (ev->button.button == 1) {
+                       e->drags()->set (new PatchChangeDrag (e, this, &_region), ev);
+                       return true;
                }
 
                if (ev->button.button == 3) {
@@ -220,26 +221,20 @@ CanvasPatchChange::on_event (GdkEvent* ev)
                break;
 
        case GDK_SCROLL:
-               /* XXX: icky dcast */
-               e = dynamic_cast<Editor*> (&_region.get_time_axis_view().editor());
-               if (in_edit_mode(e)) {
-                       if (ev->scroll.direction == GDK_SCROLL_UP) {
-                               if (Keyboard::modifier_state_contains (ev->scroll.state, Keyboard::PrimaryModifier)) {
-                                       _region.previous_bank (*this);
-                               } else {
-                                       _region.previous_patch (*this);
-                               }
-                       } else if (ev->scroll.direction == GDK_SCROLL_DOWN) {
+               if (ev->scroll.direction == GDK_SCROLL_UP) {
+                       if (Keyboard::modifier_state_contains (ev->scroll.state, Keyboard::PrimaryModifier)) {
+                               _region.previous_bank (*this);
+                       } else {
+                               _region.previous_patch (*this);
+                       }
+               } else if (ev->scroll.direction == GDK_SCROLL_DOWN) {
                                if (Keyboard::modifier_state_contains (ev->scroll.state, Keyboard::PrimaryModifier)) {
                                        _region.next_bank (*this);
                                } else {
                                        _region.next_patch (*this);
                                }
-                       }
-                       return true;
-                       break;
                }
-               break;
+               return true;
 
        case GDK_ENTER_NOTIFY:
                _region.patch_entered (this);