Merge lp:~vanvugt/ubuntu/oneiric/geeqie/fix-788321 into lp:ubuntu/oneiric/geeqie

Proposed by Daniel van Vugt
Status: Merged
Merged at revision: 23
Proposed branch: lp:~vanvugt/ubuntu/oneiric/geeqie/fix-788321
Merge into: lp:ubuntu/oneiric/geeqie
Diff against target: 184 lines (+152/-1)
4 files modified
debian/changelog (+6/-0)
debian/control (+2/-1)
debian/patches/fix-fullscreen.patch (+143/-0)
debian/patches/series (+1/-0)
To merge this branch: bzr merge lp:~vanvugt/ubuntu/oneiric/geeqie/fix-788321
Reviewer Review Type Date Requested Status
Brian Murray Approve
Ubuntu branches Pending
Scott Moser Pending
Review via email: mp+72663@code.launchpad.net

This proposal supersedes a proposal from 2011-08-16.

Description of the change

Make fullscreen mode actually use the full screen. (LP: #788321)

The default fullscreen mode now leaves everything up to the window manager, which usually produces the best result. Custom fullscreen modes now use override-redirect to ensure docks and panels never obscure the image.

To post a comment you must log in.
Revision history for this message
Scott Moser (smoser) wrote : Posted in a previous version of this proposal

Hi,
  I took a look at your merge proposal. I can verify the problem and that the suggested fix fixes the problem when running in Unity. I would defer to someone more gtk-aware than myself for review of your actual patch, though.

  Two things to fix:
a.) update the Maintainer to be Ubuntu Developers, and set XSBC-Original-Maintainer to the Debian maintainer.
-Maintainer: Michal Čihař <email address hidden>
+Maintainer: Ubuntu Developers <email address hidden>
+XSBC-Original-Maintainer: Michal Čihař <email address hidden>

b.) Please submit this patch to debian so we can potentially avoid carrying a delta in a future sync.

review: Needs Fixing
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Posted in a previous version of this proposal

Regarding b.) I have already pushed the fix upstream (beyond Debian) to the main project in SourceForge:
https://sourceforge.net/support/tracker.php?aid=3391803
https://sourceforge.net/support/tracker.php?aid=2925034

Do we really want to confuse the situation but submitting the patch to Debian also?

Revision history for this message
Daniel van Vugt (vanvugt) wrote : Posted in a previous version of this proposal

-but
+by
:)

Revision history for this message
Scott Moser (smoser) wrote : Posted in a previous version of this proposal

On Tue, 23 Aug 2011, Daniel van Vugt wrote:

> Regarding b.) I have already pushed the fix upstream (beyond Debian) to the main project in SourceForge:
> https://sourceforge.net/support/tracker.php?aid=3391803
> https://sourceforge.net/support/tracker.php?aid=2925034
>
> Do we really want to confuse the situation but submitting the patch to Debian also?

