Merge lp:~radumstoica/ubuntu/quantal/xfce4-terminal/scroll-alternate-src-patch into lp:ubuntu/quantal/xfce4-terminal

Proposed by RaduStoica
Status: Merged
Merged at revision: 57
Proposed branch: lp:~radumstoica/ubuntu/quantal/xfce4-terminal/scroll-alternate-src-patch
Merge into: lp:ubuntu/quantal/xfce4-terminal
Diff against target: 456 lines (+93/-322)
6 files modified
.pc/applied-patches (+0/-1)
.pc/xubuntu_fix-invalid-anchor.patch/terminal/terminal-dialogs.c (+0/-313)
debian/changelog (+14/-0)
debian/patches/scroll-alternate-src-togglable.patch (+77/-0)
debian/patches/series (+1/-0)
terminal/terminal-dialogs.c (+1/-8)
To merge this branch: bzr merge lp:~radumstoica/ubuntu/quantal/xfce4-terminal/scroll-alternate-src-patch
Reviewer Review Type Date Requested Status
Iain Lane Approve
David Henningsson (community) Needs Fixing
Ubuntu branches Pending
Review via email: mp+124570@code.launchpad.net

Description of the change

Enabled scrolling in ncurses apps using mouse wheel. (lp: #947892)

To post a comment you must log in.
57. By RaduStoica

* debian/patches:
    - scroll-alternate-src-togglable.patch: enable scrolling in ncurses
      apps with mouse wheel. lp: #947892

Revision history for this message
David Henningsson (diwic) wrote :

Hi RaduStoica, and thanks for trying to help out!

I gave your merge proposal a quick review as part of the patch pilot program. And I noticed something strange while doing so - your commit does not only add the patch but also applies it, which means changes to files outside the debian directory.

Looking a bit back in history, it seems you're not the only one who has done this. As such I think it would make the most sense to do two commits: the first would just unapply all patches (to correct the previous stuff), the second one would add your patch without applying it (i e, only changes to debian/changelog, debian/patches/series and debian/patches/scroll-alternate-src-togglable.patch).

The actual patch content looks okay to me so hopefully it can be merged (by somebody with the appropriate upload rights, which I don't have) after that.

review: Needs Fixing
58. By RaduStoica

Unapplied all quilt patches.

Revision history for this message
RaduStoica (radumstoica) wrote :

> Hi RaduStoica, and thanks for trying to help out!
>
> I gave your merge proposal a quick review as part of the patch pilot program.
> And I noticed something strange while doing so - your commit does not only add
> the patch but also applies it, which means changes to files outside the debian
> directory.
>
> Looking a bit back in history, it seems you're not the only one who has done
> this. As such I think it would make the most sense to do two commits: the
> first would just unapply all patches (to correct the previous stuff), the
> second one would add your patch without applying it (i e, only changes to
> debian/changelog, debian/patches/series and debian/patches/scroll-alternate-
> src-togglable.patch).
>
> The actual patch content looks okay to me so hopefully it can be merged (by
> somebody with the appropriate upload rights, which I don't have) after that.

Thanks for taking the time to look at my branch! I'm still a bit confused about
how the quilt patching works, so that's why I commited the files with the patch
applied.

I've done a new commit now, with all patches unapplied. The patch for scrolling
in ncurses apps is still added in the debian/patches/series file, so I don't
think a second commit is needed. Let me know what's your opinion - I can make
a clean branch and add the patch to that one, if this one seems too messy.

Revision history for this message
Iain Lane (laney) wrote :

Thank you, I've merged it and uploaded to Quantal. There was no need to create a new version for the .pc fiddling - the mantra is one version per upload. Anyway, I'm sure I messed that up again while merging. It's complex :P

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== removed file '.pc/applied-patches'
2--- .pc/applied-patches 2012-04-05 20:07:06 +0000
3+++ .pc/applied-patches 1970-01-01 00:00:00 +0000
4@@ -1,1 +0,0 @@
5-xubuntu_fix-invalid-anchor.patch
6
7=== removed directory '.pc/xubuntu_fix-invalid-anchor.patch'
8=== removed directory '.pc/xubuntu_fix-invalid-anchor.patch/terminal'
9=== removed file '.pc/xubuntu_fix-invalid-anchor.patch/terminal/terminal-dialogs.c'
10--- .pc/xubuntu_fix-invalid-anchor.patch/terminal/terminal-dialogs.c 2012-04-05 20:07:06 +0000
11+++ .pc/xubuntu_fix-invalid-anchor.patch/terminal/terminal-dialogs.c 1970-01-01 00:00:00 +0000
12@@ -1,313 +0,0 @@
13-/*-
14- * Copyright (c) 2005-2007 Benedikt Meurer <benny@xfce.org>
15- *
16- * This program is free software; you can redistribute it and/or modify it
17- * under the terms of the GNU General Public License as published by the Free
18- * Software Foundation; either version 2 of the License, or (at your option)
19- * any later version.
20- *
21- * This program is distributed in the hope that it will be useful, but WITHOUT
22- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
24- * more details.
25- *
26- * You should have received a copy of the GNU General Public License along with
27- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
28- * Place, Suite 330, Boston, MA 02111-1307 USA
29- */
30-
31-#ifdef HAVE_CONFIG_H
32-#include <config.h>
33-#endif
34-
35-#ifdef HAVE_STDARG_H
36-#include <stdarg.h>
37-#endif
38-#ifdef HAVE_LOCALE_H
39-#include <locale.h>
40-#endif
41-
42-#include <exo/exo.h>
43-
44-#include <terminal/terminal-dialogs.h>
45-#include <terminal/terminal-private.h>
46-
47-
48-
49-/**
50- * terminal_dialogs_show_about:
51- * @parent : the parent #GtkWindow or %NULL.
52- * @title : the software title.
53- * @format : the printf()-style format for the main text in the about dialog.
54- * @... : argument list for the @format.
55- *
56- * Displays the Terminal about dialog with @format as main text.
57- **/
58-void
59-terminal_dialogs_show_about (GtkWindow *parent)
60-{
61- static const gchar *authors[] =
62- {
63- "Benedikt Meurer <benny@xfce.org>",
64- "Nick Schermer <nick@xfce.org>",
65- NULL,
66- };
67-
68- static const gchar *artists[] =
69- {
70- "Francois Le Clainche <fleclainche@wanadoo.fr>",
71- NULL,
72- };
73-
74- static const gchar *documenters[] =
75- {
76- "Benedikt Meurer <benny@xfce.org>",
77- "Andrew Conkling <andrewski@fr.st>",
78- "Nick Schermer <nick@xfce.org>",
79- NULL,
80- };
81-
82- GdkPixbuf *logo = NULL;
83- GtkIconTheme *theme;
84-
85- /* try to load the about logo */
86- theme = gtk_icon_theme_get_default ();
87- if (gtk_icon_theme_has_icon (theme, "utilities-terminal"))
88- logo = gtk_icon_theme_load_icon (theme, "utilities-terminal", 128, GTK_ICON_LOOKUP_FORCE_SVG, NULL);
89- if (logo == NULL)
90- logo = gdk_pixbuf_new_from_file_at_size (DATADIR "/icons/hicolor/scalable/apps/Terminal.svg", 128, 128, NULL);
91-
92- /* set dialog hook on gtk versions older then 2.18 */
93-#if !GTK_CHECK_VERSION (2, 18, 0)
94-#if EXO_CHECK_VERSION (0, 5, 0)
95- gtk_about_dialog_set_email_hook (exo_gtk_url_about_dialog_hook, NULL, NULL);
96- gtk_about_dialog_set_url_hook (exo_gtk_url_about_dialog_hook, NULL, NULL);
97-#else
98- gtk_about_dialog_set_email_hook (exo_url_about_dialog_hook, NULL, NULL);
99- gtk_about_dialog_set_url_hook (exo_url_about_dialog_hook, NULL, NULL);
100-#endif
101-#endif
102-
103- /* open the about dialog */
104- gtk_show_about_dialog (parent,
105- "authors", authors,
106- "artists", artists,
107- "comments", _("Xfce Terminal Emulator"),
108- "documenters", documenters,
109- "copyright", "Copyright \302\251 2003-2008 Benedikt Meurer\n"
110- "Copyright \302\251 2007-2011 Nick Schermer",
111- "license", XFCE_LICENSE_GPL,
112- "logo", logo,
113- "program-name", g_get_application_name (),
114- "translator-credits", _("translator-credits"),
115- "version", PACKAGE_VERSION,
116- "website", "http://goodies.xfce.org/projects/applications/terminal",
117- "website-label", _("Visit Terminal website"),
118- NULL);
119-
120- /* release the about logo (if any) */
121- if (G_LIKELY (logo != NULL))
122- g_object_unref (G_OBJECT (logo));
123-}
124-
125-
126-
127-/**
128- * terminal_dialogs_show_error:
129- * @parent : a #GtkWidget on which the error dialog should be shown, or a #GdkScreen
130- * if no #GtkWidget is known. May also be %NULL, in which case the default
131- * #GdkScreen will be used.
132- * @error : a #GError, which gives a more precise description of the problem or %NULL.
133- * @format : the printf()-style format for the primary problem description.
134- * @... : argument list for the @format.
135- *
136- * Displays an error dialog on @widget using the @format as primary message and optionally
137- * displaying @error as secondary error text.
138- *
139- * If @widget is not %NULL and @widget is part of a #GtkWindow, the function makes sure
140- * that the toplevel window is visible prior to displaying the error dialog.
141- **/
142-void
143-terminal_dialogs_show_error (gpointer parent,
144- const GError *error,
145- const gchar *format,
146- ...)
147-{
148- GtkWidget *dialog;
149- GtkWidget *window = NULL;
150- GdkScreen *screen;
151- va_list args;
152- gchar *primary_text;
153-
154- terminal_return_if_fail (parent == NULL || GDK_IS_SCREEN (parent) || GTK_IS_WIDGET (parent));
155-
156- /* determine the proper parent */
157- if (parent == NULL)
158- {
159- /* just use the default screen then */
160- screen = gdk_screen_get_default ();
161- }
162- else if (GDK_IS_SCREEN (parent))
163- {
164- /* yep, that's a screen */
165- screen = GDK_SCREEN (parent);
166- }
167- else
168- {
169- /* parent is a widget, so let's determine the toplevel window */
170- window = gtk_widget_get_toplevel (GTK_WIDGET (parent));
171- if (GTK_WIDGET_TOPLEVEL (window))
172- {
173- /* make sure the toplevel window is shown */
174- gtk_widget_show_now (window);
175- }
176- else
177- {
178- /* no toplevel, not usable then */
179- window = NULL;
180- }
181-
182- /* determine the screen for the widget */
183- screen = gtk_widget_get_screen (GTK_WIDGET (parent));
184- }
185-
186- /* determine the primary error text */
187- va_start (args, format);
188- primary_text = g_strdup_vprintf (format, args);
189- va_end (args);
190-
191- /* allocate the error dialog */
192- dialog = gtk_message_dialog_new ((GtkWindow *) window,
193- GTK_DIALOG_DESTROY_WITH_PARENT
194- | GTK_DIALOG_MODAL,
195- GTK_MESSAGE_ERROR,
196- GTK_BUTTONS_CLOSE,
197- "%s.", primary_text);
198-
199- /* move the dialog to the appropriate screen */
200- if (window == NULL && screen != NULL)
201- gtk_window_set_screen (GTK_WINDOW (dialog), screen);
202-
203- /* set secondary text if an error is provided */
204- if (G_LIKELY (error != NULL))
205- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s.", error->message);
206-
207- /* display the dialog */
208- gtk_dialog_run (GTK_DIALOG (dialog));
209-
210- /* cleanup */
211- gtk_widget_destroy (dialog);
212- g_free (primary_text);
213-}
214-
215-
216-
217-static gboolean
218-terminal_dialogs_show_help_ask_online (GtkWindow *parent)
219-{
220- GtkWidget *dialog;
221- GtkWidget *button;
222- GtkWidget *image;
223- gint response_id;
224-
225- dialog = gtk_message_dialog_new (parent, GTK_DIALOG_DESTROY_WITH_PARENT,
226- GTK_MESSAGE_QUESTION, GTK_BUTTONS_CANCEL,
227- _("The %s user manual is not installed on your computer"),
228- g_get_application_name ());
229- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
230- _("You can read the user manual online. This manual may however "
231- "not exactly match your %s version."), g_get_application_name ());
232- gtk_window_set_title (GTK_WINDOW (dialog), _("User manual is missing"));
233-
234- button = gtk_button_new_with_mnemonic (_("_Read Online"));
235- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_ACCEPT);
236- gtk_widget_show (button);
237-
238- image = gtk_image_new_from_icon_name ("web-browser", GTK_ICON_SIZE_BUTTON);
239- gtk_button_set_image (GTK_BUTTON (button), image);
240- gtk_widget_show (image);
241-
242- response_id = gtk_dialog_run (GTK_DIALOG (dialog));
243-
244- gtk_widget_destroy (dialog);
245-
246- return (response_id == GTK_RESPONSE_ACCEPT);
247-}
248-
249-
250-
251-/**
252- * terminal_dialogs_show_help:
253- * @parent : a #GtkWindow.
254- * #GdkScreen will be used.
255- * @page : the name of the page of the user manual to display or %NULL to display
256- * the overview page.
257- * @offset : the offset of the topic in the @page to display or %NULL to just display
258- * @page.
259- *
260- * Displays the Terminal user manual. If @page is not %NULL it specifies the basename
261- * of the HTML file to display. @offset may refer to a anchor in the @page.
262- **/
263-void
264-terminal_dialogs_show_help (GtkWindow *parent,
265- const gchar *page,
266- const gchar *offset)
267-{
268- GError *error = NULL;
269- gchar *filename;
270- gchar *locale;
271- gboolean exists;
272- gchar *uri = NULL;
273-
274- terminal_return_if_fail (GTK_IS_WINDOW (parent));
275-
276- /* use index page */
277- if (page == NULL)
278- page = "index.html";
279-
280- /* get the locale of the user */
281- locale = g_strdup (setlocale (LC_MESSAGES, NULL));
282- if (G_LIKELY (locale != NULL))
283- locale = g_strdelimit (locale, "._", '\0');
284- else
285- locale = g_strdup ("C");
286-
287- /* check if the help page exists on the system */
288- filename = g_build_filename (HELPDIR, locale, page, NULL);
289- exists = g_file_test (filename, G_FILE_TEST_EXISTS);
290- if (!exists && strcmp (locale, "C") != 0)
291- {
292- g_free (filename);
293- filename = g_build_filename (HELPDIR, "C", page, NULL);
294- exists = g_file_test (filename, G_FILE_TEST_EXISTS);
295- }
296-
297- /* build the full uri, fallback to online docs if nothing was found */
298- if (G_LIKELY (exists))
299- {
300- uri = g_strconcat ("file://", filename, "#", offset, NULL);
301- }
302- else if (terminal_dialogs_show_help_ask_online (parent))
303- {
304- uri = g_strconcat ("http://docs.xfce.org/help.php?package=terminal&lang=",
305- locale, "&page=", page, "&anchor=", offset, NULL);
306- }
307-
308- g_free (filename);
309- g_free (locale);
310-
311- /* try to run the documentation browser */
312- if (uri != NULL
313- && !exo_execute_preferred_application_on_screen ("WebBrowser", uri, NULL,
314- NULL, gtk_window_get_screen (parent),
315- &error))
316- {
317- /* display an error message to the user */
318- terminal_dialogs_show_error (parent, error, _("Failed to open the documentation browser"));
319- g_error_free (error);
320- }
321-
322- g_free (uri);
323-}
324-
325-
326
327=== modified file 'debian/changelog'
328--- debian/changelog 2012-05-19 19:29:26 +0000
329+++ debian/changelog 2012-09-20 16:50:23 +0000
330@@ -1,3 +1,17 @@
331+xfce4-terminal (0.4.8-1ubuntu4) quantal; urgency=low
332+
333+ * Unapplied all quilt patches.
334+
335+ -- Radu Stoica <radumstoica@gmail.com> Thu, 20 Sep 2012 19:32:27 +0300
336+
337+xfce4-terminal (0.4.8-1ubuntu3) quantal; urgency=low
338+
339+ * debian/patches:
340+ - scroll-alternate-src-togglable.patch: enable scrolling in ncurses
341+ apps with mouse wheel. lp: #947892
342+
343+ -- Radu Stoica <radumstoica@gmail.com> Sun, 16 Sep 2012 14:38:25 +0300
344+
345 xfce4-terminal (0.4.8-1ubuntu2) quantal; urgency=low
346
347 * No change rebuild against libxfce4util6.
348
349=== added file 'debian/patches/scroll-alternate-src-togglable.patch'
350--- debian/patches/scroll-alternate-src-togglable.patch 1970-01-01 00:00:00 +0000
351+++ debian/patches/scroll-alternate-src-togglable.patch 2012-09-20 16:50:23 +0000
352@@ -0,0 +1,77 @@
353+=== modified file 'terminal/terminal-preferences.c'
354+--- a/terminal/terminal-preferences.c 2011-06-22 00:03:08 +0000
355++++ b/terminal/terminal-preferences.c 2012-09-15 06:00:24 +0000
356+@@ -121,6 +121,7 @@
357+ PROP_MISC_TAB_CLOSE_MIDDLE_CLICK,
358+ PROP_MISC_TAB_POSITION,
359+ PROP_MISC_HIGHLIGHT_URLS,
360++ PROP_MISC_SCROLL_ALTERNATE_SCREEN,
361+ PROP_SCROLLING_BAR,
362+ PROP_SCROLLING_LINES,
363+ PROP_SCROLLING_ON_OUTPUT,
364+@@ -1240,6 +1241,19 @@
365+ EXO_PARAM_READWRITE));
366+
367+ /**
368++ * TerminalPreferences:misc-scroll-alternate-screen:
369++ *
370++ * Whether to scroll the alternate screen with the mouse wheel
371++ **/
372++ g_object_class_install_property (gobject_class,
373++ PROP_MISC_SCROLL_ALTERNATE_SCREEN,
374++ g_param_spec_boolean("misc-scroll-alternate-screen",
375++ "misc-scroll-alternate-screen",
376++ "MiscScrollAlternateScreen",
377++ TRUE,
378++ EXO_PARAM_READWRITE));
379++
380++ /**
381+ * TerminalPreferences:shortcuts-no-menukey:
382+ *
383+ * Disable menu shortcut key (F10 by default).
384+
385+=== modified file 'terminal/terminal-screen.c'
386+--- a/terminal/terminal-screen.c 2011-06-22 00:03:08 +0000
387++++ b/terminal/terminal-screen.c 2012-09-15 06:00:24 +0000
388+@@ -99,6 +99,7 @@
389+ static void terminal_screen_update_misc_cursor_blinks (TerminalScreen *screen);
390+ static void terminal_screen_update_misc_cursor_shape (TerminalScreen *screen);
391+ static void terminal_screen_update_misc_mouse_autohide (TerminalScreen *screen);
392++static void terminal_screen_update_scrolling_alternate (TerminalScreen *screen);
393+ static void terminal_screen_update_scrolling_bar (TerminalScreen *screen);
394+ static void terminal_screen_update_scrolling_lines (TerminalScreen *screen);
395+ static void terminal_screen_update_scrolling_on_output (TerminalScreen *screen);
396+@@ -291,6 +292,7 @@
397+ "swapped-signal::notify::misc-cursor-blinks", G_CALLBACK (terminal_screen_update_misc_cursor_blinks), screen,
398+ "swapped-signal::notify::misc-cursor-shape", G_CALLBACK (terminal_screen_update_misc_cursor_shape), screen,
399+ "swapped-signal::notify::misc-mouse-autohide", G_CALLBACK (terminal_screen_update_misc_mouse_autohide), screen,
400++ "swapped-signal::notify::misc-scroll-alternate-screen", G_CALLBACK (terminal_screen_update_scrolling_alternate), screen,
401+ "swapped-signal::notify::scrolling-bar", G_CALLBACK (terminal_screen_update_scrolling_bar), screen,
402+ "swapped-signal::notify::scrolling-lines", G_CALLBACK (terminal_screen_update_scrolling_lines), screen,
403+ "swapped-signal::notify::scrolling-on-output", G_CALLBACK (terminal_screen_update_scrolling_on_output), screen,
404+@@ -309,6 +311,7 @@
405+ terminal_screen_update_misc_cursor_blinks (screen);
406+ terminal_screen_update_misc_cursor_shape (screen);
407+ terminal_screen_update_misc_mouse_autohide (screen);
408++ terminal_screen_update_scrolling_alternate (screen);
409+ terminal_screen_update_scrolling_bar (screen);
410+ terminal_screen_update_scrolling_lines (screen);
411+ terminal_screen_update_scrolling_on_output (screen);
412+@@ -950,6 +953,16 @@
413+
414+
415+ static void
416++terminal_screen_update_scrolling_alternate (TerminalScreen *screen)
417++{
418++ gboolean scroll;
419++ g_object_get (G_OBJECT (screen->preferences), "misc-scroll-alternate-screen", &scroll, NULL);
420++ vte_terminal_set_alternate_screen_scroll (VTE_TERMINAL (screen->terminal), scroll);
421++}
422++
423++
424++
425++static void
426+ terminal_screen_update_scrolling_bar (TerminalScreen *screen)
427+ {
428+ TerminalScrollbar scrollbar;
429+
430
431=== modified file 'debian/patches/series'
432--- debian/patches/series 2012-04-05 20:07:06 +0000
433+++ debian/patches/series 2012-09-20 16:50:23 +0000
434@@ -1,1 +1,2 @@
435 xubuntu_fix-invalid-anchor.patch
436+scroll-alternate-src-togglable.patch
437
438=== modified file 'terminal/terminal-dialogs.c'
439--- terminal/terminal-dialogs.c 2012-04-05 20:07:06 +0000
440+++ terminal/terminal-dialogs.c 2012-09-20 16:50:23 +0000
441@@ -285,14 +285,7 @@
442 /* build the full uri, fallback to online docs if nothing was found */
443 if (G_LIKELY (exists))
444 {
445- if (offset)
446- {
447- uri = g_strconcat ("file://", filename, "#", offset, NULL);
448- }
449- else
450- {
451- uri = g_strconcat ("file://", filename, NULL);
452- }
453+ uri = g_strconcat ("file://", filename, "#", offset, NULL);
454 }
455 else if (terminal_dialogs_show_help_ask_online (parent))
456 {

Subscribers

People subscribed via source and target branches

to all changes: