diff options
author | Colomban Wendling <[email protected]> | 2021-03-23 17:47:32 +0100 |
---|---|---|
committer | raveit65 <[email protected]> | 2022-07-21 19:33:51 +0200 |
commit | cae1e23b3d9800b78c14300914dc11730c2cf6b6 (patch) | |
tree | 27b48705e63532bc20e149ca23c83169c8c98c09 /libcaja-private | |
parent | 70e891c66cede8fef74004b6c5740466e4d90eb4 (diff) | |
download | caja-cae1e23b3d9800b78c14300914dc11730c2cf6b6.tar.bz2 caja-cae1e23b3d9800b78c14300914dc11730c2cf6b6.tar.xz |
icon view: Add a directory setting to block moving icons
This is mostly useful on the desktop (which is the main user of the
free-placement icon view) to be able to lock the layout and avoid
unintentionally moving icons around. Especially useful for less
computer-literate users.
Diffstat (limited to 'libcaja-private')
-rw-r--r-- | libcaja-private/caja-icon-container.c | 17 | ||||
-rw-r--r-- | libcaja-private/caja-icon-container.h | 3 | ||||
-rw-r--r-- | libcaja-private/caja-icon-private.h | 3 | ||||
-rw-r--r-- | libcaja-private/caja-metadata.c | 1 | ||||
-rw-r--r-- | libcaja-private/caja-metadata.h | 1 |
5 files changed, 24 insertions, 1 deletions
diff --git a/libcaja-private/caja-icon-container.c b/libcaja-private/caja-icon-container.c index 31a326af..a8d9b603 100644 --- a/libcaja-private/caja-icon-container.c +++ b/libcaja-private/caja-icon-container.c @@ -2610,7 +2610,7 @@ caja_icon_container_move_icon (CajaIconContainer *container, } } - if (!details->auto_layout) + if (!details->auto_layout && !details->lock_icons_position) { if (details->keep_aligned && snap) { @@ -8688,6 +8688,12 @@ caja_icon_container_is_keep_aligned (CajaIconContainer *container) return container->details->keep_aligned; } +gboolean +caja_icon_container_is_lock_icons_position (CajaIconContainer *container) +{ + return container->details->lock_icons_position; +} + static gboolean align_icons_callback (gpointer callback_data) { @@ -8741,6 +8747,15 @@ caja_icon_container_set_keep_aligned (CajaIconContainer *container, } void +caja_icon_container_set_lock_icons_position (CajaIconContainer *container, + gboolean lock_icons_position) +{ + g_return_if_fail (CAJA_IS_ICON_CONTAINER (container)); + + container->details->lock_icons_position = lock_icons_position; +} + +void caja_icon_container_set_layout_mode (CajaIconContainer *container, CajaIconLayoutMode mode) { diff --git a/libcaja-private/caja-icon-container.h b/libcaja-private/caja-icon-container.h index 2bc03818..0280e848 100644 --- a/libcaja-private/caja-icon-container.h +++ b/libcaja-private/caja-icon-container.h @@ -281,6 +281,9 @@ void caja_icon_container_set_tighter_layout (CajaIconCon gboolean caja_icon_container_is_keep_aligned (CajaIconContainer *container); void caja_icon_container_set_keep_aligned (CajaIconContainer *container, gboolean keep_aligned); +gboolean caja_icon_container_is_lock_icons_position (CajaIconContainer *container); +void caja_icon_container_set_lock_icons_position (CajaIconContainer *container, + gboolean lock_icons_position); void caja_icon_container_set_layout_mode (CajaIconContainer *container, CajaIconLayoutMode mode); void caja_icon_container_set_label_position (CajaIconContainer *container, diff --git a/libcaja-private/caja-icon-private.h b/libcaja-private/caja-icon-private.h index 6d1657d5..80d53234 100644 --- a/libcaja-private/caja-icon-private.h +++ b/libcaja-private/caja-icon-private.h @@ -238,6 +238,9 @@ struct CajaIconContainerDetails /* Should the container keep icons aligned to a grid */ gboolean keep_aligned; + /* Should the container not allow manual icon position */ + gboolean lock_icons_position; + /* Set to TRUE after first allocation has been done */ gboolean has_been_allocated; diff --git a/libcaja-private/caja-metadata.c b/libcaja-private/caja-metadata.c index da831f8b..c7c62e86 100644 --- a/libcaja-private/caja-metadata.c +++ b/libcaja-private/caja-metadata.c @@ -35,6 +35,7 @@ static char *used_metadata_names[] = CAJA_METADATA_KEY_ICON_VIEW_SORT_BY, CAJA_METADATA_KEY_ICON_VIEW_SORT_REVERSED, CAJA_METADATA_KEY_ICON_VIEW_KEEP_ALIGNED, + CAJA_METADATA_KEY_ICON_VIEW_LOCK_ICONS_POSITION, CAJA_METADATA_KEY_ICON_VIEW_LAYOUT_TIMESTAMP, CAJA_METADATA_KEY_LIST_VIEW_ZOOM_LEVEL, CAJA_METADATA_KEY_LIST_VIEW_SORT_COLUMN, diff --git a/libcaja-private/caja-metadata.h b/libcaja-private/caja-metadata.h index 34ac7ac7..e953b78e 100644 --- a/libcaja-private/caja-metadata.h +++ b/libcaja-private/caja-metadata.h @@ -45,6 +45,7 @@ #define CAJA_METADATA_KEY_ICON_VIEW_SORT_BY "caja-icon-view-sort-by" #define CAJA_METADATA_KEY_ICON_VIEW_SORT_REVERSED "caja-icon-view-sort-reversed" #define CAJA_METADATA_KEY_ICON_VIEW_KEEP_ALIGNED "caja-icon-view-keep-aligned" +#define CAJA_METADATA_KEY_ICON_VIEW_LOCK_ICONS_POSITION "caja-icon-view-lock-icons-position" #define CAJA_METADATA_KEY_ICON_VIEW_LAYOUT_TIMESTAMP "caja-icon-view-layout-timestamp" #define CAJA_METADATA_KEY_LIST_VIEW_ZOOM_LEVEL "caja-list-view-zoom-level" |