void seqroll::start_paste() { long tick_s; long tick_f; int note_h; int note_l; snap_x(&m_current_x); snap_y(&m_current_x); m_drop_x = m_current_x; m_drop_y = m_current_y; m_paste = true; /* get the box that selected elements are in */ m_seq->get_clipboard_box(&tick_s, ¬e_h, &tick_f, ¬e_l); convert_tn_box_to_rect ( tick_s, tick_f, note_h, note_l, &m_selected.x, &m_selected.y, &m_selected.width, &m_selected.height ); /* adjust for clipboard being shifted to tick 0 */ m_selected.x += m_drop_x; m_selected.y += (m_drop_y - m_selected.y); }
bool perfroll::on_key_press_event(GdkEventKey* a_p0) { if (a_p0->keyval == m_mainperf->m_key_pointer) /* Move to mouse position */ { int x = 0; int y = 0; long a_tick = 0; get_pointer(x, y); if(x < 0) x = 0; snap_x(&x); convert_x(x, &a_tick); if(m_mainperf->is_jack_running()) { m_mainperf->set_reposition(); m_mainperf->set_starting_tick(a_tick); m_mainperf->position_jack(true, a_tick); } else { m_mainperf->set_reposition(); m_mainperf->set_starting_tick(a_tick); } return true; } bool ret = false; if ( m_mainperf->is_active( m_drop_sequence)) { if ( a_p0->type == GDK_KEY_PRESS ) { if ( a_p0->keyval == GDK_Delete || a_p0->keyval == GDK_BackSpace ) { m_mainperf->push_trigger_undo(m_drop_sequence); m_mainperf->get_sequence( m_drop_sequence )->del_selected_trigger(); ret = true; } if ( a_p0->state & GDK_CONTROL_MASK ) { /* cut */ if ( a_p0->keyval == GDK_x || a_p0->keyval == GDK_X ) { m_mainperf->push_trigger_undo(m_drop_sequence); m_mainperf->get_sequence( m_drop_sequence )->cut_selected_trigger(); ret = true; } /* copy */ if ( a_p0->keyval == GDK_c || a_p0->keyval == GDK_C ) { m_mainperf->get_sequence( m_drop_sequence )->copy_selected_trigger(); ret = true; } /* paste */ if ( a_p0->keyval == GDK_v || a_p0->keyval == GDK_V ) { m_mainperf->push_trigger_undo(m_drop_sequence); m_mainperf->get_sequence( m_drop_sequence )->paste_trigger(); ret = true; } } } } if ( ret == true ) { fill_background_pixmap(); queue_draw(); return true; } else return false; }