From c22d9fd5dbc5e9816c5750211be4a8231a878a7837518728ca867407c1a0fd2f Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Fri, 15 Aug 2008 21:38:13 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gnome-settings-daemon?expand=0&rev=13 --- gnome-settings-daemon-2.23.4.tar.bz2 | 3 - gnome-settings-daemon-2.23.6.tar.bz2 | 3 + gnome-settings-daemon-monitor-labeling.diff | 456 +++++++++++++++ ...ngs-daemon-system-proxy-configuration.diff | 528 +++++++++++------- gnome-settings-daemon.changes | 10 + gnome-settings-daemon.spec | 31 +- 6 files changed, 808 insertions(+), 223 deletions(-) delete mode 100644 gnome-settings-daemon-2.23.4.tar.bz2 create mode 100644 gnome-settings-daemon-2.23.6.tar.bz2 create mode 100644 gnome-settings-daemon-monitor-labeling.diff rename gnome-settings-daemon-system-proxy-configuration.patch => gnome-settings-daemon-system-proxy-configuration.diff (82%) diff --git a/gnome-settings-daemon-2.23.4.tar.bz2 b/gnome-settings-daemon-2.23.4.tar.bz2 deleted file mode 100644 index 99d5bc9..0000000 --- a/gnome-settings-daemon-2.23.4.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db82d4c9f6db85874dac1f3aa9b38b3120a00c24fda8c25dd2389ebe4dfc60e4 -size 1164206 diff --git a/gnome-settings-daemon-2.23.6.tar.bz2 b/gnome-settings-daemon-2.23.6.tar.bz2 new file mode 100644 index 0000000..f6e738f --- /dev/null +++ b/gnome-settings-daemon-2.23.6.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17c755ea3c6c5080b491196af1ad418362b50c37902374c07099de465ae197f9 +size 1161034 diff --git a/gnome-settings-daemon-monitor-labeling.diff b/gnome-settings-daemon-monitor-labeling.diff new file mode 100644 index 0000000..7db0039 --- /dev/null +++ b/gnome-settings-daemon-monitor-labeling.diff @@ -0,0 +1,456 @@ +diff --git a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c +index 62010fe..4d8ce2f 100644 +--- a/plugins/xrandr/gsd-xrandr-manager.c ++++ b/plugins/xrandr/gsd-xrandr-manager.c +@@ -42,6 +42,7 @@ + + #include + #include ++#include + + #ifdef HAVE_RANDR + #include +@@ -76,6 +77,9 @@ struct GsdXrandrManagerPrivate + gboolean client_filter_set; + + GtkStatusIcon *status_icon; ++ GtkWidget *popup_menu; ++ GnomeRRConfig *configuration; ++ GnomeRRLabeler *labeler; + GConfClient *client; + int notify_id; + }; +@@ -186,30 +190,423 @@ popup_menu_configure_display_cb (GtkMenuItem *item, gpointer data) + } + + static void ++status_icon_popup_menu_selection_done_cb (GtkMenuShell *menu_shell, gpointer data) ++{ ++ GsdXrandrManager *manager = GSD_XRANDR_MANAGER (data); ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ ++ gtk_widget_destroy (priv->popup_menu); ++ priv->popup_menu = NULL; ++ ++ gnome_rr_labeler_hide (priv->labeler); ++ g_object_unref (priv->labeler); ++ priv->labeler = NULL; ++ ++ gnome_rr_config_free (priv->configuration); ++ priv->configuration = NULL; ++} ++ ++#define OUTPUT_TITLE_ITEM_BORDER 2 ++#define OUTPUT_TITLE_ITEM_PADDING 4 ++ ++/* This is an expose-event hander for the title label for each GnomeRROutput. ++ * We want each title to have a colored background, so we paint that background, then ++ * return FALSE to let GtkLabel expose itself (i.e. paint the label's text), and then ++ * we have a signal_connect_after handler as well. See the comments below ++ * to see why that "after" handler is needed. ++ */ ++static gboolean ++output_title_label_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data) ++{ ++ GsdXrandrManager *manager = GSD_XRANDR_MANAGER (data); ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ GnomeOutputInfo *output; ++ GdkColor color; ++ cairo_t *cr; ++ ++ g_assert (GTK_IS_LABEL (widget)); ++ ++ output = g_object_get_data (G_OBJECT (widget), "output"); ++ g_assert (output != NULL); ++ ++ g_assert (priv->labeler != NULL); ++ ++ /* Draw a black rectangular border, filled with the color that corresponds to this output */ ++ ++ gnome_rr_labeler_get_color_for_output (priv->labeler, output, &color); ++ ++ cr = gdk_cairo_create (widget->window); ++ ++ cairo_set_source_rgb (cr, 0, 0, 0); ++ cairo_set_line_width (cr, OUTPUT_TITLE_ITEM_BORDER); ++ cairo_rectangle (cr, ++ widget->allocation.x + OUTPUT_TITLE_ITEM_BORDER / 2.0, ++ widget->allocation.y + OUTPUT_TITLE_ITEM_BORDER / 2.0, ++ widget->allocation.width - OUTPUT_TITLE_ITEM_BORDER, ++ widget->allocation.height - OUTPUT_TITLE_ITEM_BORDER); ++ cairo_stroke (cr); ++ ++ gdk_cairo_set_source_color (cr, &color); ++ cairo_rectangle (cr, ++ widget->allocation.x + OUTPUT_TITLE_ITEM_BORDER, ++ widget->allocation.y + OUTPUT_TITLE_ITEM_BORDER, ++ widget->allocation.width - 2 * OUTPUT_TITLE_ITEM_BORDER, ++ widget->allocation.height - 2 * OUTPUT_TITLE_ITEM_BORDER); ++ ++ cairo_fill (cr); ++ ++ /* We want the label to always show up as if it were sensitive ++ * ("style->fg[GTK_STATE_NORMAL]"), even though the label is insensitive ++ * due to being inside an insensitive menu item. So, here we have a ++ * HACK in which we frob the label's state directly. GtkLabel's expose ++ * handler will be run after this function, so it will think that the ++ * label is in GTK_STATE_NORMAL. We reset the label's state back to ++ * insensitive in output_title_label_after_expose_event_cb(). ++ * ++ * Yay for fucking with GTK+'s internals. ++ */ ++ ++ widget->state = GTK_STATE_NORMAL; ++ ++ return FALSE; ++} ++ ++/* See the comment in output_title_event_box_expose_event_cb() about this funny label widget */ ++static gboolean ++output_title_label_after_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data) ++{ ++ g_assert (GTK_IS_LABEL (widget)); ++ widget->state = GTK_STATE_INSENSITIVE; ++ ++ return FALSE; ++} ++ ++static void ++title_item_size_allocate_cb (GtkWidget *widget, GtkAllocation *allocation, gpointer data) ++{ ++ /* When GtkMenu does size_request on its items, it asks them for their "toggle size", ++ * which will be non-zero when there are check/radio items. GtkMenu remembers ++ * the largest of those sizes. During the size_allocate pass, GtkMenu calls ++ * gtk_menu_item_toggle_size_allocate() with that value, to tell the menu item ++ * that it should later paint its child a bit to the right of its edge. ++ * ++ * However, we want the "title" menu items for each RANDR output to span the *whole* ++ * allocation of the menu item, not just the "allocation minus toggle" area. ++ * ++ * So, we let the menu item size_allocate itself as usual, but this ++ * callback gets run afterward. Here we hack a toggle size of 0 into ++ * the menu item, and size_allocate it by hand *again*. We also need to ++ * avoid recursing into this function. ++ */ ++ ++ g_assert (GTK_IS_MENU_ITEM (widget)); ++ ++ gtk_menu_item_toggle_size_allocate (GTK_MENU_ITEM (widget), 0); ++ ++ g_signal_handlers_block_by_func (widget, title_item_size_allocate_cb, NULL); ++ ++ /* Sigh. There is no way to turn on GTK_ALLOC_NEEDED outside of GTK+ ++ * itself; also, since calling size_allocate on a widget with the same ++ * allcation is a no-op, we need to allocate with a "different" size ++ * first. ++ */ ++ ++ allocation->width++; ++ gtk_widget_size_allocate (widget, allocation); ++ ++ allocation->width--; ++ gtk_widget_size_allocate (widget, allocation); ++ ++ g_signal_handlers_unblock_by_func (widget, title_item_size_allocate_cb, NULL); ++} ++ ++static GtkWidget * ++make_menu_item_for_output_title (GsdXrandrManager *manager, GnomeOutputInfo *output) ++{ ++ GtkWidget *item; ++ GtkWidget *label; ++ char *str; ++ ++ item = gtk_menu_item_new (); ++ ++ g_signal_connect (item, "size-allocate", ++ G_CALLBACK (title_item_size_allocate_cb), NULL); ++ ++ str = g_markup_printf_escaped ("%s", output->display_name); ++ label = gtk_label_new (NULL); ++ gtk_label_set_markup (GTK_LABEL (label), str); ++ g_free (str); ++ ++ /* Add padding around the label to fit the box that we'll draw for color-coding */ ++ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); ++ gtk_misc_set_padding (GTK_MISC (label), ++ OUTPUT_TITLE_ITEM_BORDER + OUTPUT_TITLE_ITEM_PADDING, ++ OUTPUT_TITLE_ITEM_BORDER + OUTPUT_TITLE_ITEM_PADDING); ++ ++ gtk_container_add (GTK_CONTAINER (item), label); ++ ++ /* We want to paint a colored box as the background of the label, so we connect ++ * to its expose-event signal. See the comment in *** to see why need to connect ++ * to the label both 'before' and 'after'. ++ */ ++ g_signal_connect (label, "expose-event", ++ G_CALLBACK (output_title_label_expose_event_cb), manager); ++ g_signal_connect_after (label, "expose-event", ++ G_CALLBACK (output_title_label_after_expose_event_cb), manager); ++ ++ g_object_set_data (G_OBJECT (label), "output", output); ++ ++ gtk_widget_set_sensitive (item, FALSE); /* the title is not selectable */ ++ gtk_widget_show_all (item); ++ ++ return item; ++} ++ ++static void ++get_allowed_rotations_for_output (GsdXrandrManager *manager, GnomeOutputInfo *output, int *out_num_rotations, GnomeRRRotation *out_rotations) ++{ ++ static const GnomeRRRotation possible_rotations[] = { ++ GNOME_RR_ROTATION_0, ++ GNOME_RR_ROTATION_90, ++ GNOME_RR_ROTATION_180, ++ GNOME_RR_ROTATION_270 ++ /* We don't allow REFLECT_X or REFLECT_Y for now, as gnome-display-properties doesn't allow them, either */ ++ }; ++ ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ GnomeRRRotation current_rotation; ++ int i; ++ ++ *out_num_rotations = 0; ++ *out_rotations = 0; ++ ++ current_rotation = output->rotation; ++ ++ /* Yay for brute force */ ++ ++ for (i = 0; i < G_N_ELEMENTS (possible_rotations); i++) { ++ GnomeRRRotation rotation_to_test; ++ ++ rotation_to_test = possible_rotations[i]; ++ ++ output->rotation = rotation_to_test; ++ ++ if (gnome_rr_config_applicable (priv->configuration, priv->rw_screen)) { ++ (*out_num_rotations)++; ++ (*out_rotations) |= rotation_to_test; ++ } ++ } ++ ++ output->rotation = current_rotation; ++ ++ if (*out_num_rotations == 0 || *out_rotations == 0) { ++ g_warning ("Huh, output %p says it doesn't support any rotations, and yet it has a current rotation?", output); ++ *out_num_rotations = 1; ++ *out_rotations = output->rotation; ++ } ++} ++ ++static void ++add_unsupported_rotation_item (GsdXrandrManager *manager) ++{ ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ GtkWidget *item; ++ GtkWidget *label; ++ ++ item = gtk_menu_item_new (); ++ ++ label = gtk_label_new (NULL); ++ gtk_label_set_markup (GTK_LABEL (label), _("Rotation not supported")); ++ gtk_container_add (GTK_CONTAINER (item), label); ++ ++ gtk_widget_show_all (item); ++ gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), item); ++} ++ ++static void ++error_dialog (const char *title, const char *msg) ++{ ++ GtkWidget *dialog; ++ ++ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, ++ "%s", title); ++ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", msg); ++ ++ gtk_dialog_run (GTK_DIALOG (dialog)); ++ gtk_widget_destroy (dialog); ++} ++ ++static void ++output_rotation_item_activate_cb (GtkMenuItem *item, gpointer data) ++{ ++ GsdXrandrManager *manager = GSD_XRANDR_MANAGER (data); ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ GnomeOutputInfo *output; ++ GnomeRRRotation rotation; ++ GError *error; ++ ++ output = g_object_get_data (G_OBJECT (item), "output"); ++ rotation = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "rotation")); ++ ++ output->rotation = rotation; ++ ++ error = NULL; ++ if (gnome_rr_config_save (priv->configuration, &error)) { ++ if (!gnome_rr_config_apply_stored (priv->rw_screen)) { ++ error_dialog (_("The selected rotation could not be applied"), ++ _("An error occurred while configuring the screen")); ++ /* FIXME: that message is really useless. Make ++ * gnome_rr_config_apply_stored() give us a meaningful ++ * error message! ++ */ ++ } ++ } else { ++ error_dialog (_("The selected rotation could not be applied"), ++ error->message); ++ g_error_free (error); ++ } ++} ++ ++static void ++add_items_for_rotations (GsdXrandrManager *manager, GnomeOutputInfo *output, GnomeRRRotation allowed_rotations) ++{ ++ typedef struct { ++ GnomeRRRotation rotation; ++ const char * name; ++ } RotationInfo; ++ static const RotationInfo rotations[] = { ++ { GNOME_RR_ROTATION_0, N_("Normal") }, ++ { GNOME_RR_ROTATION_90, N_("Left") }, ++ { GNOME_RR_ROTATION_270, N_("Right") }, ++ { GNOME_RR_ROTATION_180, N_("Upside Down") }, ++ /* We don't allow REFLECT_X or REFLECT_Y for now, as gnome-display-properties doesn't allow them, either */ ++ }; ++ ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ int i; ++ GSList *group; ++ GtkWidget *active_item; ++ gulong active_item_activate_id; ++ ++ group = NULL; ++ active_item = NULL; ++ active_item_activate_id = 0; ++ ++ for (i = 0; i < G_N_ELEMENTS (rotations); i++) { ++ GnomeRRRotation rot; ++ GtkWidget *item; ++ gulong activate_id; ++ ++ rot = rotations[i].rotation; ++ ++ if ((allowed_rotations & rot) == 0) { ++ /* don't display items for rotations which are ++ * unavailable. Their availability is not under the ++ * user's control, anyway. ++ */ ++ continue; ++ } ++ ++ item = gtk_radio_menu_item_new_with_label (group, _(rotations[i].name)); ++ gtk_widget_show_all (item); ++ gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), item); ++ ++ g_object_set_data (G_OBJECT (item), "output", output); ++ g_object_set_data (G_OBJECT (item), "rotation", GINT_TO_POINTER (rot)); ++ ++ activate_id = g_signal_connect (item, "activate", ++ G_CALLBACK (output_rotation_item_activate_cb), manager); ++ ++ group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); ++ ++ if (rot == output->rotation) { ++ active_item = item; ++ active_item_activate_id = activate_id; ++ } ++ } ++ ++ if (active_item) { ++ /* Block the signal temporarily so our callback won't be called; ++ * we are just setting up the UI. ++ */ ++ g_signal_handler_block (active_item, active_item_activate_id); ++ ++ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (active_item), TRUE); ++ ++ g_signal_handler_unblock (active_item, active_item_activate_id); ++ } ++ ++} ++ ++static void ++add_rotation_items_for_output (GsdXrandrManager *manager, GnomeOutputInfo *output) ++{ ++ int num_rotations; ++ GnomeRRRotation rotations; ++ ++ get_allowed_rotations_for_output (manager, output, &num_rotations, &rotations); ++ ++ if (num_rotations == 1) ++ add_unsupported_rotation_item (manager); ++ else ++ add_items_for_rotations (manager, output, rotations); ++} ++ ++static void ++add_menu_items_for_output (GsdXrandrManager *manager, GnomeOutputInfo *output) ++{ ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ GtkWidget *item; ++ ++ item = make_menu_item_for_output_title (manager, output); ++ gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), item); ++ ++ add_rotation_items_for_output (manager, output); ++} ++ ++static void ++add_menu_items_for_outputs (GsdXrandrManager *manager) ++{ ++ struct GsdXrandrManagerPrivate *priv = manager->priv; ++ int i; ++ ++ for (i = 0; priv->configuration->outputs[i] != NULL; i++) { ++ if (priv->configuration->outputs[i]->connected) ++ add_menu_items_for_output (manager, priv->configuration->outputs[i]); ++ } ++} ++ ++static void + status_icon_popup_menu (GsdXrandrManager *manager, guint button, guint32 timestamp) + { + struct GsdXrandrManagerPrivate *priv = manager->priv; +- GtkWidget *menu; + GtkWidget *item; + +- menu = gtk_menu_new (); ++ g_assert (priv->configuration == NULL); ++ priv->configuration = gnome_rr_config_new_current (priv->rw_screen); ++ ++ g_assert (priv->labeler == NULL); ++ priv->labeler = gnome_rr_labeler_new (priv->configuration); ++ ++ g_assert (priv->popup_menu == NULL); ++ priv->popup_menu = gtk_menu_new (); ++ ++ add_menu_items_for_outputs (manager); + +- item = gtk_menu_item_new_with_label (_("Screen Rotation")); +- gtk_widget_set_sensitive (item, FALSE); ++ item = gtk_separator_menu_item_new (); + gtk_widget_show (item); +- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); ++ gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), item); + + item = gtk_menu_item_new_with_mnemonic (_("_Configure Display Settings ...")); + g_signal_connect (item, "activate", + G_CALLBACK (popup_menu_configure_display_cb), manager); + gtk_widget_show (item); +- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); +- /* FIXME */ ++ gtk_menu_shell_append (GTK_MENU_SHELL (priv->popup_menu), item); + +- g_signal_connect (menu, "selection-done", +- G_CALLBACK (gtk_widget_destroy), NULL); ++ g_signal_connect (priv->popup_menu, "selection-done", ++ G_CALLBACK (status_icon_popup_menu_selection_done_cb), manager); + +- gtk_menu_popup (GTK_MENU (menu), NULL, NULL, ++ gtk_menu_popup (GTK_MENU (priv->popup_menu), NULL, NULL, + gtk_status_icon_position_menu, + priv->status_icon, button, timestamp); + } diff --git a/gnome-settings-daemon-system-proxy-configuration.patch b/gnome-settings-daemon-system-proxy-configuration.diff similarity index 82% rename from gnome-settings-daemon-system-proxy-configuration.patch rename to gnome-settings-daemon-system-proxy-configuration.diff index aa4600e..be5312a 100644 --- a/gnome-settings-daemon-system-proxy-configuration.patch +++ b/gnome-settings-daemon-system-proxy-configuration.diff @@ -1,20 +1,96 @@ -Index: plugins/proxy/proxy.gnome-settings-plugin.in -=================================================================== ---- plugins/proxy/proxy.gnome-settings-plugin.in (revision 0) -+++ plugins/proxy/proxy.gnome-settings-plugin.in (revision 0) -@@ -0,0 +1,8 @@ -+[GNOME Settings Plugin] -+Module=proxy -+IAge=0 -+_Name=Network Proxy -+_Description=Network proxy plugin -+Authors=Rodrigo Moya -+Copyright= -+Website= -Index: plugins/proxy/gsd-proxy-manager.c -=================================================================== ---- plugins/proxy/gsd-proxy-manager.c (revision 0) -+++ plugins/proxy/gsd-proxy-manager.c (revision 0) +From e61dc951c432d489b17e3bdaf1e566ac15958c6b Mon Sep 17 00:00:00 2001 +Message-Id: +From: Federico Mena Quintero +Date: Thu, 14 Aug 2008 18:55:55 -0500 +Subject: [PATCH 1/5] Add a new plugin for proxy settings. + +We read the system's configuration from /etc/sysconfig/proxy and propagate it to +GNOME's GConf keys. +--- + plugins/proxy/Makefile.am | 57 +++ + plugins/proxy/gsd-proxy-manager.c | 571 ++++++++++++++++++++++++++ + plugins/proxy/gsd-proxy-manager.h | 57 +++ + plugins/proxy/gsd-proxy-plugin.c | 103 +++++ + plugins/proxy/gsd-proxy-plugin.h | 59 +++ + plugins/proxy/novell-sysconfig-proxy-helper | 19 + + plugins/proxy/proxy.gnome-settings-plugin.in | 8 + + 7 files changed, 874 insertions(+), 0 deletions(-) + create mode 100644 plugins/proxy/Makefile.am + create mode 100644 plugins/proxy/gsd-proxy-manager.c + create mode 100644 plugins/proxy/gsd-proxy-manager.h + create mode 100644 plugins/proxy/gsd-proxy-plugin.c + create mode 100644 plugins/proxy/gsd-proxy-plugin.h + create mode 100644 plugins/proxy/novell-sysconfig-proxy-helper + create mode 100644 plugins/proxy/proxy.gnome-settings-plugin.in + +diff --git a/plugins/proxy/Makefile.am b/plugins/proxy/Makefile.am +new file mode 100644 +index 0000000..6a4ba90 +--- /dev/null ++++ b/plugins/proxy/Makefile.am +@@ -0,0 +1,57 @@ ++NULL = ++ ++plugin_LTLIBRARIES = \ ++ libproxy.la \ ++ $(NULL) ++ ++libproxy_la_SOURCES = \ ++ gsd-proxy-plugin.h \ ++ gsd-proxy-plugin.c \ ++ gsd-proxy-manager.h \ ++ gsd-proxy-manager.c \ ++ $(NULL) ++ ++libproxy_la_CPPFLAGS = \ ++ -I$(top_srcdir)/gnome-settings-daemon \ ++ -DGNOME_SETTINGS_LOCALEDIR=\""$(datadir)/locale"\" \ ++ $(AM_CPPFLAGS) ++ ++libproxy_la_CFLAGS = \ ++ $(SETTINGS_PLUGIN_CFLAGS) \ ++ -DLIBEXECDIR="\"$(libexecdir)\"" \ ++ $(AM_CFLAGS) ++ ++libproxy_la_LDFLAGS = \ ++ $(GSD_PLUGIN_LDFLAGS) \ ++ $(NULL) ++ ++libproxy_la_LIBADD = \ ++ $(SETTINGS_PLUGIN_LIBS) \ ++ $(NULL) ++ ++plugin_in_files = \ ++ proxy.gnome-settings-plugin.in \ ++ $(NULL) ++ ++plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin) ++ ++helperdir = $(libexecdir) ++helperfile = novell-sysconfig-proxy-helper ++ ++install-data-hook : ++ $(INSTALL_SCRIPT) $(srcdir)/$(helperfile) $(DESTDIR)$(libexecdir)/$(helperfile) ++ ++EXTRA_DIST = \ ++ $(plugin_in_files) \ ++ $(helperfile) \ ++ $(NULL) ++ ++CLEANFILES = \ ++ $(plugin_DATA) \ ++ $(NULL) ++ ++DISTCLEANFILES = \ ++ $(plugin_DATA) \ ++ $(NULL) ++ ++@GSD_INTLTOOL_PLUGIN_RULE@ +diff --git a/plugins/proxy/gsd-proxy-manager.c b/plugins/proxy/gsd-proxy-manager.c +new file mode 100644 +index 0000000..9092b00 +--- /dev/null ++++ b/plugins/proxy/gsd-proxy-manager.c @@ -0,0 +1,571 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -587,10 +663,74 @@ Index: plugins/proxy/gsd-proxy-manager.c + + return GSD_PROXY_MANAGER (manager_object); +} -Index: plugins/proxy/gsd-proxy-plugin.c -=================================================================== ---- plugins/proxy/gsd-proxy-plugin.c (revision 0) -+++ plugins/proxy/gsd-proxy-plugin.c (revision 0) +diff --git a/plugins/proxy/gsd-proxy-manager.h b/plugins/proxy/gsd-proxy-manager.h +new file mode 100644 +index 0000000..3f97d01 +--- /dev/null ++++ b/plugins/proxy/gsd-proxy-manager.h +@@ -0,0 +1,57 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2008 Rodrigo Moya ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program 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 General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++#ifndef __GSD_PROXY_MANAGER_H ++#define __GSD_PROXY_MANAGER_H ++ ++#include ++ ++G_BEGIN_DECLS ++ ++#define GSD_TYPE_PROXY_MANAGER (gsd_proxy_manager_get_type ()) ++#define GSD_PROXY_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_TYPE_PROXY_MANAGER, GsdProxyManager)) ++#define GSD_PROXY_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GSD_TYPE_PROXY_MANAGER, GsdProxyManagerClass)) ++#define GSD_IS_PROXY_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_TYPE_PROXY_MANAGER)) ++#define GSD_IS_PROXY_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_TYPE_PROXY_MANAGER)) ++#define GSD_PROXY_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_TYPE_PROXY_MANAGER, GsdProxyManagerClass)) ++ ++typedef struct GsdProxyManagerPrivate GsdProxyManagerPrivate; ++ ++typedef struct ++{ ++ GObject parent; ++ GsdProxyManagerPrivate *priv; ++} GsdProxyManager; ++ ++typedef struct ++{ ++ GObjectClass parent_class; ++} GsdProxyManagerClass; ++ ++GType gsd_proxy_manager_get_type (void); ++ ++GsdProxyManager * gsd_proxy_manager_new (void); ++gboolean gsd_proxy_manager_start (GsdProxyManager *manager, ++ GError **error); ++void gsd_proxy_manager_stop (GsdProxyManager *manager); ++ ++G_END_DECLS ++ ++#endif /* __GSD_PROXY_MANAGER_H */ +diff --git a/plugins/proxy/gsd-proxy-plugin.c b/plugins/proxy/gsd-proxy-plugin.c +new file mode 100644 +index 0000000..843ff16 +--- /dev/null ++++ b/plugins/proxy/gsd-proxy-plugin.c @@ -0,0 +1,103 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -695,158 +835,11 @@ Index: plugins/proxy/gsd-proxy-plugin.c + + g_type_class_add_private (klass, sizeof (GsdProxyPluginPrivate)); +} -Index: plugins/proxy/Makefile.am -=================================================================== ---- plugins/proxy/Makefile.am (revision 0) -+++ plugins/proxy/Makefile.am (revision 0) -@@ -0,0 +1,57 @@ -+NULL = -+ -+plugin_LTLIBRARIES = \ -+ libproxy.la \ -+ $(NULL) -+ -+libproxy_la_SOURCES = \ -+ gsd-proxy-plugin.h \ -+ gsd-proxy-plugin.c \ -+ gsd-proxy-manager.h \ -+ gsd-proxy-manager.c \ -+ $(NULL) -+ -+libproxy_la_CPPFLAGS = \ -+ -I$(top_srcdir)/gnome-settings-daemon \ -+ -DGNOME_SETTINGS_LOCALEDIR=\""$(datadir)/locale"\" \ -+ $(AM_CPPFLAGS) -+ -+libproxy_la_CFLAGS = \ -+ $(SETTINGS_PLUGIN_CFLAGS) \ -+ -DLIBEXECDIR="\"$(libexecdir)\"" \ -+ $(AM_CFLAGS) -+ -+libproxy_la_LDFLAGS = \ -+ $(GSD_PLUGIN_LDFLAGS) \ -+ $(NULL) -+ -+libproxy_la_LIBADD = \ -+ $(SETTINGS_PLUGIN_LIBS) \ -+ $(NULL) -+ -+plugin_in_files = \ -+ proxy.gnome-settings-plugin.in \ -+ $(NULL) -+ -+plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin) -+ -+helperdir = $(libexecdir) -+helperfile = novell-sysconfig-proxy-helper -+ -+install-data-hook : -+ $(INSTALL_SCRIPT) $(srcdir)/$(helperfile) $(DESTDIR)$(libexecdir)/$(helperfile) -+ -+EXTRA_DIST = \ -+ $(plugin_in_files) \ -+ $(helperfile) \ -+ $(NULL) -+ -+CLEANFILES = \ -+ $(plugin_DATA) \ -+ $(NULL) -+ -+DISTCLEANFILES = \ -+ $(plugin_DATA) \ -+ $(NULL) -+ -+@GSD_INTLTOOL_PLUGIN_RULE@ -Index: plugins/proxy/gsd-proxy-manager.h -=================================================================== ---- plugins/proxy/gsd-proxy-manager.h (revision 0) -+++ plugins/proxy/gsd-proxy-manager.h (revision 0) -@@ -0,0 +1,57 @@ -+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- -+ * -+ * Copyright (C) 2008 Rodrigo Moya -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program 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 General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ * -+ */ -+ -+#ifndef __GSD_PROXY_MANAGER_H -+#define __GSD_PROXY_MANAGER_H -+ -+#include -+ -+G_BEGIN_DECLS -+ -+#define GSD_TYPE_PROXY_MANAGER (gsd_proxy_manager_get_type ()) -+#define GSD_PROXY_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_TYPE_PROXY_MANAGER, GsdProxyManager)) -+#define GSD_PROXY_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GSD_TYPE_PROXY_MANAGER, GsdProxyManagerClass)) -+#define GSD_IS_PROXY_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_TYPE_PROXY_MANAGER)) -+#define GSD_IS_PROXY_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_TYPE_PROXY_MANAGER)) -+#define GSD_PROXY_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_TYPE_PROXY_MANAGER, GsdProxyManagerClass)) -+ -+typedef struct GsdProxyManagerPrivate GsdProxyManagerPrivate; -+ -+typedef struct -+{ -+ GObject parent; -+ GsdProxyManagerPrivate *priv; -+} GsdProxyManager; -+ -+typedef struct -+{ -+ GObjectClass parent_class; -+} GsdProxyManagerClass; -+ -+GType gsd_proxy_manager_get_type (void); -+ -+GsdProxyManager * gsd_proxy_manager_new (void); -+gboolean gsd_proxy_manager_start (GsdProxyManager *manager, -+ GError **error); -+void gsd_proxy_manager_stop (GsdProxyManager *manager); -+ -+G_END_DECLS -+ -+#endif /* __GSD_PROXY_MANAGER_H */ -Index: plugins/proxy/novell-sysconfig-proxy-helper -=================================================================== ---- plugins/proxy/novell-sysconfig-proxy-helper (revision 0) -+++ plugins/proxy/novell-sysconfig-proxy-helper (revision 0) -@@ -0,0 +1,19 @@ -+#!/bin/sh -+ -+if [ ! -f /etc/sysconfig/proxy ] -+then -+ exit 0 -+fi -+ -+source /etc/sysconfig/proxy -+ -+# This may look convoluted, but it's an easy way to let random shell -+# script code appear in /etc/sysconfig/proxy and still let user code -+# read the variables in it easily. -+ -+echo "PROXY_ENABLED $PROXY_ENABLED" -+echo "HTTP_PROXY $HTTP_PROXY" -+echo "HTTPS_PROXY $HTTPS_PROXY" -+echo "FTP_PROXY $FTP_PROXY" -+echo "GOPHER_PROXY $GOPHER_PROXY" -+echo "NO_PROXY $NO_PROXY" -Index: plugins/proxy/gsd-proxy-plugin.h -=================================================================== ---- plugins/proxy/gsd-proxy-plugin.h (revision 0) -+++ plugins/proxy/gsd-proxy-plugin.h (revision 0) +diff --git a/plugins/proxy/gsd-proxy-plugin.h b/plugins/proxy/gsd-proxy-plugin.h +new file mode 100644 +index 0000000..8f81ecb +--- /dev/null ++++ b/plugins/proxy/gsd-proxy-plugin.h @@ -0,0 +1,59 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -907,46 +900,68 @@ Index: plugins/proxy/gsd-proxy-plugin.h +G_END_DECLS + +#endif /* __GSD_PROXY_PLUGIN_H__ */ -Index: plugins/Makefile.am -=================================================================== ---- plugins/Makefile.am (revision 328) -+++ plugins/Makefile.am (working copy) -@@ -10,6 +10,7 @@ - keyboard \ - media-keys \ - mouse \ -+ proxy \ - screensaver \ - sound \ - typing-break \ -Index: configure.ac -=================================================================== ---- configure.ac (revision 328) -+++ configure.ac (working copy) -@@ -414,6 +414,7 @@ - plugins/media-keys/Makefile - plugins/media-keys/actions/Makefile - plugins/mouse/Makefile -+plugins/proxy/Makefile - plugins/screensaver/Makefile - plugins/sound/Makefile - plugins/sound/libsounds/Makefile -Index: data/Makefile.am -=================================================================== ---- data/Makefile.am (revision 328) -+++ data/Makefile.am (working copy) -@@ -8,6 +8,7 @@ - apps_gnome_settings_daemon_keybindings.schemas.in \ - apps_gnome_settings_daemon_screensaver.schemas.in \ - desktop_gnome_font_rendering.schemas.in \ -+ system_proxy.schemas.in \ - $(NULL) - - schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) -Index: data/system_proxy.schemas.in -=================================================================== ---- data/system_proxy.schemas.in (revision 0) -+++ data/system_proxy.schemas.in (revision 0) +diff --git a/plugins/proxy/novell-sysconfig-proxy-helper b/plugins/proxy/novell-sysconfig-proxy-helper +new file mode 100644 +index 0000000..98b76da +--- /dev/null ++++ b/plugins/proxy/novell-sysconfig-proxy-helper +@@ -0,0 +1,19 @@ ++#!/bin/sh ++ ++if [ ! -f /etc/sysconfig/proxy ] ++then ++ exit 0 ++fi ++ ++source /etc/sysconfig/proxy ++ ++# This may look convoluted, but it's an easy way to let random shell ++# script code appear in /etc/sysconfig/proxy and still let user code ++# read the variables in it easily. ++ ++echo "PROXY_ENABLED $PROXY_ENABLED" ++echo "HTTP_PROXY $HTTP_PROXY" ++echo "HTTPS_PROXY $HTTPS_PROXY" ++echo "FTP_PROXY $FTP_PROXY" ++echo "GOPHER_PROXY $GOPHER_PROXY" ++echo "NO_PROXY $NO_PROXY" +diff --git a/plugins/proxy/proxy.gnome-settings-plugin.in b/plugins/proxy/proxy.gnome-settings-plugin.in +new file mode 100644 +index 0000000..19ce10c +--- /dev/null ++++ b/plugins/proxy/proxy.gnome-settings-plugin.in +@@ -0,0 +1,8 @@ ++[GNOME Settings Plugin] ++Module=proxy ++IAge=0 ++_Name=Network Proxy ++_Description=Network proxy plugin ++Authors=Rodrigo Moya ++Copyright= ++Website= +-- +1.5.4.5 + + +From b0bf83da99fce538da8d747e5386853626d456ec Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Federico Mena Quintero +Date: Thu, 14 Aug 2008 19:00:41 -0500 +Subject: [PATCH 2/5] Add schemas for the system proxy settings. + See the documentation about this in http://en.opensuse.org/GNOME/Proxy_configuration + +--- + data/system_proxy.schemas.in | 26 ++++++++++++++++++++++++++ + 1 files changed, 26 insertions(+), 0 deletions(-) + create mode 100644 data/system_proxy.schemas.in + +diff --git a/data/system_proxy.schemas.in b/data/system_proxy.schemas.in +new file mode 100644 +index 0000000..5f01b2e +--- /dev/null ++++ b/data/system_proxy.schemas.in @@ -0,0 +1,26 @@ + + @@ -974,3 +989,90 @@ Index: data/system_proxy.schemas.in + + + +-- +1.5.4.5 + + +From b149af05692650efe6947aa084287fcdda428108 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Federico Mena Quintero +Date: Thu, 14 Aug 2008 18:58:46 -0500 +Subject: [PATCH 3/5] Add the proxy plugin to the plugins/Makefile.am + +--- + plugins/Makefile.am | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/plugins/Makefile.am b/plugins/Makefile.am +index 2d33061..82f3eae 100644 +--- a/plugins/Makefile.am ++++ b/plugins/Makefile.am +@@ -12,6 +12,7 @@ SUBDIRS = \ + keyboard \ + media-keys \ + mouse \ ++ proxy \ + screensaver \ + sound \ + typing-break \ +-- +1.5.4.5 + + +From 97e29c68cf89a34db1c35656a3cc7e2e3d8f565d Mon Sep 17 00:00:00 2001 +Message-Id: <97e29c68cf89a34db1c35656a3cc7e2e3d8f565d.1218815729.git.federico@novell.com> +In-Reply-To: +References: +From: Federico Mena Quintero +Date: Thu, 14 Aug 2008 18:59:21 -0500 +Subject: [PATCH 4/5] Add the proxy plugin to configure.ac + +--- + configure.ac | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/configure.ac b/configure.ac +index bc336c1..ec5e5f3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -441,6 +441,7 @@ plugins/keyboard/Makefile + plugins/media-keys/Makefile + plugins/media-keys/actions/Makefile + plugins/mouse/Makefile ++plugins/proxy/Makefile + plugins/screensaver/Makefile + plugins/sound/Makefile + plugins/sound/libsounds/Makefile +-- +1.5.4.5 + + +From ddab86c79a40b5d95a8d0420e1ea88e1d3ddbac9 Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: +References: +From: Federico Mena Quintero +Date: Thu, 14 Aug 2008 18:59:54 -0500 +Subject: [PATCH 5/5] Add the proxy schemas to data/Makefile.am + +--- + data/Makefile.am | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/data/Makefile.am b/data/Makefile.am +index 2f0d4ca..c2494ec 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -9,6 +9,7 @@ schemas_in_files = \ + apps_gnome_settings_daemon_screensaver.schemas.in \ + desktop_gnome_font_rendering.schemas.in \ + apps_gnome_settings_daemon_xrandr.schemas.in \ ++ system_proxy.schemas.in \ + $(NULL) + + schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) +-- +1.5.4.5 + diff --git a/gnome-settings-daemon.changes b/gnome-settings-daemon.changes index b4707ce..20aabfd 100644 --- a/gnome-settings-daemon.changes +++ b/gnome-settings-daemon.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Fri Aug 15 18:23:25 CEST 2008 - federico@novell.com + +- Updated to gnome-settings-daemon-2.23.6. + + Bugs fixed: bgo#544347, bgo#544737, bgo#544733, bgo#165343, bgo#539786, + bgo#543289, bgo#543095, bgo#542275, bgo#538699, bgo#533198 +- Added gnome-settings-daemon-monitor-labeling.diff to implement + labeling of monitors in the tray icon, and monitor rotation support + as well. + ------------------------------------------------------------------- Fri Jun 20 17:51:33 CEST 2008 - maw@suse.de diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec index 6ff13f9..cb213e9 100644 --- a/gnome-settings-daemon.spec +++ b/gnome-settings-daemon.spec @@ -1,10 +1,17 @@ # -# spec file for package gnome-settings-daemon (Version 2.23.4) +# spec file for package gnome-settings-daemon (Version 2.23.6) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. -# This file and all modifications and additions to the pristine -# package are under the same license as the package itself. # +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + # Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -16,14 +23,16 @@ Name: gnome-settings-daemon BuildRequires: fdupes gnome-common gnome-desktop-devel gnome-patch-translation gstreamer-0_10-plugins-base-devel intltool libglade2-devel libgnomekbd-devel update-desktop-files xorg-x11 License: GPL v2 or later Group: System/GUI/GNOME -Version: 2.23.4 +Version: 2.23.6 Release: 1 Summary: Settings daemon for the GNOME desktop Source: %{_name}-%{version}.tar.bz2 -# PATCH-FEATURE-OPENSUSE gnome-settings-daemon-system-proxy-configuration.patch -Patch2: %{name}-system-proxy-configuration.patch +# PATCH-FEATURE-OPENSUSE gnome-settings-daemon-system-proxy-configuration.diff +Patch2: gnome-settings-daemon-system-proxy-configuration.diff # PATCH-FIX-UPSTREAM gnome-settings-daemon-bnc369263-broken-xkb-layout.patch bnc369263 bfo16105 vuntz@novell.com -- This is a hack to fix a major bug. Patch4: gnome-settings-daemon-bnc369263-broken-xkb-layout.patch +# PATCH-FEATURE-UPSTREAM gnome-settings-daemon-monitor-labeling.diff fate304764 fate304752 federico@novell.com - Monitor labeling and rotation support for the RANDR tray icon +Patch5: gnome-settings-daemon-monitor-labeling.diff Url: http://www.gnome.org Requires: %{name}-lang = %{version} BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -77,8 +86,9 @@ Authors: %prep %setup -q -n %{_name}-%{version} #gnome-patch-translation-prepare -%patch2 +%patch2 -p1 %patch4 -p1 +%patch5 -p1 #gnome-patch-translation-update %build @@ -131,6 +141,13 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/*.pc %changelog +* Fri Aug 15 2008 federico@novell.com +- Updated to gnome-settings-daemon-2.23.6. + + Bugs fixed: bgo#544347, bgo#544737, bgo#544733, bgo#165343, bgo#539786, + bgo#543289, bgo#543095, bgo#542275, bgo#538699, bgo#533198 +- Added gnome-settings-daemon-monitor-labeling.diff to implement + labeling of monitors in the tray icon, and monitor rotation support + as well. * Fri Jun 20 2008 maw@suse.de - Update to version 2.23.4: + Bugs fixed: bgo#523743, bgo#523159, bgo#507386, bgo#525042,