Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=xfcetesting.git;a=commitdiff;h=d3185b558c3db53e48ea5a956d680414b02dacbf

commit d3185b558c3db53e48ea5a956d680414b02dacbf
Author: bouleetbil <[email protected]>
Date:   Mon Oct 11 22:13:55 2010 +0000

gnome-desktop-2.91.0-1-i686
*version bump

diff --git a/source/gnome/gnome-desktop/FrugalBuild 
b/source/gnome/gnome-desktop/FrugalBuild
index 082c290..4dd06f1 100644
--- a/source/gnome/gnome-desktop/FrugalBuild
+++ b/source/gnome/gnome-desktop/FrugalBuild
@@ -2,18 +2,22 @@
# Maintainer: bouleetbil <[email protected]>

pkgname=gnome-desktop
-pkgver=2.32.0
+pkgver=2.91.0
pkgrel=1
pkgdesc="The GNOME Desktop"
url="http://www.gnome.org/";
-depends=('gtk+2' 'startup-notification>=0.10-2' 'rarian>=0.8.0' 
'gconf>=2.32.0')
+depends=('gtk+3' 'startup-notification>=0.10-2' 'rarian>=0.8.0' 
'gconf>=2.32.0' 'libxrandr')
makedepends=('intltool' 'gnome-doc-utils>=0.18.0' 'gtk-doc' 'gdk-pixbuf2')
groups=('gnome' 'gnome-minimal')
archs=('i686' 'x86_64' 'ppc')
_F_gnome_scrollkeeper="y"
Finclude gnome gnome-scriptlet
-Fconfopts="$Fconfopts --with-gnome-distributor=Frugalware --enable-gtk-doc"
-sha1sums=('9154748b1a7842cfc53b41800c5069314d124898')
+#TODO :
+#remove --enable-deprecation-flags for stable release!
+Fconfopts="$Fconfopts --with-gnome-distributor=Frugalware 
--enable-gtk-doc--enable-deprecation-flags"
+source=($source rr.patch)
+sha1sums=('67dfad07430bcc88994af7016c7598a326695cb0' \
+          '9f82b22a44c347673781473d998d9b39701151c7')
replaces=('desktop-data-model')

