rpms/gnome-panel/devel gnome-panel-2.19.2-move-suspend-to-menu.patch, NONE, 1.1

Matthias Clasen (mclasen) fedora-extras-commits at redhat.com
Mon May 21 03:26:29 UTC 2007


Author: mclasen

Update of /cvs/pkgs/rpms/gnome-panel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21570

Added Files:
	gnome-panel-2.19.2-move-suspend-to-menu.patch 
Log Message:
add patch


gnome-panel-2.19.2-move-suspend-to-menu.patch:

--- NEW FILE gnome-panel-2.19.2-move-suspend-to-menu.patch ---
--- gnome-panel-2.19.2/gnome-panel/panel-enums.h.move-suspend-to-menu	2007-05-14 15:53:01.000000000 -0400
+++ gnome-panel-2.19.2/gnome-panel/panel-enums.h	2007-05-20 23:05:00.000000000 -0400
@@ -96,6 +96,7 @@ typedef enum {
 	PANEL_ACTION_FORCE_QUIT,
 	PANEL_ACTION_CONNECT_SERVER,
 	PANEL_ACTION_SHUTDOWN,
+	PANEL_ACTION_SUSPEND,
 	/* compatibility with GNOME < 2.13.90 */
         PANEL_ACTION_SCREENSHOT,
         PANEL_ACTION_LAST
--- gnome-panel-2.19.2/gnome-panel/panel-logout.c.move-suspend-to-menu	2007-05-20 23:05:00.000000000 -0400
+++ gnome-panel-2.19.2/gnome-panel/panel-logout.c	2007-05-20 23:05:00.000000000 -0400
@@ -336,10 +336,6 @@ panel_logout_new (PanelLogoutDialogType 
 		primary_text   = _("Shut down this system now?");
 
 		logout_dialog->priv->default_response = PANEL_LOGOUT_RESPONSE_SHUTDOWN;
-		if (panel_power_manager_can_suspend (logout_dialog->priv->power_manager))
-			gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
-					       _("S_uspend"),
-					       PANEL_LOGOUT_RESPONSE_STR);
 
 		if (panel_power_manager_can_hibernate (logout_dialog->priv->power_manager))
 			gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
--- gnome-panel-2.19.2/gnome-panel/panel-action-button.c.move-suspend-to-menu	2007-05-20 23:05:00.000000000 -0400
+++ gnome-panel-2.19.2/gnome-panel/panel-action-button.c	2007-05-20 23:09:39.000000000 -0400
@@ -46,6 +46,7 @@
 #include "panel-lockdown.h"
 #include "panel-logout.h"
 #include "panel-compatibility.h"
+#include "panel-power-manager.h"
 #include "panel-gdm.h"
 #include "panel-icon-names.h"
 
@@ -79,6 +80,7 @@ static GConfEnumStringPair panel_action_
 	{ PANEL_ACTION_FORCE_QUIT,     "force-quit"     },
 	{ PANEL_ACTION_CONNECT_SERVER, "connect-server" },
 	{ PANEL_ACTION_SHUTDOWN,       "shutdown"       },
+	{ PANEL_ACTION_SUSPEND,        "suspend"       },
 	/* compatibility with GNOME < 2.13.90 */
 	{ PANEL_ACTION_SCREENSHOT,     "screenshot"     },
 	{ 0,                           NULL             },
@@ -180,6 +182,39 @@ panel_action_shutdown (GtkWidget *widget
 }
 
 static gboolean
+panel_action_can_suspend (void)
+{
+	PanelPowerManager *manager;
+	gboolean can_suspend;
+
+	manager = panel_get_power_manager ();
+
+	can_suspend = panel_power_manager_can_suspend (manager);
+
+	g_object_unref (manager);
+
+	return can_suspend;
+}
+
+static gboolean
+panel_action_suspend_is_disabled (void)
+{
+	return !panel_action_can_suspend ();
+}
+
+static void
+panel_action_suspend (GtkWidget *widget)
+{
+	PanelPowerManager *manager;
+
+	manager = panel_get_power_manager ();
+
+	panel_power_manager_attempt_suspend (manager);
+
+	g_object_unref (manager);
+}
+
+static gboolean
 panel_action_shutdown_reboot_is_disabled (void)
 {
 	return (panel_lockdown_get_disable_log_out() ||
@@ -365,6 +400,16 @@ static PanelAction actions [] = {
 		panel_action_shutdown, NULL, NULL,
 		panel_action_shutdown_reboot_is_disabled
 	},
+        {
+                PANEL_ACTION_SUSPEND,
+                "screensaver",
+                N_("Suspend"),
+                N_("Suspend the computer"),
+                "gospanel-20",
+                "ACTION:suspend:NEW",
+                panel_action_suspend, NULL, NULL,
+                panel_action_suspend_is_disabled
+	},
 	/* deprecated actions */
 	{
 		PANEL_ACTION_SCREENSHOT,
--- gnome-panel-2.19.2/gnome-panel/panel-menu-items.c.move-suspend-to-menu	2007-05-20 23:05:00.000000000 -0400
+++ gnome-panel-2.19.2/gnome-panel/panel-menu-items.c	2007-05-20 23:05:00.000000000 -0400
@@ -50,6 +50,7 @@
 #include "panel-recent.h"
 #include "panel-stock-icons.h"
 #include "panel-util.h"
+#include "panel-power-manager.h"
 
 #define BOOKMARKS_FILENAME      ".gtk-bookmarks"
 #define DESKTOP_IS_HOME_DIR_DIR "/apps/nautilus/preferences"
@@ -955,10 +956,22 @@ panel_desktop_menu_item_new (gboolean us
 	menuitem->priv->use_image = use_image;
 
 	menuitem->priv->append_lock_logout = append_lock_logout;
-	if (append_lock_logout)
+	if (append_lock_logout) {
+		PanelPowerManager *manager;
+
 		panel_lockdown_notify_add (G_CALLBACK (panel_desktop_menu_item_recreate_menu),
 					   menuitem);
 
+		manager = panel_get_power_manager ();
+
+		g_signal_connect_swapped (manager, "notify::is-connected",
+					  G_CALLBACK
+					  (panel_desktop_menu_item_recreate_menu), 
+					  menuitem);
+
+		g_object_unref (manager);
+	}
+
 	menuitem->priv->menu = panel_desktop_menu_item_create_menu (menuitem);
 	gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem),
 				   menuitem->priv->menu);
@@ -1063,6 +1076,14 @@ panel_menu_items_append_lock_logout (Gtk
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	}
 
+	item = panel_menu_items_create_action_item (PANEL_ACTION_SUSPEND);
+	if (item != NULL) {
+		if (!separator_inserted)
+			add_menu_separator (menu);
+
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+	}
+
 	item = panel_menu_items_create_action_item (PANEL_ACTION_SHUTDOWN);
 	if (item != NULL) {
 		if (!separator_inserted)
--- gnome-panel-2.19.2/gnome-panel/panel-power-manager.h.move-suspend-to-menu	2007-05-14 15:53:01.000000000 -0400
+++ gnome-panel-2.19.2/gnome-panel/panel-power-manager.h	2007-05-20 23:05:00.000000000 -0400
@@ -78,3 +78,83 @@ PanelPowerManager *panel_get_power_manag
 G_END_DECLS
 
 #endif /* PANEL_POWER_MANAGER_H */
+/* panel-power-manager.h - functions for powering down, restarting, and
+ *                         suspending the computer
+ *
+ * Copyright (C) 2006 Ray Strode <rstrode at redhat.com>
+ *
+ * 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, 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 PANEL_POWER_MANAGER_H
+#define PANEL_POWER_MANAGER_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define PANEL_TYPE_POWER_MANAGER		(panel_power_manager_get_type ())
+#define PANEL_POWER_MANAGER(obj)		(G_TYPE_CHECK_INSTANCE_CAST ((obj), PANEL_TYPE_POWER_MANAGER, PanelPowerManager))
+#define PANEL_POWER_MANAGER_CLASS(klass)	(G_TYPE_CHECK_CLASS_CAST ((klass), PANEL_TYPE_POWER_MANAGER, PanelPowerManagerClass))
+#define PANEL_IS_POWER_MANAGER(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), PANEL_TYPE_POWER_MANAGER))
+#define PANEL_IS_POWER_MANAGER_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), PANEL_TYPE_POWER_MANAGER))
+#define PANEL_POWER_MANAGER_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS((obj), PANEL_TYPE_POWER_MANAGER, PanelPowerManagerClass))
+#define PANEL_POWER_MANAGER_ERROR		(panel_power_manager_error_quark ())
+
+typedef struct _PanelPowerManager		PanelPowerManager;
+typedef struct _PanelPowerManagerClass		PanelPowerManagerClass;
+typedef struct _PanelPowerManagerPrivate	PanelPowerManagerPrivate;
+typedef enum _PanelPowerManagerError		PanelPowerManagerError;
+
+
+struct _PanelPowerManager {
+	GObject parent;
+
+	/*< private > */
+	PanelPowerManagerPrivate *priv;
+};
+
+struct _PanelPowerManagerClass {
+	GObjectClass parent_class;
+
+	/* signals */
+	void (* request_failed) (PanelPowerManager *manager, 
+				 GError *error);
+};
+
+enum _PanelPowerManagerError {
+  PANEL_POWER_MANAGER_ERROR_SUSPENDING = 0,
+  PANEL_POWER_MANAGER_ERROR_HIBERNATING
+};
+
+GType panel_power_manager_get_type (void);
+GQuark panel_power_manager_error_quark (void);
+
+PanelPowerManager *panel_power_manager_new (void) G_GNUC_MALLOC;
+
+gboolean panel_power_manager_can_suspend (PanelPowerManager *manager);
+gboolean panel_power_manager_can_hibernate (PanelPowerManager *manager);
+gboolean panel_power_manager_can_power_down (PanelPowerManager *manager);
+gboolean panel_power_manager_can_restart (PanelPowerManager *manager);
+
+void panel_power_manager_attempt_suspend (PanelPowerManager *manager);
+void panel_power_manager_attempt_hibernate (PanelPowerManager *manager);
+
+PanelPowerManager *panel_get_power_manager (void);
+
+G_END_DECLS
+
+#endif /* PANEL_POWER_MANAGER_H */




More information about the fedora-extras-commits mailing list