View Issue Details

IDProjectCategoryView StatusLast Update
0001436ardourbugspublic2008-11-21 00:00
Reporterrobbie Assigned Totimbyr  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Platformx86OSLinuxOS VersionGentoo
Summary0001436: Problems with middle-button paste in dialogs
DescriptionThe 'Create Folder' dialog (from 'new session') won't take middle-button paste at all. Right-click context 'paste' is greyed out, but there is something on the clipboard.

Paste does work when naming a new session, but it is necessary to move the cursor back over the pasted text to make the 'New' button available.

Same problem when attempting to save snapshots. This is part of my workflow under 0.99.3.
Steps To Reproduce
$ date +%Y-%m-%d-%H%M%S | tr -d [:cntrl:] | xclip

[have also tried the 'other' clipboards xclip man-page suggests]

Now try the above.
Additional InformationArdour/GTK 2.0beta11.1
   (built using 1345 and GCC version 4.1.1 (Gentoo 4.1.1))
TagsNo tags attached.

Activities

robbie

2007-05-14 18:51

reporter   ~0003971

Issue persists with Ardour/GTK 2.0.2 (built using 1810 and GCC version 4.1.1 (Gentoo 4.1.1))

timbyr

2007-05-15 04:47

developer   ~0003972

"The 'Create Folder' dialog (from 'new session') won't take middle-button paste at all. Right-click context 'paste' is greyed out, but there is something on the clipboard."

The mechanism for specifying the folder in which to create a session has changed since 0.99. The widget you are trying to paste into is used for selecting a folder and does not accept pasting text into. To paste a path you need to click on the folder selector and choose 'Other...' which will open a standard file chooser dialog and you can paste into the Location text field.

If you choose "Other..." to bring up the file chooser dialog, select a folder and then click the Add button it will add that folder as a bookmark in the list of places. The folder selector on the new session page contains the list of "places" and each time you create a new session the bookmarked folders will be available for selection.

"Paste does work when naming a new session, but it is necessary to move the cursor back over the pasted text to make the 'New' button available."

That is a bug.

"Same problem when attempting to save snapshots."

That is too.

"This is part of my workflow under 0.99.3."

Perhaps you could describe your workflow, it may help if that dialog is redesigned in the future.

robbie

2007-05-15 08:08

reporter   ~0003973

I have a loud internal critic - the only way to get anything done is to record ideas quickly. See also bug 1676.

Using 0.99.x, sections of the following are automated using a little python, bash, and Xdialog;

New session:

N1) automatic session name derived from formatted date/time
N2) a session container is created as a home for other metadata, sequences, and a journal.
N3) Ardour session instantiated: new session (within the container) created from template. Ardour opened.
N4) open journal with text editor (journal already contains the project 'name')

Reopen Session:

R1) Xdialog prompts with list of 'containers'
R2) Ardour session within container reopened
R3) journal reopened

WM rules ensure sane placement.

A WM key binding is used to push formatted date/time to clipboard for naming of snapshots, exports, etc. - hence the heavy use of middle-button paste.

It's not much of a workflow really, but it helps me to actually _produce_: no need to think about any of the details, just hit a key and hit record!

HTH

2007-05-15 09:57

 

fix_paste_in_new_session_name_entry.patch (1,964 bytes)   
Index: gtk2_ardour/new_session_dialog.cc
===================================================================
--- gtk2_ardour/new_session_dialog.cc	(revision 1843)
+++ gtk2_ardour/new_session_dialog.cc	(working copy)
@@ -427,7 +427,7 @@
 	m_limit_output_ports->signal_clicked().connect (mem_fun (*this, &NewSessionDialog::limit_outputs_clicked));
 	m_create_master_bus->signal_clicked().connect (mem_fun (*this, &NewSessionDialog::master_bus_button_clicked));
 	m_create_control_bus->signal_clicked().connect (mem_fun (*this, &NewSessionDialog::monitor_bus_button_clicked));