# optimization OK
diff --git a/source/gnome/gnome-desktop/rr.patch 
b/source/gnome/gnome-desktop/rr.patch
new file mode 100644
index 0000000..bd60425
--- /dev/null
+++ b/source/gnome/gnome-desktop/rr.patch
@@ -0,0 +1,200 @@
+From 053a932b09487c4fa3e6331ef7fb65d24667263d Mon Sep 17 00:00:00 2001
+From: William Jon McCann <[email protected]>
+Date: Fri, 08 Oct 2010 01:05:17 +0000
+Subject: Make the RR labels honor workarea so they don't appear over/under 
panels
+
+---
+diff --git a/libgnome-desktop/gnome-rr-labeler.c 
b/libgnome-desktop/gnome-rr-labeler.c
+index c38db37..276c1a6 100644
+--- a/libgnome-desktop/gnome-rr-labeler.c
++++ b/libgnome-desktop/gnome-rr-labeler.c
+@@ -1,4 +1,6 @@
+-/* gnome-rr-labeler.c - Utility to label monitors to identify them
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
++ *
++ * gnome-rr-labeler.c - Utility to label monitors to identify them
+  * while they are being configured.
+  *
+  * Copyright 2008, Novell, Inc.
+@@ -30,6 +32,12 @@
+ #include "libgnomeui/gnome-rr-labeler.h"
+ #include <gtk/gtk.h>
+
++#include <X11/Xproto.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++#include <X11/Xatom.h>
++#include <gdk/gdkx.h>
++
+ struct _GnomeRRLabeler {
+       GObject parent;
+
+@@ -39,6 +47,9 @@ struct _GnomeRRLabeler {
+
+       GdkColor *palette;
+       GtkWidget **windows;
++
++      GdkScreen  *screen;
++      Atom        workarea_atom;
+ };
+
+ struct _GnomeRRLabelerClass {
+@@ -48,11 +59,105 @@ struct _GnomeRRLabelerClass {
+ G_DEFINE_TYPE (GnomeRRLabeler, gnome_rr_labeler, G_TYPE_OBJECT);
+
+ static void gnome_rr_labeler_finalize (GObject *object);
++static void create_label_windows (GnomeRRLabeler *labeler);
++
++static gboolean
++get_work_area (GnomeRRLabeler *labeler,
++             GdkRectangle   *rect)
++{
++      Atom            workarea;
++      Atom            type;
++      Window          win;
++      int             format;
++      gulong          num;
++      gulong          leftovers;
++      gulong          max_len = 4 * 32;
++      guchar         *ret_workarea;
++      long           *workareas;
++      int             result;
++      int             disp_screen;
++      Display        *display;
++
++      display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display 
(labeler->screen));
++      workarea = XInternAtom (display, "_NET_WORKAREA", True);
++
++      disp_screen = GDK_SCREEN_XNUMBER (labeler->screen);
++
++      /* Defaults in case of error */
++      rect->x = 0;
++      rect->y = 0;
++      rect->width = gdk_screen_get_width (labeler->screen);
++      rect->height = gdk_screen_get_height (labeler->screen);
++
++      if (workarea == None)
++              return FALSE;
++
++      win = XRootWindow (display, disp_screen);
++      result = XGetWindowProperty (display,
++                                   win,
++                                   workarea,
++                                   0,
++                                   max_len,
++                                   False,
++                                   AnyPropertyType,
++                                   &type,
++                                   &format,
++                                   &num,
++                                   &leftovers,
++                                   &ret_workarea);
++
++      if (result != Success
++          || type == None
++          || format == 0
++          || leftovers
++          || num % 4) {
++              return FALSE;
++      }
++
++      workareas = (long *) ret_workarea;
++      rect->x = workareas[disp_screen * 4];
++      rect->y = workareas[disp_screen * 4 + 1];
++      rect->width = workareas[disp_screen * 4 + 2];
++      rect->height = workareas[disp_screen * 4 + 3];
++
++      XFree (ret_workarea);
++
++      return TRUE;
++}
++
++static GdkFilterReturn
++screen_xevent_filter (GdkXEvent      *xevent,
++                    GdkEvent       *event,
++                    GnomeRRLabeler *labeler)
++{
++      XEvent *xev;
++
++      xev = (XEvent *) xevent;
++
++      if (xev->type == PropertyNotify &&
++          xev->xproperty.atom == labeler->workarea_atom) {
++              /* update label positions */
++              gnome_rr_labeler_hide (labeler);
++              create_label_windows (labeler);
++      }
++
++      return GDK_FILTER_CONTINUE;
++}
+
+ static void
+ gnome_rr_labeler_init (GnomeRRLabeler *labeler)
+ {
+-      /* nothing */
++      GdkWindow *gdkwindow;
++
++      labeler->workarea_atom = XInternAtom (GDK_DISPLAY_XDISPLAY 
(gdk_display_get_default ()),
++                                            "_NET_WORKAREA",
++                                            True);
++
++      labeler->screen = gdk_screen_get_default ();
++      /* code is not really designed to handle multiple screens so *shrug* */
++      gdkwindow = gdk_screen_get_root_window (labeler->screen);
++      gdk_window_add_filter (gdkwindow, (GdkFilterFunc) screen_xevent_filter, 
labeler);
++      gdk_window_set_events (gdkwindow, gdk_window_get_events (gdkwindow) | 
GDK_PROPERTY_CHANGE_MASK);
+ }
+
+ static void
+@@ -69,9 +174,13 @@ static void
+ gnome_rr_labeler_finalize (GObject *object)
+ {
+       GnomeRRLabeler *labeler;
++      GdkWindow      *gdkwindow;
+
+       labeler = GNOME_RR_LABELER (object);
+
++      gdkwindow = gdk_screen_get_root_window (labeler->screen);
++      gdk_window_remove_filter (gdkwindow, (GdkFilterFunc) 
screen_xevent_filter, labeler);
++
+       /* We don't destroy the labeler->config (a GnomeRRConfig*) here; let our
+        * caller do that instead.
+        */
+@@ -173,6 +282,26 @@ label_window_draw_event_cb (GtkWidget *widget, cairo_t 
*cr, gpointer data)
+       return FALSE;
+ }
+
++static void
++position_window (GnomeRRLabeler  *labeler,
++               GtkWidget       *window,
++               int              x,
++               int              y)
++{
++      GdkRectangle    workarea;
++      GdkRectangle    monitor;
++      int             monitor_num;
++
++      get_work_area (labeler, &workarea);
++      monitor_num = gdk_screen_get_monitor_at_point (labeler->screen, x, y);
++      gdk_screen_get_monitor_geometry (labeler->screen,
++                                         monitor_num,
++                                         &monitor);
++      gdk_rectangle_intersect (&monitor, &workarea, &workarea);
++
++      gtk_window_move (GTK_WINDOW (window), workarea.x, workarea.y);
++}
++
+ static GtkWidget *
+ create_label_window (GnomeRRLabeler *labeler, GnomeOutputInfo *output, 
GdkColor *color)
+ {
+@@ -222,7 +351,7 @@ create_label_window (GnomeRRLabeler *labeler, 
GnomeOutputInfo *output, GdkColor
+       gtk_container_add (GTK_CONTAINER (window), widget);
+
+       /* Should we center this at the top edge of the monitor, instead of 
using the upper-left corner? */
+-      gtk_window_move (GTK_WINDOW (window), output->x, output->y);
++      position_window (labeler, window, output->x, output->y);
+
+       gtk_widget_show_all (window);
+
+--
+cgit v0.8.3.1
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to