diff options
-rw-r--r-- | src/nautilus-file.c | 30 | ||||
-rw-r--r-- | src/nautilus-file.h | 2 | ||||
-rw-r--r-- | src/nautilus-properties-window.c | 36 | ||||
-rw-r--r-- | src/resources/ui/nautilus-properties-window.ui | 18 |
4 files changed, 79 insertions, 7 deletions
diff --git a/src/nautilus-file.c b/src/nautilus-file.c index 068b219c0..cbab57a8e 100644 --- a/src/nautilus-file.c +++ b/src/nautilus-file.c @@ -6258,6 +6258,21 @@ nautilus_file_can_get_owner (NautilusFile *file) } /** + * nautilus_file_get_uid: + * + * Get the user id of the file's owner. + * + * @file: The file in question. + * + * Return value: (transfer none): the user id. + */ +const uid_t +nautilus_file_get_uid (NautilusFile *file) +{ + return file->details->uid; +} + +/** * nautilus_file_get_owner_name: * * Get the user name of the file's owner. If the owner has no @@ -6449,6 +6464,21 @@ nautilus_file_can_get_group (NautilusFile *file) } /** + * nautilus_file_get_gid: + * + * Get the group id of the file's group. + * + * @file: The file in question. + * + * Return value: (transfer none): the group id. + */ +const gid_t +nautilus_file_get_gid (NautilusFile *file) +{ + return file->details->gid; +} + +/** * nautilus_file_get_group_name: * * Get the name of the file's group. If the group has no diff --git a/src/nautilus-file.h b/src/nautilus-file.h index 02cda5535..1cd331777 100644 --- a/src/nautilus-file.h +++ b/src/nautilus-file.h @@ -268,7 +268,9 @@ gboolean nautilus_file_can_get_owner (Nautilu gboolean nautilus_file_can_set_owner (NautilusFile *file); gboolean nautilus_file_can_get_group (NautilusFile *file); gboolean nautilus_file_can_set_group (NautilusFile *file); +uid_t nautilus_file_get_uid (NautilusFile *file); char * nautilus_file_get_owner_name (NautilusFile *file); +gid_t nautilus_file_get_gid (NautilusFile *file); char * nautilus_file_get_group_name (NautilusFile *file); GList * nautilus_get_user_names (void); GList * nautilus_get_all_group_names (void); diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c index f9790d403..502ccd655 100644 --- a/src/nautilus-properties-window.c +++ b/src/nautilus-properties-window.c @@ -126,6 +126,7 @@ struct _NautilusPropertiesWindow GtkWidget *accessed_value_label; GtkWidget *permissions_navigation_row; + GtkWidget *permissions_value_label; GtkListBox *extension_list_box; @@ -1184,6 +1185,39 @@ get_target_permissions (NautilusPropertiesWindow *self) } static void +update_permissions_navigation_row (NautilusPropertiesWindow *self, + TargetPermissions *target_perm) +{ + if (!target_perm->is_multi_file_window) + { + uid_t user_id = geteuid (); + gid_t group_id = getegid (); + PermissionType permission_type = PERMISSION_OTHER; + const gchar *text; + + if (user_id == nautilus_file_get_uid (get_original_file (self))) + { + permission_type = PERMISSION_USER; + } + else if (group_id == nautilus_file_get_gid (get_original_file (self))) + { + permission_type = PERMISSION_GROUP; + } + + if (nautilus_file_is_directory (get_original_file (self))) + { + text = permission_value_to_string (target_perm->folder_permissions[permission_type], TRUE); + } + else + { + text = permission_value_to_string (target_perm->file_permissions[permission_type], FALSE); + } + + gtk_label_set_text (GTK_LABEL (self->permissions_value_label), text); + } +} + +static void properties_window_update (NautilusPropertiesWindow *self, GList *files) { @@ -1238,6 +1272,7 @@ properties_window_update (NautilusPropertiesWindow *self, { g_autofree TargetPermissions *target_perm = get_target_permissions (self); + update_permissions_navigation_row (self, target_perm); update_owner_row (self->owner_row, target_perm); update_group_row (self->group_row, target_perm); update_execution_row (GTK_WIDGET (self->execution_row), target_perm); @@ -4270,6 +4305,7 @@ nautilus_properties_window_class_init (NautilusPropertiesWindowClass *klass) gtk_widget_class_bind_template_child (widget_class, NautilusPropertiesWindow, accessed_row); gtk_widget_class_bind_template_child (widget_class, NautilusPropertiesWindow, accessed_value_label); gtk_widget_class_bind_template_child (widget_class, NautilusPropertiesWindow, permissions_navigation_row); + gtk_widget_class_bind_template_child (widget_class, NautilusPropertiesWindow, permissions_value_label); gtk_widget_class_bind_template_child (widget_class, NautilusPropertiesWindow, extension_list_box); gtk_widget_class_bind_template_child (widget_class, NautilusPropertiesWindow, free_space_value_label); gtk_widget_class_bind_template_child (widget_class, NautilusPropertiesWindow, permissions_stack); diff --git a/src/resources/ui/nautilus-properties-window.ui b/src/resources/ui/nautilus-properties-window.ui index 1e4a08154..d62941335 100644 --- a/src/resources/ui/nautilus-properties-window.ui +++ b/src/resources/ui/nautilus-properties-window.ui @@ -609,16 +609,20 @@ <object class="AdwActionRow" id="permissions_navigation_row"> <property name="activatable">True</property> <property name="selectable">False</property> - <property name="title" translatable="yes">Set Custom _Permissions</property> + <property name="title" translatable="yes">_Permissions</property> <property name="use-underline">True</property> <signal name="activated" handler="navigate_permissions_page" object="NautilusPropertiesWindow" swapped="yes"/> <child> - <object class="GtkBox" id="permissions_navigation_action_box"> - <child> - <object class="GtkImage"> - <property name="icon-name">go-next-symbolic</property> - </object> - </child> + <object class="GtkLabel" id="permissions_value_label"> + <property name="ellipsize">end</property> + <style> + <class name="dim-label"/> + </style> + </object> + </child> + <child> + <object class="GtkImage"> + <property name="icon-name">go-next-symbolic</property> </object> </child> </object> |