From owner-freebsd-ports@FreeBSD.ORG Fri Aug 22 03:20:33 2014 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 898314E1 for ; Fri, 22 Aug 2014 03:20:33 +0000 (UTC) Received: from ttmath.org (ttmath.org [91.203.132.242]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 29D0A3BD0 for ; Fri, 22 Aug 2014 03:20:32 +0000 (UTC) Received: from s100.ttmath.org (dynamic-78-8-137-85.ssp.dialog.net.pl [78.8.137.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ttmath.org (Postfix) with ESMTPSA id 6BF2C16C0206 for ; Fri, 22 Aug 2014 05:07:26 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ttmath.org; s=ttmath; t=1408680446; bh=XVwLp9c2SJtm+W3TbVrziuRIq3Pv8877g6SHKoTKKQc=; h=Date:From:To:Subject:From; b=suN3vWgxMcQ56XGOtQ6A/I925DNGgAuQwE6EiEBe+3Fd7CPxZwjVG69xADBkJ88Dp f/we4mlbUXGn8YajPZu+MWYpljHrHagkjF+x1jGLjl6a5AaIe6kk4q5Vf+tNolwcjL 62hX9tkbqml8fZ6Y6j7gF8yeFc+CoT6nN68P9osjRpDhgszDbyEquva34foS+K8Zm8 UM9v8CX0RIo9GvRcX8ebTiof3sWqRQw0S4OlX6tOro1GfMfXIQoULnzBXyOFrlf5yh /eCRs1AYlBc4avta9MiT8MrBHdvbo4KiYhMADWKEiAMsIcKGJqcURGJTI7xKYZNPjP K/GWrjXckhagg== Message-ID: <53F6B65E.4050900@ttmath.org> Date: Fri, 22 Aug 2014 05:17:50 +0200 From: Tomasz Sowa User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: FreeBSD Ports ML Subject: [PATCH] x11-fm/mate-file-manager and x11-fm/caja Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Aug 2014 03:20:33 -0000 Hi There is a problem in caja with default manual sort order option, I have mentioned it here: http://forums.mate-desktop.org/viewtopic.php?f=2&t=3093 Applying: # cd /usr/ports/x11-fm/caja/files # fetch http://tmp.ttmath.org/patch-src_file-manager_fm-icon-view.c # cd .. # make all reinstall clean The same patch can be applied to caja 1.6 (x11-fm/mate-file-manager) -- Tomasz Sowa --- src/file-manager/fm-icon-view.c.orig 2014-08-22 04:45:24.000000000 +0200 +++ src/file-manager/fm-icon-view.c 2014-08-22 04:43:44.000000000 +0200 @@ -865,6 +865,22 @@ { const SortCriterion *default_sort_criterion; default_sort_criterion = get_sort_criterion_by_sort_type (get_default_sort_order (file, NULL)); + + if( default_sort_criterion == NULL ) + { + /* + * default_sort_criterion will be NULL if default sort order is set to: + * 'directory' or 'atime' + * get_sort_criterion_by_sort_type() enumerates through 'sort_criteria' table + * but this table doesn't have 'directory' and 'atime' items + * + * may 'sort_criteria' table should have those two items too? + * + * temporarily changing it to 'sort by display name' + */ + default_sort_criterion = &sort_criteria[0]; + } + g_return_val_if_fail (default_sort_criterion != NULL, NULL); return caja_file_get_metadata @@ -994,6 +1010,35 @@ keep_aligned); } + +/* maintainence of auto layout boolean + * it will be changed in default_sort_order_changed_callback() + */ +static gboolean default_directory_manual_layout = FALSE; + +static gboolean +get_default_directory_manual_layout (void) +{ + static gboolean auto_storaged_added = FALSE; + + if (auto_storaged_added == FALSE) + { + auto_storaged_added = TRUE; + int default_sort_order_enum = 0; + + /* only read the value here, it will be changed in + * default_sort_order_changed_callback() callback in the future + */ + default_sort_order_enum = g_settings_get_enum(caja_preferences, + CAJA_PREFERENCES_DEFAULT_SORT_ORDER); + + default_directory_manual_layout = (default_sort_order_enum == 0); + } + + return default_directory_manual_layout; +} + + static gboolean fm_icon_view_get_directory_auto_layout (FMIconView *icon_view, CajaFile *file) @@ -1017,10 +1062,8 @@ fm_icon_view_real_get_directory_auto_layout (FMIconView *icon_view, CajaFile *file) { - - return caja_file_get_boolean_metadata - (file, CAJA_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT, TRUE); + (file, CAJA_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT, !get_default_directory_manual_layout ()); } static void @@ -1050,7 +1093,7 @@ caja_file_set_boolean_metadata (file, CAJA_METADATA_KEY_ICON_VIEW_AUTO_LAYOUT, - TRUE, + !get_default_directory_manual_layout (), auto_layout); } /* maintainence of tighter layout boolean */ @@ -1950,6 +1993,15 @@ caja_icon_container_sort (icon_container); + /* Switch to manual layout of the default calls for it. + * This needs to happen last for the sort order menus + * to be in sync. + */ + if (get_default_directory_manual_layout ()) + { + switch_to_manual_layout (icon_view); + } + update_layout_menus (icon_view); fm_icon_view_restore_default_zoom_level (view); @@ -2722,19 +2774,42 @@ CajaFile *file; char *sort_name; CajaIconContainer *icon_container; + int default_sort_order_local; g_return_if_fail (FM_IS_ICON_VIEW (callback_data)); icon_view = FM_ICON_VIEW (callback_data); - file = fm_directory_view_get_directory_as_file (FM_DIRECTORY_VIEW (icon_view)); - sort_name = fm_icon_view_get_directory_sort_by (icon_view, file); - set_sort_criterion (icon_view, get_sort_criterion_by_metadata_text (sort_name)); - g_free (sort_name); - icon_container = get_icon_container (icon_view); g_return_if_fail (CAJA_IS_ICON_CONTAINER (icon_container)); + default_sort_order_local = g_settings_get_enum (caja_preferences, + CAJA_PREFERENCES_DEFAULT_SORT_ORDER); + + default_sort_order = (CajaFileSortType)default_sort_order_local; + + if( default_sort_order == 0 ) + { + /* default sort order is set as 'manually' */ + default_directory_manual_layout = TRUE; + + caja_icon_container_set_auto_layout ( + icon_container, + fm_icon_view_get_directory_auto_layout(icon_view, file) ); + } + else + { + default_directory_manual_layout = FALSE; + + caja_icon_container_set_auto_layout ( + icon_container, + fm_icon_view_get_directory_auto_layout(icon_view, file) ); + + sort_name = fm_icon_view_get_directory_sort_by (icon_view, file); + set_sort_criterion (icon_view, get_sort_criterion_by_metadata_text (sort_name)); + g_free (sort_name); + } + caja_icon_container_request_update_all (icon_container); }