As far as I can tell, upstream has not responded to those links, and even
appears dead since May 2010.
(http://geeqie.git.sourceforge.net/git/gitweb.cgi?p=geeqie/geeqie;a=summary)

So, unfortunately, we have no reasonable expectation that your upstream
patch geeqie patch will ever make it in.

So, yeah, I'd prefer that you at least report a debian bug to give us some
hope of not carrying this delta indefinitely. (I realize that with a
non-active upstream, there probably wont be much movement in debian
either, but a clean sync is much easier than a merge).

Scott

Revision history for this message
Daniel van Vugt (vanvugt) wrote : Posted in a previous version of this proposal

OK, I've sent the bug details with patch to Debian bugs also. Don't have a bug ID yet.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

It's Debian bug #639099.

Revision history for this message
Brian Murray (brian-murray) wrote :

My testing of this indicates that the patch works as intended and based on the number of people it works for and the fact that it is rather glaring bug I'm going to upload it to Oneiric.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/changelog'
2--- debian/changelog 2011-04-15 12:09:50 +0000
3+++ debian/changelog 2011-08-24 05:06:26 +0000
4@@ -1,3 +1,9 @@
5+geeqie (1:1.0-8ubuntu1) oneiric; urgency=low
6+
7+ * Make fullscreen mode actually use the full screen. (LP: #788321)
8+
9+ -- Daniel van Vugt <vanvugt@gmail.com> Mon, 15 Aug 2011 16:57:40 +0800
10+
11 geeqie (1:1.0-8) unstable; urgency=low
12
13 * Build against libchamplain-0.8.
14
15=== modified file 'debian/control'
16--- debian/control 2011-04-15 12:09:50 +0000
17+++ debian/control 2011-08-24 05:06:26 +0000
18@@ -1,7 +1,8 @@
19 Source: geeqie
20 Section: graphics
21 Priority: optional
22-Maintainer: Michal Čihař <nijel@debian.org>
23+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
24+XSBC-Original-Maintainer: Michal Čihař <nijel@debian.org>
25 Build-Depends: debhelper (>= 7.3.7),
26 libtool,
27 autoconf,
28
29=== added file 'debian/patches/fix-fullscreen.patch'
30--- debian/patches/fix-fullscreen.patch 1970-01-01 00:00:00 +0000
31+++ debian/patches/fix-fullscreen.patch 2011-08-24 05:06:26 +0000
32@@ -0,0 +1,143 @@
33+Description: Make fullscreen modes actually use the full screen.
34+ The default fullscreen mode now leaves everything up to the window manager,
35+ which usually produces the best result. Custom fullscreen modes now use
36+ override-redirect to ensure docks and panels never obscure the image.
37+Author: Daniel van Vugt <vanvugt@gmail.com>
38+Bug: http://sourceforge.net/support/tracker.php?aid=2925034
39+Bug-Ubuntu: https://launchpad.net/bugs/788321
40+Forwarded: yes
41+
42+=== modified file 'src/fullscreen.c'
43+--- old/src/fullscreen.c 2010-02-26 10:41:38 +0000
44++++ new/src/fullscreen.c 2011-08-16 03:55:04 +0000
45+@@ -218,75 +218,65 @@
46+ void (*stop_func)(FullScreenData *, gpointer), gpointer stop_data)
47+ {
48+ FullScreenData *fs;
49+- GdkScreen *screen;
50+- gboolean same;
51+- gint x, y;
52+- gint w, h;
53+- GdkGeometry geometry;
54+
55+ if (!window || !imd) return NULL;
56+
57++ DEBUG_1("full screen requests screen %d", options->fullscreen.screen);
58++
59+ fs = g_new0(FullScreenData, 1);
60+-
61+ fs->cursor_state = FULLSCREEN_CURSOR_HIDDEN;
62+-
63+ fs->normal_window = window;
64+ fs->normal_imd = imd;
65+-
66+ fs->stop_func = stop_func;
67+ fs->stop_data = stop_data;
68+-
69+- DEBUG_1("full screen requests screen %d", options->fullscreen.screen);
70+- fullscreen_prefs_get_geometry(options->fullscreen.screen, window, &x, &y, &w, &h,
71+- &screen, &same);
72+-
73+- fs->window = window_new(GTK_WINDOW_TOPLEVEL, "fullscreen", NULL, NULL, _("Full screen"));
74+-
75+- /* this requests no decorations, if you still have them complain to the window manager author(s) */
76+- gtk_window_set_decorated(GTK_WINDOW(fs->window), FALSE);
77++ fs->window = window_new(GTK_WINDOW_TOPLEVEL, "fullscreen", NULL, NULL,
78++ _("Full screen"));
79+
80+ if (options->fullscreen.screen < 0)
81+- {
82+- /* If we want control of the window size and position this is not what we want.
83+- * Geeqie needs control of which monitor(s) to use for full screen.
84+- */
85++ { /* Fullscreen as determined by the window manager... */
86+ gtk_window_fullscreen(GTK_WINDOW(fs->window));
87+ }
88+- else if (options->fullscreen.above)
89+- {
90+- /* request to be above other windows */
91+- gtk_window_set_keep_above(GTK_WINDOW(fs->window), TRUE);
92++ else
93++ { /* Custom fullscreen modes. Done by hand, the hard way... */
94++ GdkScreen *screen;
95++ gint x, y, w, h;
96++ GdkGeometry geometry;
97++ GtkWindow *gtkwin = GTK_WINDOW(fs->window);
98++ GdkWindow *gdkwin;
99++
100++ fullscreen_prefs_get_geometry(options->fullscreen.screen,
101++ window, &x, &y, &w, &h, &screen, NULL);
102++
103++ if (options->fullscreen.above)
104++ gtk_window_set_keep_above(gtkwin, TRUE);
105++
106++ gtk_window_set_screen(gtkwin, screen);
107++ gtk_window_set_decorated(gtkwin, FALSE);
108++ gtk_window_set_resizable(gtkwin, FALSE);
109++ gtk_container_set_border_width(GTK_CONTAINER(fs->window), 0);
110++
111++ geometry.min_width = w;
112++ geometry.min_height = h;
113++ geometry.max_width = w;
114++ geometry.max_height = h;
115++ geometry.base_width = w;
116++ geometry.base_height = h;
117++ gtk_window_set_geometry_hints(gtkwin, fs->window, &geometry,
118++ GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE |
119++ GDK_HINT_BASE_SIZE);
120++
121++ gtk_window_set_default_size(gtkwin, w, h);
122++ gtk_window_move(gtkwin, x, y);
123++
124++ gtk_widget_realize(fs->window);
125++ gdkwin = gtk_widget_get_window(fs->window);
126++ if (gdkwin != NULL)
127++ gdk_window_set_override_redirect(gdkwin, TRUE);
128+ }
129+
130+- gtk_window_set_resizable(GTK_WINDOW(fs->window), FALSE);
131+-
132+- gtk_window_set_screen(GTK_WINDOW(fs->window), screen);
133+- gtk_container_set_border_width(GTK_CONTAINER(fs->window), 0);
134+ g_signal_connect(G_OBJECT(fs->window), "delete_event",
135+ G_CALLBACK(fullscreen_delete_cb), fs);
136+
137+- geometry.min_width = w;
138+- geometry.min_height = h;
139+- geometry.max_width = w;
140+- geometry.max_height = h;
141+- geometry.base_width = w;
142+- geometry.base_height = h;
143+- geometry.win_gravity = GDK_GRAVITY_STATIC;
144+- /* By setting USER_POS and USER_SIZE, most window managers will
145+- * not request positioning of the full screen window (for example twm).
146+- *
147+- * In addition, setting gravity to STATIC will result in the
148+- * decorations of twm to not effect the requested window position,
149+- * the decorations will simply be off screen, except in multi monitor setups :-/
150+- */
151+- gtk_window_set_geometry_hints(GTK_WINDOW(fs->window), fs->window, &geometry,
152+- GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE | GDK_HINT_BASE_SIZE |
153+- GDK_HINT_WIN_GRAVITY |
154+- GDK_HINT_USER_POS);
155+-
156+- gtk_window_set_default_size(GTK_WINDOW(fs->window), w, h);
157+- gtk_window_move(GTK_WINDOW(fs->window), x, y);
158+-
159+ fs->imd = image_new(FALSE);
160+
161+ gtk_container_add(GTK_CONTAINER(fs->window), fs->imd->widget);
162+@@ -393,7 +383,11 @@
163+ else
164+ {
165+ gdk_screen_get_monitor_geometry(screen, j, &rect);
166+- subname = g_strdup_printf("%s %d", _("Monitor"), j + 1);
167++ subname = gdk_screen_get_monitor_plug_name(screen, j);
168++ if (subname == NULL)
169++ {
170++ subname = g_strdup_printf("%s %d", _("Monitor"), j + 1);
171++ }
172+ }
173+
174+ sd = g_new0(ScreenData, 1);
175+
176
177=== modified file 'debian/patches/series'
178--- debian/patches/series 2011-04-15 12:09:50 +0000
179+++ debian/patches/series 2011-08-24 05:06:26 +0000
180@@ -1,3 +1,4 @@
181 lfs-suport.patch
182 fix-bashishm.patch
183 champlain-0.8.patch
184+fix-fullscreen.patch

Subscribers

People subscribed via source and target branches