-	m_name->signal_key_release_event().connect(mem_fun (*this, &NewSessionDialog::entry_key_release));
+	m_name->signal_changed().connect(mem_fun (*this, &NewSessionDialog::on_new_session_name_entry_changed));
 	m_notebook->signal_switch_page().connect (mem_fun (*this, &NewSessionDialog::notebook_page_changed));
 	m_treeview->get_selection()->signal_changed().connect (mem_fun (*this, &NewSessionDialog::treeview_selection_changed));
 	m_treeview->signal_row_activated().connect (mem_fun (*this, &NewSessionDialog::recent_row_activated));
@@ -591,8 +591,8 @@
 	
 }
 
-bool
-NewSessionDialog::entry_key_release (GdkEventKey* ev)
+void
+NewSessionDialog::on_new_session_name_entry_changed ()
 {
 	if (m_name->get_text() != "") {
 		set_response_sensitive (Gtk::RESPONSE_OK, true);
@@ -600,7 +600,6 @@
 	} else {
 		set_response_sensitive (Gtk::RESPONSE_OK, false);
 	}
-	return true;
 }
 
 void
Index: gtk2_ardour/new_session_dialog.h
===================================================================
--- gtk2_ardour/new_session_dialog.h	(revision 1843)
+++ gtk2_ardour/new_session_dialog.h	(working copy)
@@ -179,7 +179,7 @@
 		    return cmp_nocase(a.first, b.first) == -1;
 	    }
 	};
-	bool entry_key_release (GdkEventKey*);
+	void on_new_session_name_entry_changed();
 	void notebook_page_changed (GtkNotebookPage*, uint);
 	void treeview_selection_changed ();
 	void file_chosen ();

2007-05-15 09:57

 

fix_paste_in_save_snapshot_dialog.patch (1,742 bytes)   
Index: libs/gtkmm2ext/gtkmm2ext/prompter.h
===================================================================
--- libs/gtkmm2ext/gtkmm2ext/prompter.h	(revision 1843)
+++ libs/gtkmm2ext/gtkmm2ext/prompter.h	(working copy)
@@ -53,11 +53,12 @@
 	void change_labels (std::string ok, std::string cancel);
 
 	void get_result (std::string &str, bool strip=true);
-        bool maybe_allow_response (GdkEventKey* );
 
   protected:
 	Gtk::Entry& the_entry() { return entry; }
 
+	void on_entry_changed ();
+
   private:
 	Gtk::Entry entry;
 	Gtk::HBox entryBox;
Index: libs/gtkmm2ext/prompter.cc
===================================================================
--- libs/gtkmm2ext/prompter.cc	(revision 1843)
+++ libs/gtkmm2ext/prompter.cc	(working copy)
@@ -70,7 +70,7 @@
 
 	get_vbox()->pack_start (entryBox);
 	show_all_children();
-	entry.signal_key_release_event().connect (mem_fun (*this, &Prompter::maybe_allow_response));
+	entry.signal_changed().connect (mem_fun (*this, &Prompter::on_entry_changed));
 	entry.signal_activate().connect (bind (mem_fun (*this, &Prompter::response), Gtk::RESPONSE_ACCEPT));
 }	
 
@@ -90,22 +90,20 @@
 	}
 }
 
