[nautilus] desktop-canvas: set margins according to the primary workarea
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] desktop-canvas: set margins according to the primary workarea
- Date: Thu, 4 Oct 2012 21:57:07 +0000 (UTC)
commit 1292610b87be44fcd5a7d5a09738cd7f3287325f
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Thu Oct 4 16:16:25 2012 -0400
desktop-canvas: set margins according to the primary workarea
This ensures desktop icons are pinned to the primary monitor, instead of
moving around when plugging in a new display.
There's also a slight change in behavior introduced by this patch - that
is for multihead configurations where the first monitor in visible order
is not the primary one, it won't be possible to move desktop icons to
monitors to the left, or to the top, of the primary monitor - in other
words, desktop icons layout starts from the primary monitor and expands
rightwards/downwards.
https://bugzilla.gnome.org/show_bug.cgi?id=420624
src/nautilus-desktop-canvas-view.c | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
---
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index e0c9ca5..7162055 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -102,27 +102,27 @@ canvas_container_set_workarea (NautilusCanvasContainer *canvas_container,
int n_items)
{
int left, right, top, bottom;
- int screen_width, screen_height;
int i;
+ GdkRectangle geometry;
left = right = top = bottom = 0;
-
- screen_width = gdk_screen_get_width (screen);
- screen_height = gdk_screen_get_height (screen);
+ gdk_screen_get_monitor_geometry (screen, gdk_screen_get_primary_monitor (screen), &geometry);
for (i = 0; i < n_items; i += 4) {
- int x = workareas [i];
- int y = workareas [i + 1];
- int width = workareas [i + 2];
- int height = workareas [i + 3];
+ GdkRectangle workarea;
+
+ workarea.x = workareas[i];
+ workarea.y = workareas[i + 1];
+ workarea.width = workareas[i + 2];
+ workarea.height = workareas[i + 3];
- if ((x + width) > screen_width || (y + height) > screen_height)
+ if (!gdk_rectangle_intersect (&geometry, &workarea, &workarea))
continue;
- left = MAX (left, x);
- right = MAX (right, screen_width - width - x);
- top = MAX (top, y);
- bottom = MAX (bottom, screen_height - height - y);
+ left = MAX (left, workarea.x);
+ right = MAX (right, (geometry.x + geometry.width) - (workarea.x + workarea.width));
+ top = MAX (top, workarea.y);
+ bottom = MAX (bottom, (geometry.y + geometry.height) - (workarea.y + workarea.height));
}
nautilus_canvas_container_set_margins (canvas_container,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]