diff -ruN gnome-panel-2.22.2/gnome-panel/panel-default-setup.entries gnome-panel-2.22.2-patched/gnome-panel/panel-default-setup.entries
--- gnome-panel-2.22.2/gnome-panel/panel-default-setup.entries 2008-05-26 18:10:44.000000000 +0200
+++ gnome-panel-2.22.2-patched/gnome-panel/panel-default-setup.entries 2008-07-22 23:03:45.000000000 +0200
@@ -80,6 +80,13 @@
true
+
+ toplevels/top_panel/disable_movement
+ /schemas/apps/panel/toplevels/disable_movement
+
+ false
+
+
toplevels/top_panel/orientation
/schemas/apps/panel/toplevels/orientation
@@ -129,6 +136,13 @@
+ toplevels/bottom_panel/disable_movement
+ /schemas/apps/panel/toplevels/disable_movement
+
+ false
+
+
+
toplevels/bottom_panel/orientation
/schemas/apps/panel/toplevels/orientation
diff -ruN gnome-panel-2.22.2/gnome-panel/panel-profile.c gnome-panel-2.22.2-patched/gnome-panel/panel-profile.c
--- gnome-panel-2.22.2/gnome-panel/panel-profile.c 2008-05-26 18:10:44.000000000 +0200
+++ gnome-panel-2.22.2-patched/gnome-panel/panel-profile.c 2008-07-22 22:29:06.000000000 +0200
@@ -551,6 +551,19 @@
gconf_client_unset (client, key, NULL);
}
+void
+panel_profile_set_toplevel_disable_movement (PanelToplevel *toplevel,
+ gboolean disable_movement)
+{
+ GConfClient *client;
+ const char *key;
+
+ client = panel_gconf_get_client ();
+ key = panel_profile_get_toplevel_key (toplevel, "disable_movement");
+
+ gconf_client_set_bool (client, key, disable_movement, NULL);
+}
+
char *
panel_profile_get_toplevel_name (PanelToplevel *toplevel)
{
@@ -568,6 +581,19 @@
TOPLEVEL_IS_WRITABLE_FUNC ("name", toplevel, name)
+gboolean
+panel_profile_get_toplevel_disable_movement (PanelToplevel *toplevel)
+{
+
+ GConfClient *client;
+ const char *key;
+ gboolean disable_movement;
+ client = panel_gconf_get_client ();
+
+ key = panel_profile_get_toplevel_key (toplevel, "disable_movement");
+ disable_movement = gconf_client_get_bool (client, key, NULL);
+ return disable_movement;
+}
void
panel_profile_set_toplevel_orientation (PanelToplevel *toplevel,
PanelOrientation orientation)
diff -ruN gnome-panel-2.22.2/gnome-panel/panel-profile.h gnome-panel-2.22.2-patched/gnome-panel/panel-profile.h
--- gnome-panel-2.22.2/gnome-panel/panel-profile.h 2008-05-26 18:10:44.000000000 +0200
+++ gnome-panel-2.22.2-patched/gnome-panel/panel-profile.h 2008-07-22 22:29:06.000000000 +0200
@@ -83,6 +83,9 @@
panel_profile_get_toplevel_orientation (PanelToplevel *toplevel);
gboolean panel_profile_is_writable_toplevel_orientation (PanelToplevel *toplevel);
+gboolean panel_profile_get_toplevel_disable_movement (PanelToplevel *toplevel);
+void panel_profile_set_toplevel_disable_movement (PanelToplevel *toplevel, gboolean disable_movement);
+
void panel_profile_set_toplevel_size (PanelToplevel *toplevel,
int size);
int panel_profile_get_toplevel_size (PanelToplevel *toplevel);
diff -ruN gnome-panel-2.22.2/gnome-panel/panel-properties-dialog.c gnome-panel-2.22.2-patched/gnome-panel/panel-properties-dialog.c
--- gnome-panel-2.22.2/gnome-panel/panel-properties-dialog.c 2008-05-26 18:10:44.000000000 +0200
+++ gnome-panel-2.22.2-patched/gnome-panel/panel-properties-dialog.c 2008-07-22 22:29:06.000000000 +0200
@@ -74,6 +74,7 @@
guint toplevel_notify;
guint background_notify;
+ guint disable_movement_notify;
/* The theme directory of the icon, see bug #119209 */
char *icon_theme_dir;
@@ -99,6 +100,10 @@
gconf_client_notify_remove (client, dialog->background_notify);
dialog->background_notify = 0;
+ if (dialog->disable_movement_notify)
+ gconf_client_notify_remove (client, dialog->disable_movement_notify);
+ dialog->disable_movement_notify = 0;
+
if (dialog->properties_dialog)
gtk_widget_destroy (dialog->properties_dialog);
dialog->properties_dialog = NULL;
@@ -150,6 +155,24 @@
}
static void
+panel_properties_dialog_disable_movement_notify (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ PanelPropertiesDialog *dialog)
+{
+ gboolean panel_locked = panel_profile_get_toplevel_disable_movement (dialog->toplevel);
+
+ gtk_widget_set_sensitive (dialog->orientation_combo, !panel_locked);
+ gtk_widget_set_sensitive (dialog->orientation_label, !panel_locked);
+
+ if (panel_locked)
+ gtk_widget_show (dialog->writability_warn_general);
+ else
+ gtk_widget_hide (dialog->writability_warn_general);
+
+}
+
+static void
panel_properties_dialog_setup_orientation_combo (PanelPropertiesDialog *dialog,
GladeXML *gui)
{
@@ -194,7 +217,7 @@
G_CALLBACK (panel_properties_dialog_orientation_changed),
dialog);
- if (! panel_profile_is_writable_toplevel_orientation (dialog->toplevel)) {
+ if (! panel_profile_is_writable_toplevel_orientation (dialog->toplevel) || panel_profile_get_toplevel_disable_movement (dialog->toplevel)) {
gtk_widget_set_sensitive (dialog->orientation_combo, FALSE);
gtk_widget_set_sensitive (dialog->orientation_label, FALSE);
gtk_widget_show (dialog->writability_warn_general);
@@ -988,6 +1011,13 @@
panel_properties_dialog_setup_hidebuttons_toggle (dialog, gui);
panel_properties_dialog_setup_arrows_toggle (dialog, gui);
+ dialog->disable_movement_notify =
+ panel_profile_toplevel_notify_add (
+ dialog->toplevel,
+ "disable_movement",
+ (GConfClientNotifyFunc) panel_properties_dialog_disable_movement_notify,
+ dialog);
+
panel_properties_update_arrows_toggle_visible (
dialog, GTK_TOGGLE_BUTTON (dialog->hidebuttons_toggle));
g_signal_connect_swapped (dialog->hidebuttons_toggle, "toggled",
diff -ruN gnome-panel-2.22.2/gnome-panel/panel-toplevel.c gnome-panel-2.22.2-patched/gnome-panel/panel-toplevel.c
--- gnome-panel-2.22.2/gnome-panel/panel-toplevel.c 2008-05-26 18:10:44.000000000 +0200
+++ gnome-panel-2.22.2-patched/gnome-panel/panel-toplevel.c 2008-07-22 22:29:06.000000000 +0200
@@ -438,7 +438,8 @@
toplevel->priv->grab_op != PANEL_GRAB_OP_NONE)
return;
- if (panel_lockdown_get_locked_down ())
+ if (panel_lockdown_get_locked_down ()||
+ panel_profile_get_toplevel_disable_movement (toplevel))
return;
/* If any of the position/orientation are not writable,
diff -ruN gnome-panel-2.22.2/gnome-panel/panel-toplevel.schemas.in gnome-panel-2.22.2-patched/gnome-panel/panel-toplevel.schemas.in
--- gnome-panel-2.22.2/gnome-panel/panel-toplevel.schemas.in 2008-05-26 18:10:44.000000000 +0200
+++ gnome-panel-2.22.2-patched/gnome-panel/panel-toplevel.schemas.in 2008-07-22 22:29:06.000000000 +0200
@@ -47,6 +47,19 @@
+
+
+ /schemas/apps/panel/toplevels/disable_movement
+ panel
+ bool
+ false
+
+ Lock the panel position
+ Disable support for moving a panel with a mouse drag. It has
+ been know to cause problems for users that accidentally move or resize
+ their panels.
+
+
/schemas/apps/panel/toplevels/expand