-bool
-Prompter::maybe_allow_response (GdkEventKey* ev)
+void
+Prompter::on_entry_changed ()
 {
-        /* 
+	/* 
 	   This is set up so that entering text in the entry 
 	   field makes the RESPONSE_ACCEPT button active. 
 	   Of course if you haven't added a RESPONSE_ACCEPT 
 	   button, nothing will happen at all.
 	*/
 
-        if (entry.get_text() != "") {
+	if (entry.get_text() != "") {
 	  set_response_sensitive (Gtk::RESPONSE_ACCEPT, true);
 	  set_default_response (Gtk::RESPONSE_ACCEPT);
 	} else {
 	  set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
 	}
-	return true;
 }
-

timbyr

2007-05-15 10:00

developer   ~0003974

I've attached two patches to fix the issues with pasting into the new session name field and the save snapshot dialog.

paul

2007-05-16 02:43

administrator   ~0003976

tim's patches have been applied to 2.0-ongoing and trunk. please confirm that these fix the issue.

robbie

2007-05-16 19:00

reporter   ~0003980

Created a new session (no template).
Middle-button paste works for the session name - yay!
Middle-button paste works for the snapshot name - yay!
Close session, quit Ardour
Reopen session...

Ardour/GTK 2.1pre
   (built using 1801 and GCC version 4.1.1 (Gentoo 4.1.1))
Copyright (C) 1999-2007 Paul Davis
Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker

Ardour comes with ABSOLUTELY NO WARRANTY
not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
This is free software, and you are welcome to redistribute it
under certain conditions; see the source for copying conditions.
Loading ui configuration file /etc/ardour2/ardour2_ui.rc
theme_init() called from internal clearlooks engine
Loading color definition file /etc/ardour2/ardour.colors
loading system configuration file /etc/ardour2/ardour_system.rc
loading user configuration file /home/rob/.ardour2/ardour.rc
ardour: [INFO]: Using SSE optimized routines
ardour: [INFO]: looking for control protocols in /home/rob/.ardour2/surfaces/:/usr/lib/ardour2/surfaces/
ardour: [INFO]: Control surface protocol discovered: "Generic MIDI"
ardour: [INFO]: Control protocol Tranzport not usable
ardour: [INFO]: Control protocol Mackie not usable
jackd: wait for startup process exit failed
JACK tmpdir identified as [/dev/shm]
SSE2 detected
loading bindings from /etc/ardour2/ardour.bindings
Loading session /session/jams/ardour2/2007-05-16-195423 using snapshot 2007-05-16-195423 (1)
ardour-2.1pre: libs/midi++2/jack_midiport.cc:65: virtual int MIDI::JACK_MidiPort::write(MIDI::byte*, size_t, MIDI::timestamp_t): Assertion `_currently_in_cycle' failed.
Aborted (core dumped)

paul

2007-05-16 19:45

administrator   ~0003981

maybe its not obvious that this is the wrong place to report that crash, but this is the wrong place to report that crash.

this is a bug report about middle-button pasting in dialogs.

the trunk of SVN is known to be unstable. we appreciate new bug reports on issues that you discover there. if you don't want to debug new issues with us, please stick to 2.0-ongoing.

robbie

2007-05-16 19:54

reporter   ~0003982

it's obvious when thought is applied :)

timbyr

2007-05-17 00:23

developer   ~0003984

patches commited to trunk as r1850 and r1851 and on the 2.0-ongoing branch as r1852

Issue History

Date Modified Username Field Change
2007-01-27 10:44 robbie New Issue
2007-05-14 18:51 robbie Note Added: 0003971
2007-05-15 04:47 timbyr Note Added: 0003972
2007-05-15 08:08 robbie Note Added: 0003973
2007-05-15 09:57 timbyr File Added: fix_paste_in_new_session_name_entry.patch
2007-05-15 09:57 timbyr File Added: fix_paste_in_save_snapshot_dialog.patch
2007-05-15 09:58 timbyr Status new => assigned
2007-05-15 09:58 timbyr Assigned To => timbyr
2007-05-15 10:00 timbyr Note Added: 0003974
2007-05-15 10:00 timbyr Status assigned => feedback
2007-05-16 02:43 paul Note Added: 0003976
2007-05-16 19:00 robbie Note Added: 0003980
2007-05-16 19:45 paul Note Added: 0003981
2007-05-16 19:54 robbie Note Added: 0003982
2007-05-17 00:23 timbyr Status feedback => resolved
2007-05-17 00:23 timbyr Resolution open => fixed
2007-05-17 00:23 timbyr Note Added: 0003984
2008-11-21 00:00 seablade Status resolved => closed