forked from pool/gnome-desktop
This commit is contained in:
parent
ee155c415f
commit
c8b8092b1c
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:c785e6769255ae2d4aa3fb7ca76ea75c8833370ec118880a119b6688638f71d9
|
|
||||||
size 1510062
|
|
3
gnome-desktop-2.23.90.tar.bz2
Normal file
3
gnome-desktop-2.23.90.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:7008dedf5f0013a2bc3ce650551174722337d88e4b24ec4f7e54874b33ebd823
|
||||||
|
size 1453715
|
@ -1,861 +0,0 @@
|
|||||||
diff --git a/libgnome-desktop/Makefile.am b/libgnome-desktop/Makefile.am
|
|
||||||
index f8516ca..772a918 100644
|
|
||||||
--- a/libgnome-desktop/Makefile.am
|
|
||||||
+++ b/libgnome-desktop/Makefile.am
|
|
||||||
@@ -24,6 +24,7 @@ libgnome_desktop_2_la_SOURCES = \
|
|
||||||
display-name.c \
|
|
||||||
gnome-rr.c \
|
|
||||||
gnome-rr-config.c \
|
|
||||||
+ gnome-rr-labeler.c \
|
|
||||||
edid-parse.c \
|
|
||||||
edid.h
|
|
||||||
|
|
||||||
diff --git a/libgnome-desktop/gnome-rr-config.c b/libgnome-desktop/gnome-rr-config.c
|
|
||||||
index fece456..4c21fa1 100644
|
|
||||||
--- a/libgnome-desktop/gnome-rr-config.c
|
|
||||||
+++ b/libgnome-desktop/gnome-rr-config.c
|
|
||||||
@@ -463,6 +463,7 @@ gnome_rr_config_new_current (GnomeRRScreen *screen)
|
|
||||||
int i;
|
|
||||||
int clone_width = -1;
|
|
||||||
int clone_height = -1;
|
|
||||||
+ int last_x;
|
|
||||||
|
|
||||||
g_return_val_if_fail (screen != NULL, NULL);
|
|
||||||
|
|
||||||
@@ -536,7 +537,7 @@ gnome_rr_config_new_current (GnomeRRScreen *screen)
|
|
||||||
clone_width = output->width;
|
|
||||||
clone_height = output->height;
|
|
||||||
} else if (clone_width == output->width &&
|
|
||||||
- clone_height == output->height) {
|
|
||||||
+ clone_height == output->height) {
|
|
||||||
config->clone = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -588,6 +589,34 @@ gnome_rr_config_new_current (GnomeRRScreen *screen)
|
|
||||||
|
|
||||||
config->outputs = (GnomeOutputInfo **)g_ptr_array_free (a, FALSE);
|
|
||||||
|
|
||||||
+ /* Walk the outputs computing the right-most edge of all
|
|
||||||
+ * lit-up displays
|
|
||||||
+ */
|
|
||||||
+ last_x = 0;
|
|
||||||
+ for (i = 0; config->outputs[i] != NULL; ++i)
|
|
||||||
+ {
|
|
||||||
+ GnomeOutputInfo *output = config->outputs[i];
|
|
||||||
+
|
|
||||||
+ if (output->on)
|
|
||||||
+ {
|
|
||||||
+ last_x = MAX (last_x, output->x + output->width);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Now position all off displays to the right of the
|
|
||||||
+ * on displays
|
|
||||||
+ */
|
|
||||||
+ for (i = 0; config->outputs[i] != NULL; ++i)
|
|
||||||
+ {
|
|
||||||
+ GnomeOutputInfo *output = config->outputs[i];
|
|
||||||
+
|
|
||||||
+ if (output->connected && !output->on)
|
|
||||||
+ {
|
|
||||||
+ output->x = last_x;
|
|
||||||
+ last_x = output->x + output->width;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
g_assert (gnome_rr_config_match (config, config));
|
|
||||||
|
|
||||||
return config;
|
|
||||||
@@ -1025,6 +1054,8 @@ apply_configuration (GnomeRRConfig *conf, GnomeRRScreen *screen)
|
|
||||||
|
|
||||||
crtc_assignment_free (assignment);
|
|
||||||
|
|
||||||
+ gdk_flush ();
|
|
||||||
+
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1034,22 +1065,26 @@ apply_configuration (GnomeRRConfig *conf, GnomeRRScreen *screen)
|
|
||||||
gboolean
|
|
||||||
gnome_rr_config_apply_stored (GnomeRRScreen *screen)
|
|
||||||
{
|
|
||||||
- GnomeRRConfig **configs = configurations_read (NULL); /* NULL-GError */
|
|
||||||
+ GnomeRRConfig **configs;
|
|
||||||
GnomeRRConfig *current;
|
|
||||||
GnomeRRConfig *found;
|
|
||||||
gboolean result = TRUE;
|
|
||||||
|
|
||||||
if (!screen)
|
|
||||||
return FALSE;
|
|
||||||
-
|
|
||||||
+
|
|
||||||
+ configs = configurations_read (NULL); /* NULL-GError */
|
|
||||||
+
|
|
||||||
gnome_rr_screen_refresh (screen);
|
|
||||||
|
|
||||||
current = gnome_rr_config_new_current (screen);
|
|
||||||
+
|
|
||||||
if (configs)
|
|
||||||
{
|
|
||||||
if ((found = gnome_rr_config_find (configs, current)))
|
|
||||||
{
|
|
||||||
apply_configuration (found, screen);
|
|
||||||
+
|
|
||||||
result = TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
@@ -1104,16 +1139,14 @@ can_clone (CrtcInfo *info,
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
-crtc_assignment_assign (CrtcAssignment *assign,
|
|
||||||
- GnomeRRCrtc *crtc,
|
|
||||||
- GnomeRRMode *mode,
|
|
||||||
- int x,
|
|
||||||
- int y,
|
|
||||||
- GnomeRRRotation rotation,
|
|
||||||
- GnomeRROutput *output)
|
|
||||||
+crtc_assignment_assign (CrtcAssignment *assign,
|
|
||||||
+ GnomeRRCrtc *crtc,
|
|
||||||
+ GnomeRRMode *mode,
|
|
||||||
+ int x,
|
|
||||||
+ int y,
|
|
||||||
+ GnomeRRRotation rotation,
|
|
||||||
+ GnomeRROutput *output)
|
|
||||||
{
|
|
||||||
- /* FIXME: We should reject stuff that is outside the screen ranges */
|
|
||||||
-
|
|
||||||
CrtcInfo *info = g_hash_table_lookup (assign->info, crtc);
|
|
||||||
|
|
||||||
if (!gnome_rr_crtc_can_drive_output (crtc, output) ||
|
|
||||||
@@ -1221,98 +1254,6 @@ crtc_is_rotated (GnomeRRCrtc *crtc)
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void
|
|
||||||
-crtc_assignment_apply (CrtcAssignment *assign)
|
|
||||||
-{
|
|
||||||
- GList *active_crtcs = g_hash_table_get_keys (assign->info);
|
|
||||||
- GnomeRRCrtc **all_crtcs = gnome_rr_screen_list_crtcs (assign->screen);
|
|
||||||
- GList *list;
|
|
||||||
- int width, height;
|
|
||||||
- int i;
|
|
||||||
- int min_width, max_width, min_height, max_height;
|
|
||||||
- int width_mm, height_mm;
|
|
||||||
-
|
|
||||||
- /* Compute size of the screen */
|
|
||||||
- width = height = 1;
|
|
||||||
- for (list = active_crtcs; list != NULL; list = list->next)
|
|
||||||
- {
|
|
||||||
- GnomeRRCrtc *crtc = list->data;
|
|
||||||
- CrtcInfo *info = g_hash_table_lookup (assign->info, crtc);
|
|
||||||
- int w, h;
|
|
||||||
-
|
|
||||||
- w = gnome_rr_mode_get_width (info->mode);
|
|
||||||
- h = gnome_rr_mode_get_height (info->mode);
|
|
||||||
-
|
|
||||||
- if (mode_is_rotated (info))
|
|
||||||
- {
|
|
||||||
- int tmp = h;
|
|
||||||
- h = w;
|
|
||||||
- w = tmp;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- width = MAX (width, info->x + w);
|
|
||||||
- height = MAX (height, info->y + h);
|
|
||||||
- }
|
|
||||||
- g_list_free (active_crtcs);
|
|
||||||
-
|
|
||||||
- gnome_rr_screen_get_ranges (
|
|
||||||
- assign->screen, &min_width, &max_width, &min_height, &max_height);
|
|
||||||
-
|
|
||||||
- width = MAX (min_width, width);
|
|
||||||
- width = MIN (max_width, width);
|
|
||||||
- height = MAX (min_height, height);
|
|
||||||
- height = MIN (max_height, height);
|
|
||||||
-
|
|
||||||
- /* Turn off all crtcs currently displaying outside the new screen */
|
|
||||||
- for (i = 0; all_crtcs[i] != NULL; ++i)
|
|
||||||
- {
|
|
||||||
- GnomeRRCrtc *crtc = all_crtcs[i];
|
|
||||||
- GnomeRRMode *mode = gnome_rr_crtc_get_current_mode (crtc);
|
|
||||||
- int x, y;
|
|
||||||
-
|
|
||||||
- if (mode)
|
|
||||||
- {
|
|
||||||
- int w, h;
|
|
||||||
- gnome_rr_crtc_get_position (crtc, &x, &y);
|
|
||||||
-
|
|
||||||
- w = gnome_rr_mode_get_width (mode);
|
|
||||||
- h = gnome_rr_mode_get_height (mode);
|
|
||||||
-
|
|
||||||
- if (crtc_is_rotated (crtc))
|
|
||||||
- {
|
|
||||||
- int tmp = h;
|
|
||||||
- h = w;
|
|
||||||
- w = tmp;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (x + w > width || y + h > height)
|
|
||||||
- gnome_rr_crtc_set_config (crtc, 0, 0, NULL, GNOME_RR_ROTATION_0, NULL, 0);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* Turn off all CRTC's that are not in the assignment */
|
|
||||||
- for (i = 0; all_crtcs[i] != NULL; ++i)
|
|
||||||
- {
|
|
||||||
- GnomeRRCrtc *crtc = all_crtcs[i];
|
|
||||||
-
|
|
||||||
- if (!g_hash_table_lookup (assign->info, crtc))
|
|
||||||
- gnome_rr_crtc_set_config (crtc, 0, 0, NULL, GNOME_RR_ROTATION_0, NULL, 0);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- /* The 'physical size' of an X screen is meaningless if that screen
|
|
||||||
- * can consist of many monitors. So just pick a size that make the
|
|
||||||
- * dpi 96.
|
|
||||||
- *
|
|
||||||
- * Firefox and Evince apparently believe what X tells them.
|
|
||||||
- */
|
|
||||||
- width_mm = (width / 96.0) * 25.4 + 0.5;
|
|
||||||
- height_mm = (height / 96.0) * 25.4 + 0.5;
|
|
||||||
-
|
|
||||||
- gnome_rr_screen_set_size (assign->screen, width, height, width_mm, height_mm);
|
|
||||||
-
|
|
||||||
- g_hash_table_foreach (assign->info, configure_crtc, NULL);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
/* Check whether the given set of settings can be used
|
|
||||||
* at the same time -- ie. whether there is an assignment
|
|
||||||
* of CRTC's to outputs.
|
|
||||||
@@ -1388,6 +1329,43 @@ crtc_info_free (CrtcInfo *info)
|
|
||||||
g_free (info);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void
|
|
||||||
+get_required_virtual_size (CrtcAssignment *assign, int *width, int *height)
|
|
||||||
+{
|
|
||||||
+ GList *active_crtcs = g_hash_table_get_keys (assign->info);
|
|
||||||
+ GList *list;
|
|
||||||
+ int d;
|
|
||||||
+
|
|
||||||
+ if (!width)
|
|
||||||
+ width = &d;
|
|
||||||
+ if (!height)
|
|
||||||
+ height = &d;
|
|
||||||
+
|
|
||||||
+ /* Compute size of the screen */
|
|
||||||
+ *width = *height = 1;
|
|
||||||
+ for (list = active_crtcs; list != NULL; list = list->next)
|
|
||||||
+ {
|
|
||||||
+ GnomeRRCrtc *crtc = list->data;
|
|
||||||
+ CrtcInfo *info = g_hash_table_lookup (assign->info, crtc);
|
|
||||||
+ int w, h;
|
|
||||||
+
|
|
||||||
+ w = gnome_rr_mode_get_width (info->mode);
|
|
||||||
+ h = gnome_rr_mode_get_height (info->mode);
|
|
||||||
+
|
|
||||||
+ if (mode_is_rotated (info))
|
|
||||||
+ {
|
|
||||||
+ int tmp = h;
|
|
||||||
+ h = w;
|
|
||||||
+ w = tmp;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ *width = MAX (*width, info->x + w);
|
|
||||||
+ *height = MAX (*height, info->y + h);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_list_free (active_crtcs);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static CrtcAssignment *
|
|
||||||
crtc_assignment_new (GnomeRRScreen *screen, GnomeOutputInfo **outputs)
|
|
||||||
{
|
|
||||||
@@ -1398,14 +1376,93 @@ crtc_assignment_new (GnomeRRScreen *screen, GnomeOutputInfo **outputs)
|
|
||||||
|
|
||||||
if (real_assign_crtcs (screen, outputs, assignment))
|
|
||||||
{
|
|
||||||
+ int width, height;
|
|
||||||
+ int min_width, max_width, min_height, max_height;
|
|
||||||
+
|
|
||||||
+ get_required_virtual_size (assignment, &width, &height);
|
|
||||||
+
|
|
||||||
+ gnome_rr_screen_get_ranges (
|
|
||||||
+ screen, &min_width, &max_width, &min_height, &max_height);
|
|
||||||
+
|
|
||||||
+ if (width < min_width || width > max_width ||
|
|
||||||
+ height < min_height || height > max_height)
|
|
||||||
+ {
|
|
||||||
+ goto fail;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
assignment->screen = screen;
|
|
||||||
|
|
||||||
return assignment;
|
|
||||||
}
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- crtc_assignment_free (assignment);
|
|
||||||
|
|
||||||
- return NULL;
|
|
||||||
+fail:
|
|
||||||
+ crtc_assignment_free (assignment);
|
|
||||||
+
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+crtc_assignment_apply (CrtcAssignment *assign)
|
|
||||||
+{
|
|
||||||
+ GnomeRRCrtc **all_crtcs = gnome_rr_screen_list_crtcs (assign->screen);
|
|
||||||
+ int width, height;
|
|
||||||
+ int i;
|
|
||||||
+ int min_width, max_width, min_height, max_height;
|
|
||||||
+ int width_mm, height_mm;
|
|
||||||
+
|
|
||||||
+ /* Compute size of the screen */
|
|
||||||
+ get_required_virtual_size (assign, &width, &height);
|
|
||||||
+
|
|
||||||
+ gnome_rr_screen_get_ranges (
|
|
||||||
+ assign->screen, &min_width, &max_width, &min_height, &max_height);
|
|
||||||
+
|
|
||||||
+ /* We should never get here if the dimensions don't fit in the virtual size,
|
|
||||||
+ * but just in case we do, fix it up.
|
|
||||||
+ */
|
|
||||||
+ width = MAX (min_width, width);
|
|
||||||
+ width = MIN (max_width, width);
|
|
||||||
+ height = MAX (min_height, height);
|
|
||||||
+ height = MIN (max_height, height);
|
|
||||||
+
|
|
||||||
+ /* Turn off all crtcs that are currently displaying outside the new screen,
|
|
||||||
+ * or are not used in the new setup
|
|
||||||
+ */
|
|
||||||
+ for (i = 0; all_crtcs[i] != NULL; ++i)
|
|
||||||
+ {
|
|
||||||
+ GnomeRRCrtc *crtc = all_crtcs[i];
|
|
||||||
+ GnomeRRMode *mode = gnome_rr_crtc_get_current_mode (crtc);
|
|
||||||
+ int x, y;
|
|
||||||
+
|
|
||||||
+ if (mode)
|
|
||||||
+ {
|
|
||||||
+ int w, h;
|
|
||||||
+ gnome_rr_crtc_get_position (crtc, &x, &y);
|
|
||||||
+
|
|
||||||
+ w = gnome_rr_mode_get_width (mode);
|
|
||||||
+ h = gnome_rr_mode_get_height (mode);
|
|
||||||
+
|
|
||||||
+ if (crtc_is_rotated (crtc))
|
|
||||||
+ {
|
|
||||||
+ int tmp = h;
|
|
||||||
+ h = w;
|
|
||||||
+ w = tmp;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (x + w > width || y + h > height || !g_hash_table_lookup (assign->info, crtc))
|
|
||||||
+ gnome_rr_crtc_set_config (crtc, 0, 0, NULL, GNOME_RR_ROTATION_0, NULL, 0);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ /* The 'physical size' of an X screen is meaningless if that screen
|
|
||||||
+ * can consist of many monitors. So just pick a size that make the
|
|
||||||
+ * dpi 96.
|
|
||||||
+ *
|
|
||||||
+ * Firefox and Evince apparently believe what X tells them.
|
|
||||||
+ */
|
|
||||||
+ width_mm = (width / 96.0) * 25.4 + 0.5;
|
|
||||||
+ height_mm = (height / 96.0) * 25.4 + 0.5;
|
|
||||||
+
|
|
||||||
+ gnome_rr_screen_set_size (assign->screen, width, height, width_mm, height_mm);
|
|
||||||
+
|
|
||||||
+ g_hash_table_foreach (assign->info, configure_crtc, NULL);
|
|
||||||
}
|
|
||||||
diff --git a/libgnome-desktop/gnome-rr-labeler.c b/libgnome-desktop/gnome-rr-labeler.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..a12caec
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/libgnome-desktop/gnome-rr-labeler.c
|
|
||||||
@@ -0,0 +1,366 @@
|
|
||||||
+/* gnome-rr-labeler.c - Utility to label monitors to identify them
|
|
||||||
+ * while they are being configured.
|
|
||||||
+ *
|
|
||||||
+ * Copyright 2008, Novell, Inc.
|
|
||||||
+ *
|
|
||||||
+ * This file is part of the Gnome Library.
|
|
||||||
+ *
|
|
||||||
+ * The Gnome Library is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of the GNU Library General Public License as
|
|
||||||
+ * published by the Free Software Foundation; either version 2 of the
|
|
||||||
+ * License, or (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * The Gnome Library is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
+ * Library General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU Library General Public
|
|
||||||
+ * License along with the Gnome Library; see the file COPYING.LIB. If not,
|
|
||||||
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
+ * Boston, MA 02111-1307, USA.
|
|
||||||
+ *
|
|
||||||
+ * Author: Federico Mena-Quintero <federico@novell.com>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#define GNOME_DESKTOP_USE_UNSTABLE_API
|
|
||||||
+
|
|
||||||
+#include <config.h>
|
|
||||||
+#include "libgnomeui/gnome-rr-labeler.h"
|
|
||||||
+#include <gtk/gtk.h>
|
|
||||||
+
|
|
||||||
+struct _GnomeRRLabeler {
|
|
||||||
+ GObject parent;
|
|
||||||
+
|
|
||||||
+ GnomeRRConfig *config;
|
|
||||||
+
|
|
||||||
+ int num_outputs;
|
|
||||||
+
|
|
||||||
+ GdkColor *palette;
|
|
||||||
+ GtkWidget **windows;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+struct _GnomeRRLabelerClass {
|
|
||||||
+ GObjectClass parent_class;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+G_DEFINE_TYPE (GnomeRRLabeler, gnome_rr_labeler, G_TYPE_OBJECT);
|
|
||||||
+
|
|
||||||
+static void gnome_rr_labeler_finalize (GObject *object);
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+gnome_rr_labeler_init (GnomeRRLabeler *labeler)
|
|
||||||
+{
|
|
||||||
+ /* nothing */
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+gnome_rr_labeler_class_init (GnomeRRLabelerClass *class)
|
|
||||||
+{
|
|
||||||
+ GObjectClass *object_class;
|
|
||||||
+
|
|
||||||
+ object_class = (GObjectClass *) class;
|
|
||||||
+
|
|
||||||
+ object_class->finalize = gnome_rr_labeler_finalize;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+gnome_rr_labeler_finalize (GObject *object)
|
|
||||||
+{
|
|
||||||
+ GnomeRRLabeler *labeler;
|
|
||||||
+
|
|
||||||
+ labeler = GNOME_RR_LABELER (object);
|
|
||||||
+
|
|
||||||
+ /* We don't destroy the labeler->config (a GnomeRRConfig*) here; let our
|
|
||||||
+ * caller do that instead.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ if (labeler->windows != NULL) {
|
|
||||||
+ gnome_rr_labeler_hide (labeler);
|
|
||||||
+ g_free (labeler->windows);
|
|
||||||
+ labeler->windows = NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_free (labeler->palette);
|
|
||||||
+ labeler->palette = NULL;
|
|
||||||
+
|
|
||||||
+ G_OBJECT_CLASS (gnome_rr_labeler_parent_class)->finalize (object);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+count_outputs (GnomeRRConfig *config)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ for (i = 0; config->outputs[i] != NULL; i++)
|
|
||||||
+ ;
|
|
||||||
+
|
|
||||||
+ return i;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* hsv_to_rgb() stolen from gtk+/gtk/gtkhsv.c, sigh. */
|
|
||||||
+
|
|
||||||
+#define INTENSITY(r, g, b) ((r) * 0.30 + (g) * 0.59 + (b) * 0.11)
|
|
||||||
+
|
|
||||||
+/* Converts from HSV to RGB */
|
|
||||||
+static void
|
|
||||||
+hsv_to_rgb (gdouble *h,
|
|
||||||
+ gdouble *s,
|
|
||||||
+ gdouble *v)
|
|
||||||
+{
|
|
||||||
+ gdouble hue, saturation, value;
|
|
||||||
+ gdouble f, p, q, t;
|
|
||||||
+
|
|
||||||
+ if (*s == 0.0)
|
|
||||||
+ {
|
|
||||||
+ *h = *v;
|
|
||||||
+ *s = *v;
|
|
||||||
+ *v = *v; /* heh */
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ hue = *h * 6.0;
|
|
||||||
+ saturation = *s;
|
|
||||||
+ value = *v;
|
|
||||||
+
|
|
||||||
+ if (hue == 6.0)
|
|
||||||
+ hue = 0.0;
|
|
||||||
+
|
|
||||||
+ f = hue - (int) hue;
|
|
||||||
+ p = value * (1.0 - saturation);
|
|
||||||
+ q = value * (1.0 - saturation * f);
|
|
||||||
+ t = value * (1.0 - saturation * (1.0 - f));
|
|
||||||
+
|
|
||||||
+ switch ((int) hue)
|
|
||||||
+ {
|
|
||||||
+ case 0:
|
|
||||||
+ *h = value;
|
|
||||||
+ *s = t;
|
|
||||||
+ *v = p;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case 1:
|
|
||||||
+ *h = q;
|
|
||||||
+ *s = value;
|
|
||||||
+ *v = p;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case 2:
|
|
||||||
+ *h = p;
|
|
||||||
+ *s = value;
|
|
||||||
+ *v = t;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case 3:
|
|
||||||
+ *h = p;
|
|
||||||
+ *s = q;
|
|
||||||
+ *v = value;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case 4:
|
|
||||||
+ *h = t;
|
|
||||||
+ *s = p;
|
|
||||||
+ *v = value;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case 5:
|
|
||||||
+ *h = value;
|
|
||||||
+ *s = p;
|
|
||||||
+ *v = q;
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ g_assert_not_reached ();
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+make_palette (GnomeRRLabeler *labeler)
|
|
||||||
+{
|
|
||||||
+ /* The idea is that we go around an hue color wheel. We want to start
|
|
||||||
+ * at red, go around to green/etc. and stop at blue --- because magenta
|
|
||||||
+ * is evil. Eeeeek, no magenta, please!
|
|
||||||
+ *
|
|
||||||
+ * Purple would be nice, though. Remember that we are watered down
|
|
||||||
+ * (i.e. low saturation), so that would be like Like berries with cream.
|
|
||||||
+ * Mmmmm, berries.
|
|
||||||
+ */
|
|
||||||
+ double start_hue;
|
|
||||||
+ double end_hue;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ g_assert (labeler->num_outputs > 0);
|
|
||||||
+
|
|
||||||
+ labeler->palette = g_new (GdkColor, labeler->num_outputs);
|
|
||||||
+
|
|
||||||
+ start_hue = 0.0; /* red */
|
|
||||||
+ end_hue = 2.0/3; /* blue */
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < labeler->num_outputs; i++) {
|
|
||||||
+ double h, s, v;
|
|
||||||
+
|
|
||||||
+ h = start_hue + (end_hue - start_hue) / labeler->num_outputs * i;
|
|
||||||
+ s = 1.0 / 3;
|
|
||||||
+ v = 1.0;
|
|
||||||
+
|
|
||||||
+ hsv_to_rgb (&h, &s, &v);
|
|
||||||
+
|
|
||||||
+ labeler->palette[i].red = (int) (65535 * h + 0.5);
|
|
||||||
+ labeler->palette[i].green = (int) (65535 * s + 0.5);
|
|
||||||
+ labeler->palette[i].blue = (int) (65535 * v + 0.5);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#define LABEL_WINDOW_EDGE_THICKNESS 2
|
|
||||||
+#define LABEL_WINDOW_PADDING 12
|
|
||||||
+
|
|
||||||
+static gboolean
|
|
||||||
+label_window_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
|
||||||
+{
|
|
||||||
+ cairo_t *cr;
|
|
||||||
+ GdkColor *color;
|
|
||||||
+
|
|
||||||
+ color = g_object_get_data (G_OBJECT (widget), "color");
|
|
||||||
+
|
|
||||||
+ cr = gdk_cairo_create (widget->window);
|
|
||||||
+
|
|
||||||
+ /* edge outline */
|
|
||||||
+
|
|
||||||
+ cairo_set_source_rgb (cr, 0, 0, 0);
|
|
||||||
+ cairo_rectangle (cr,
|
|
||||||
+ LABEL_WINDOW_EDGE_THICKNESS / 2.0,
|
|
||||||
+ LABEL_WINDOW_EDGE_THICKNESS / 2.0,
|
|
||||||
+ widget->allocation.width - LABEL_WINDOW_EDGE_THICKNESS,
|
|
||||||
+ widget->allocation.height - LABEL_WINDOW_EDGE_THICKNESS);
|
|
||||||
+ cairo_set_line_width (cr, LABEL_WINDOW_EDGE_THICKNESS);
|
|
||||||
+ cairo_stroke (cr);
|
|
||||||
+
|
|
||||||
+ /* fill */
|
|
||||||
+
|
|
||||||
+ gdk_cairo_set_source_color (cr, color);
|
|
||||||
+ cairo_rectangle (cr,
|
|
||||||
+ LABEL_WINDOW_EDGE_THICKNESS,
|
|
||||||
+ LABEL_WINDOW_EDGE_THICKNESS,
|
|
||||||
+ widget->allocation.width - LABEL_WINDOW_EDGE_THICKNESS * 2,
|
|
||||||
+ widget->allocation.height - LABEL_WINDOW_EDGE_THICKNESS * 2);
|
|
||||||
+ cairo_fill (cr);
|
|
||||||
+
|
|
||||||
+ cairo_destroy (cr);
|
|
||||||
+
|
|
||||||
+ return FALSE;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static GtkWidget *
|
|
||||||
+create_label_window (GnomeRRLabeler *labeler, GnomeOutputInfo *output, GdkColor *color)
|
|
||||||
+{
|
|
||||||
+ GtkWidget *window;
|
|
||||||
+ GtkWidget *widget;
|
|
||||||
+ char *str;
|
|
||||||
+
|
|
||||||
+ window = gtk_window_new (GTK_WINDOW_POPUP);
|
|
||||||
+ GTK_WIDGET_SET_FLAGS (window, GTK_APP_PAINTABLE);
|
|
||||||
+
|
|
||||||
+ gtk_container_set_border_width (GTK_CONTAINER (window), LABEL_WINDOW_PADDING + LABEL_WINDOW_EDGE_THICKNESS);
|
|
||||||
+
|
|
||||||
+ /* This is semi-dangerous. The color is part of the labeler->palette
|
|
||||||
+ * array. Note that in gnome_rr_labeler_finalize(), we are careful to
|
|
||||||
+ * free the palette only after we free the windows.
|
|
||||||
+ */
|
|
||||||
+ g_object_set_data (G_OBJECT (window), "color", color);
|
|
||||||
+
|
|
||||||
+ g_signal_connect (window, "expose-event",
|
|
||||||
+ G_CALLBACK (label_window_expose_event_cb), labeler);
|
|
||||||
+
|
|
||||||
+ str = g_strdup_printf ("<b>%s</b>", output->display_name);
|
|
||||||
+ widget = gtk_label_new (NULL);
|
|
||||||
+ gtk_label_set_markup (GTK_LABEL (widget), str);
|
|
||||||
+ g_free (str);
|
|
||||||
+
|
|
||||||
+ 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);
|
|
||||||
+
|
|
||||||
+ gtk_widget_show_all (window);
|
|
||||||
+
|
|
||||||
+ return window;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+create_label_windows (GnomeRRLabeler *labeler)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ /* FIXME: this doesn't handle cloned outputs yet */
|
|
||||||
+
|
|
||||||
+ labeler->windows = g_new (GtkWidget *, labeler->num_outputs);
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < labeler->num_outputs; i++) {
|
|
||||||
+ if (labeler->config->outputs[i]->on) {
|
|
||||||
+ labeler->windows[i] = create_label_window (labeler, labeler->config->outputs[i], labeler->palette + i);
|
|
||||||
+ } else
|
|
||||||
+ labeler->windows[i] = NULL;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+setup_from_config (GnomeRRLabeler *labeler)
|
|
||||||
+{
|
|
||||||
+ labeler->num_outputs = count_outputs (labeler->config);
|
|
||||||
+
|
|
||||||
+ make_palette (labeler);
|
|
||||||
+
|
|
||||||
+ create_label_windows (labeler);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+GnomeRRLabeler *
|
|
||||||
+gnome_rr_labeler_new (GnomeRRConfig *config)
|
|
||||||
+{
|
|
||||||
+ GnomeRRLabeler *labeler;
|
|
||||||
+
|
|
||||||
+ g_return_val_if_fail (config != NULL, NULL);
|
|
||||||
+
|
|
||||||
+ labeler = g_object_new (GNOME_TYPE_RR_LABELER, NULL);
|
|
||||||
+ labeler->config = config;
|
|
||||||
+
|
|
||||||
+ setup_from_config (labeler);
|
|
||||||
+
|
|
||||||
+ return labeler;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+gnome_rr_labeler_hide (GnomeRRLabeler *labeler)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ g_return_if_fail (GNOME_IS_RR_LABELER (labeler));
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < labeler->num_outputs; i++)
|
|
||||||
+ if (labeler->windows[i] != NULL) {
|
|
||||||
+ gtk_widget_destroy (labeler->windows[i]);
|
|
||||||
+ labeler->windows[i] = NULL;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+gnome_rr_labeler_get_color_for_output (GnomeRRLabeler *labeler, GnomeOutputInfo *output, GdkColor *color_out)
|
|
||||||
+{
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ g_return_if_fail (GNOME_IS_RR_LABELER (labeler));
|
|
||||||
+ g_return_if_fail (output != NULL);
|
|
||||||
+ g_return_if_fail (color_out != NULL);
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < labeler->num_outputs; i++)
|
|
||||||
+ if (labeler->config->outputs[i] == output) {
|
|
||||||
+ *color_out = labeler->palette[i];
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_warning ("trying to get the color for unknown GnomeOutputInfo %p; returning magenta!", output);
|
|
||||||
+
|
|
||||||
+ color_out->red = 0xffff;
|
|
||||||
+ color_out->green = 0;
|
|
||||||
+ color_out->blue = 0xffff;
|
|
||||||
+}
|
|
||||||
diff --git a/libgnome-desktop/gnome-rr.c b/libgnome-desktop/gnome-rr.c
|
|
||||||
index bd507c7..ccbfe0d 100644
|
|
||||||
--- a/libgnome-desktop/gnome-rr.c
|
|
||||||
+++ b/libgnome-desktop/gnome-rr.c
|
|
||||||
@@ -440,8 +440,10 @@ gnome_rr_screen_new (GdkScreen *gdk_screen,
|
|
||||||
|
|
||||||
screen->info = screen_info_new (screen);
|
|
||||||
|
|
||||||
- if (!screen->info)
|
|
||||||
+ if (!screen->info) {
|
|
||||||
+ g_free (screen);
|
|
||||||
return NULL;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
XRRSelectInput (screen->xdisplay,
|
|
||||||
screen->xroot,
|
|
||||||
@@ -462,6 +464,19 @@ gnome_rr_screen_new (GdkScreen *gdk_screen,
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
+gnome_rr_screen_destroy (GnomeRRScreen *screen)
|
|
||||||
+{
|
|
||||||
+ g_return_if_fail (screen != NULL);
|
|
||||||
+
|
|
||||||
+ gdk_window_remove_filter (screen->gdk_root, screen_on_event, screen);
|
|
||||||
+
|
|
||||||
+ screen_info_free (screen->info);
|
|
||||||
+ screen->info = NULL;
|
|
||||||
+
|
|
||||||
+ g_free (screen);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
gnome_rr_screen_set_size (GnomeRRScreen *screen,
|
|
||||||
int width,
|
|
||||||
int height,
|
|
||||||
diff --git a/libgnome-desktop/libgnomeui/Makefile.am b/libgnome-desktop/libgnomeui/Makefile.am
|
|
||||||
index eb5b510..195bad2 100644
|
|
||||||
--- a/libgnome-desktop/libgnomeui/Makefile.am
|
|
||||||
+++ b/libgnome-desktop/libgnomeui/Makefile.am
|
|
||||||
@@ -4,4 +4,5 @@ libgnomeui_desktop_HEADERS = \
|
|
||||||
gnome-hint.h \
|
|
||||||
gnome-bg.h \
|
|
||||||
gnome-rr.h \
|
|
||||||
- gnome-rr-config.h
|
|
||||||
+ gnome-rr-config.h \
|
|
||||||
+ gnome-rr-labeler.h
|
|
||||||
diff --git a/libgnome-desktop/libgnomeui/gnome-rr-labeler.h b/libgnome-desktop/libgnomeui/gnome-rr-labeler.h
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..5b751cc
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/libgnome-desktop/libgnomeui/gnome-rr-labeler.h
|
|
||||||
@@ -0,0 +1,53 @@
|
|
||||||
+/* gnome-rr-labeler.h - Utility to label monitors to identify them
|
|
||||||
+ * while they are being configured.
|
|
||||||
+ *
|
|
||||||
+ * Copyright 2008, Novell, Inc.
|
|
||||||
+ *
|
|
||||||
+ * This file is part of the Gnome Library.
|
|
||||||
+ *
|
|
||||||
+ * The Gnome Library is free software; you can redistribute it and/or
|
|
||||||
+ * modify it under the terms of the GNU Library General Public License as
|
|
||||||
+ * published by the Free Software Foundation; either version 2 of the
|
|
||||||
+ * License, or (at your option) any later version.
|
|
||||||
+ *
|
|
||||||
+ * The Gnome Library is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
+ * Library General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU Library General Public
|
|
||||||
+ * License along with the Gnome Library; see the file COPYING.LIB. If not,
|
|
||||||
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
||||||
+ * Boston, MA 02111-1307, USA.
|
|
||||||
+ *
|
|
||||||
+ * Author: Federico Mena-Quintero <federico@novell.com>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifndef GNOME_RR_LABELER_H
|
|
||||||
+#define GNOME_RR_LABELER_H
|
|
||||||
+
|
|
||||||
+#ifndef GNOME_DESKTOP_USE_UNSTABLE_API
|
|
||||||
+#error GnomeRR is unstable API. You must define GNOME_DESKTOP_USE_UNSTABLE_API before including gnomerr.h
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#include <libgnomeui/gnome-rr-config.h>
|
|
||||||
+
|
|
||||||
+#define GNOME_TYPE_RR_LABELER (gnome_rr_labeler_get_type ())
|
|
||||||
+#define GNOME_RR_LABELER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GNOME_TYPE_RR_LABELER, GnomeRRLabeler))
|
|
||||||
+#define GNOME_RR_LABELER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GNOME_TYPE_RR_LABELER, GnomeRRLabelerClass))
|
|
||||||
+#define GNOME_IS_RR_LABELER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GNOME_TYPE_RR_LABELER))
|
|
||||||
+#define GNOME_IS_RR_LABELER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_RR_LABELER))
|
|
||||||
+#define GNOME_RR_LABELER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GNOME_TYPE_RR_LABELER, GnomeRRLabelerClass))
|
|
||||||
+
|
|
||||||
+typedef struct _GnomeRRLabeler GnomeRRLabeler;
|
|
||||||
+typedef struct _GnomeRRLabelerClass GnomeRRLabelerClass;
|
|
||||||
+
|
|
||||||
+GType gnome_rr_labeler_get_type (void);
|
|
||||||
+
|
|
||||||
+GnomeRRLabeler *gnome_rr_labeler_new (GnomeRRConfig *config);
|
|
||||||
+
|
|
||||||
+void gnome_rr_labeler_hide (GnomeRRLabeler *labeler);
|
|
||||||
+
|
|
||||||
+void gnome_rr_labeler_get_color_for_output (GnomeRRLabeler *labeler, GnomeOutputInfo *output, GdkColor *color_out);
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
diff --git a/libgnome-desktop/libgnomeui/gnome-rr.h b/libgnome-desktop/libgnomeui/gnome-rr.h
|
|
||||||
index 5dffc01..01b4f45 100644
|
|
||||||
--- a/libgnome-desktop/libgnomeui/gnome-rr.h
|
|
||||||
+++ b/libgnome-desktop/libgnomeui/gnome-rr.h
|
|
||||||
@@ -52,6 +52,7 @@ typedef enum
|
|
||||||
GnomeRRScreen * gnome_rr_screen_new (GdkScreen *screen,
|
|
||||||
GnomeRRScreenChanged callback,
|
|
||||||
gpointer data);
|
|
||||||
+void gnome_rr_screen_destroy (GnomeRRScreen *screen);
|
|
||||||
GnomeRROutput **gnome_rr_screen_list_outputs (GnomeRRScreen *screen);
|
|
||||||
GnomeRRCrtc ** gnome_rr_screen_list_crtcs (GnomeRRScreen *screen);
|
|
||||||
GnomeRRMode ** gnome_rr_screen_list_modes (GnomeRRScreen *screen);
|
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 29 17:45:10 CEST 2008 - maw@suse.de
|
||||||
|
|
||||||
|
- Update to version 2.23.90:
|
||||||
|
+ Add support for randr monitor labling (so drop
|
||||||
|
gnome-desktop-randr-monitor-labeling.diff, which previously
|
||||||
|
implemented this but now is upstream)
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Aug 15 18:16:06 CEST 2008 - federico@novell.com
|
Fri Aug 15 18:16:06 CEST 2008 - federico@novell.com
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package gnome-desktop (Version 2.23.6)
|
# spec file for package gnome-desktop (Version 2.23.90)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
@ -23,8 +23,8 @@ BuildRequires: fdupes gnome-common gnome-doc-utils gnome-doc-utils-devel gtk-do
|
|||||||
License: GNU Free Documentation License, Version 1.1 (GFDL 1.1); GPL v2 or later; LGPL v2.1 or later
|
License: GNU Free Documentation License, Version 1.1 (GFDL 1.1); GPL v2 or later; LGPL v2.1 or later
|
||||||
Group: System/GUI/GNOME
|
Group: System/GUI/GNOME
|
||||||
Obsoletes: gnome-core
|
Obsoletes: gnome-core
|
||||||
Version: 2.23.6
|
Version: 2.23.90
|
||||||
Release: 3
|
Release: 1
|
||||||
Summary: The GNOME Desktop API Library
|
Summary: The GNOME Desktop API Library
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
Url: http://www.gnome.org
|
Url: http://www.gnome.org
|
||||||
@ -36,8 +36,6 @@ Patch2: gnome-desktop-desktop.patch
|
|||||||
Patch3: gnome-desktop-recently-used-apps.patch
|
Patch3: gnome-desktop-recently-used-apps.patch
|
||||||
# PATCH-FEATURE-OPENSUSE gnome-desktop-fate300461-desktop-gettext.patch fate300461 vuntz@novell.com -- Look for translation of desktop entry strings via gettext
|
# PATCH-FEATURE-OPENSUSE gnome-desktop-fate300461-desktop-gettext.patch fate300461 vuntz@novell.com -- Look for translation of desktop entry strings via gettext
|
||||||
Patch5: gnome-desktop-fate300461-desktop-gettext.patch
|
Patch5: gnome-desktop-fate300461-desktop-gettext.patch
|
||||||
# PATCH-FEATURE-UPSTREAM gnome-desktop-randr-monitor-labeling.diff fate304764 federico@novell.com - Label physical monitors while settings their RANDR configuration
|
|
||||||
Patch6: gnome-desktop-randr-monitor-labeling.diff
|
|
||||||
Requires: %{name}-lang = %{version}
|
Requires: %{name}-lang = %{version}
|
||||||
Requires: libgnome-desktop-2-7 = %{version}
|
Requires: libgnome-desktop-2-7 = %{version}
|
||||||
|
|
||||||
@ -133,7 +131,6 @@ Authors:
|
|||||||
%patch2 -p0
|
%patch2 -p0
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
%patch6 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -f -i
|
autoreconf -f -i
|
||||||
@ -192,6 +189,12 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_datadir}/gtk-doc/html/gnome-desktop
|
%{_datadir}/gtk-doc/html/gnome-desktop
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Aug 29 2008 maw@suse.de
|
||||||
|
- Update to version 2.23.90:
|
||||||
|
+ Add support for randr monitor labling (so drop
|
||||||
|
gnome-desktop-randr-monitor-labeling.diff, which previously
|
||||||
|
implemented this but now is upstream)
|
||||||
|
+ Updated translations.
|
||||||
* Fri Aug 15 2008 federico@novell.com
|
* Fri Aug 15 2008 federico@novell.com
|
||||||
- Added gnome-desktop-randr-monitor-labeling.diff. This implements an
|
- Added gnome-desktop-randr-monitor-labeling.diff. This implements an
|
||||||
API to label physical monitors while their RANDR options are being
|
API to label physical monitors while their RANDR options are being
|
||||||
|
Loading…
Reference in New Issue
Block a user