GNOME Bugzilla – Bug 576601
Double clicking prints to the wrong printer
Last modified: 2009-08-06 07:48:33 UTC
When I brought up the print dialog, a given printer in the list was selected. If I double click on another printer fast enough, it will print on the initially selected printer and not the new one.
Created attachment 139001 [details] [review] a patch checking request_details_tag and acceptance of jobs Hi, the problem is that GtkPrintUnixDialog processes "response" signal even if there is a request for details of a printer or the printer is rejecting jobs. Regards Marek
Hmm, but this is basically ignoring the double-click in that case, no ? I think the expected behaviour would be to print to the printer that was double-clicked, anyway. If necessary, wait for the printer details to arrive before doing so...
Created attachment 139285 [details] [review] modified patch This version waits for details. It makes the dialog insensitive during getting details. It also changes behaviour of "Print" button's sensitivity. You can press it even if details are not acquired yet. Marek
Hmm, I think I need to try the patch to see how this feels, but from the description, I think that is still suboptimal. If this wait for details takes too long, the user may want to cancel (this action, not the dialog as a whole) and try another printer. It would be cool to a) show some 'busy' indication. A simple thing would be to set a wait cursor on the dialog. Maybe it would be nicer to show a little spinner and 'Getting printer information...' in the action area, on the left side. But that will have to wait until we have a spinner in GTK+ b) make Esc cancel the 'get details' operation without cancelling the dialog. Slightly tricky, since you still want Esc to cancel the dialog when there is no long-running operation. c) selecting another printer should also cancel the 'get details' operation
And what about not to allow user to press the "Print" button or double-click the printer, show the busy indication text in the status field of the printer and set the wait cursor? This would allow user to select another printer without an extra action. And when a spinner will be available we can add it there. Using Esc for cancelling of "get details" operation would often lead to cancelling dialog instead of cancelling the operation (for example when the operation takes 5 seconds and user presses it late). Marek
> And what about not to allow user to press the "Print" button or double-click > the printer, show the busy indication text in the status field of the printer > and set the wait cursor? > This would allow user to select another printer without an extra action. And > when a spinner will be available we can add it there. This sounds better to me. > Using Esc for cancelling of "get details" operation would often lead to > cancelling dialog instead of cancelling the operation (for example when the > operation takes 5 seconds and user presses it late). You are probably right here. We just need to make sure that you can simply cancel the longrunning get-details operation by selecting another printer or by closing the dialog.
Created attachment 139936 [details] [review] show busy indication Hi, this patch shows a busy indication (cursor + state message) and doesn't allow user to print when getting details. It is also possible to change printer in the middle of a details request or cancel the whole dialog. Regards Marek
+ PRINTER_LIST_COL_STATE, N_("Getting printer information..."), I think you want to use _() here, not N_() ? I don't see where the actual translation would happen, otherwise... Other than that, it looks fine to me. Please commit with that fix. And please send a quick note about the new string to gnome-i18n@gnome.org. Thanks.
> I think you want to use _() here, not N_() ? I don't see where the actual > translation would happen, otherwise... You are right, I wanted to use _() instead of N_() actually. Committed: Check for details request before print Checks for details request before sending a job to a printer. Shows busy state indication (cursor + status field). This avoids printing to wrong printer (bug #576601). Regards Marek