Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.1:Update
gnome-panel
gnome-panel-disable-movement.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gnome-panel-disable-movement.patch of Package gnome-panel
Index: gnome-panel-2.24.1/gnome-panel/panel-context-menu.c =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-context-menu.c +++ gnome-panel-2.24.1/gnome-panel/panel-context-menu.c @@ -161,6 +161,31 @@ panel_context_menu_create_new_panel (Gtk } static void +panel_context_menu_enable_disable_move (GtkWidget *menuitem, + PanelToplevel *toplevel, + gboolean read_only) +{ + gboolean disable_movement; + + disable_movement = panel_profile_get_toplevel_disable_movement (toplevel); + if (!read_only) { + disable_movement = !disable_movement; + panel_profile_set_toplevel_disable_movement (toplevel, + disable_movement); + } + + gtk_label_set_label (GTK_LABEL (GTK_BIN (menuitem)->child), + disable_movement ? _("A_llow Panel to be Moved") : _("_Lock Panel Position")); +} + +static void +panel_context_menu_enable_disable_move_cb (GtkWidget *menuitem, + PanelToplevel *toplevel) +{ + panel_context_menu_enable_disable_move (menuitem, toplevel, FALSE); +} + +static void panel_context_menu_delete_panel (PanelToplevel *toplevel) { if (panel_toplevel_is_last_unattached (toplevel)) { @@ -198,6 +223,7 @@ static void panel_context_menu_build_edition (PanelWidget *panel_widget, GtkWidget *menu) { + gboolean disable_movement; GtkWidget *menuitem; GtkWidget *image; @@ -237,6 +263,19 @@ panel_context_menu_build_edition (PanelW add_menu_separator (menu); + /* not translatable since it will change */ + menuitem = gtk_image_menu_item_new_with_mnemonic ("Allow Panel to be Moved"); + image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_AUTHENTICATION, + GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image); + gtk_widget_show (menuitem); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); + g_signal_connect (menuitem, "activate", + G_CALLBACK (panel_context_menu_enable_disable_move), + panel_widget->toplevel); + panel_context_menu_enable_disable_move (menuitem, + panel_widget->toplevel, TRUE); + menuitem = gtk_image_menu_item_new_with_mnemonic (_("_New Panel")); image = gtk_image_new_from_stock (GTK_STOCK_NEW, GTK_ICON_SIZE_MENU); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image); Index: gnome-panel-2.24.1/gnome-panel/panel-default-setup.entries =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-default-setup.entries +++ gnome-panel-2.24.1/gnome-panel/panel-default-setup.entries @@ -81,6 +81,13 @@ </value> </entry> <entry> + <key>toplevels/top_panel/disable_movement</key> + <schema_key>/schemas/apps/panel/toplevels/disable_movement</schema_key> + <value> + <bool>false</bool> + </value> + </entry> + <entry> <key>toplevels/top_panel/orientation</key> <schema_key>/schemas/apps/panel/toplevels/orientation</schema_key> <value> @@ -129,6 +136,13 @@ </value> </entry> <entry> + <key>toplevels/bottom_panel/disable_movement</key> + <schema_key>/schemas/apps/panel/toplevels/disable_movement</schema_key> + <value> + <bool>false</bool> + </value> + </entry> + <entry> <key>toplevels/bottom_panel/orientation</key> <schema_key>/schemas/apps/panel/toplevels/orientation</schema_key> <value> Index: gnome-panel-2.24.1/gnome-panel/panel-global.schemas.in =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-global.schemas.in +++ gnome-panel-2.24.1/gnome-panel/panel-global.schemas.in @@ -33,6 +33,18 @@ Panel Global Config Schema File - work </schema> <schema> + <key>/schemas/apps/panel/global/disable_movement</key> + <applyto>/apps/panel/global/disable_movement</applyto> + <owner>panel</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Lock Panel Position</short> + <long>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.</long> + </locale> + </schema> + <schema> <key>/schemas/apps/panel/global/enable_animations</key> <applyto>/apps/panel/global/enable_animations</applyto> <owner>panel</owner> Index: gnome-panel-2.24.1/gnome-panel/panel-profile.c =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-profile.c +++ gnome-panel-2.24.1/gnome-panel/panel-profile.c @@ -551,6 +551,19 @@ panel_profile_set_toplevel_name (PanelTo 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 @@ panel_profile_get_toplevel_name (PanelTo 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) Index: gnome-panel-2.24.1/gnome-panel/panel-profile.h =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-profile.h +++ gnome-panel-2.24.1/gnome-panel/panel-profile.h @@ -83,6 +83,9 @@ PanelOrientation 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); Index: gnome-panel-2.24.1/gnome-panel/panel-properties-dialog.c =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-properties-dialog.c +++ gnome-panel-2.24.1/gnome-panel/panel-properties-dialog.c @@ -77,6 +77,7 @@ typedef struct { guint toplevel_notify; guint background_notify; + guint disable_movement_notify; /* The theme directory of the icon, see bug #119209 */ char *icon_theme_dir; @@ -102,6 +103,10 @@ panel_properties_dialog_free (PanelPrope 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; @@ -153,6 +158,24 @@ panel_properties_dialog_orientation_chan } 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) { @@ -197,7 +220,7 @@ panel_properties_dialog_setup_orientatio 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); @@ -992,6 +1015,13 @@ panel_properties_dialog_new (PanelToplev 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", Index: gnome-panel-2.24.1/gnome-panel/panel-toplevel.c =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-toplevel.c +++ gnome-panel-2.24.1/gnome-panel/panel-toplevel.c @@ -438,7 +438,8 @@ panel_toplevel_begin_grab_op (PanelTople 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, Index: gnome-panel-2.24.1/gnome-panel/panel-toplevel.schemas.in =================================================================== --- gnome-panel-2.24.1.orig/gnome-panel/panel-toplevel.schemas.in +++ gnome-panel-2.24.1/gnome-panel/panel-toplevel.schemas.in @@ -47,6 +47,19 @@ </long> </locale> </schema> + + <schema> + <key>/schemas/apps/panel/toplevels/disable_movement</key> + <owner>panel</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Lock the panel position</short> + <long>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.</long> + </locale> + </schema> <schema> <key>/schemas/apps/panel/toplevels/expand</key>
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor