From 23b8c687d9c1de82297556d7a82f81555fe9f6a7 Mon Sep 17 00:00:00 2001 From: Matteo Bernardini Date: Tue, 18 Dec 2012 21:08:08 -0500 Subject: libraries/libfm: Apply patches from upstream. Signed-off-by: dsomero --- libraries/libfm/libfm.SlackBuild | 10 +- ...3583229-Fix-for-broken-DnD-in-ExoTreeView.patch | 26 ++++ ...no-region-is-selected-in-editable-then-ap.patch | 33 +++++ ...-for-rarely-broken-DnD-due-to-FmDndDest-s.patch | 139 +++++++++++++++++++++ ...-for-SIGSEGV-in-fm_path_new_child-with-pa.patch | 86 +++++++++++++ ...005-3582493-Fixing-test-fm-path-two-tests.patch | 39 ++++++ ...-build-wasn-t-updated-for-with-gtk-3-case.patch | 26 ++++ ...3-css-strings-have-significantly-differen.patch | 44 +++++++ ...78-Comparison-is-wrong-bug-6421-in-libexo.patch | 26 ++++ ...-for-possible-SIGSEGV-in-src-base-fm-path.patch | 34 +++++ ...shouldn-t-disable-DnD-on-non-native-targe.patch | 37 ++++++ ...ed-locations-cannot-be-launched-from-fold.patch | 57 +++++++++ ...calizations-of-Detailed-List-View-headers.patch | 26 ++++ ...rl-A-should-select-all-depending-on-focus.patch | 36 ++++++ ...nput-for-file-name-in-properties-dialog-w.patch | 28 +++++ ...tips-for-file-name-and-location-in-file-p.patch | 39 ++++++ ...ner-group-should-be-properly-disabled-in-.patch | 34 +++++ ...d-name-cannot-be-copied-to-clipboard-make.patch | 29 +++++ ...ONFIG_DEFAULT_NO_USB_TRASH-to-more-expect.patch | 34 +++++ ...-for-dropping-files-onto-Trash-in-Places-.patch | 34 +++++ ...changing-the-folder-selection-isn-t-reset.patch | 31 +++++ ...x-over-previous-commit-it-leaded-to-crash.patch | 46 +++++++ ...lback-themed-icon-folder-video-to-folder-.patch | 50 ++++++++ 23 files changed, 942 insertions(+), 2 deletions(-) create mode 100644 libraries/libfm/patches/0001-3583229-Fix-for-broken-DnD-in-ExoTreeView.patch create mode 100644 libraries/libfm/patches/0002-3582816-If-no-region-is-selected-in-editable-then-ap.patch create mode 100644 libraries/libfm/patches/0003-3584608-Fix-for-rarely-broken-DnD-due-to-FmDndDest-s.patch create mode 100644 libraries/libfm/patches/0004-3582493-Fix-for-SIGSEGV-in-fm_path_new_child-with-pa.patch create mode 100644 libraries/libfm/patches/0005-3582493-Fixing-test-fm-path-two-tests.patch create mode 100644 libraries/libfm/patches/0006-3586178-doc-build-wasn-t-updated-for-with-gtk-3-case.patch create mode 100644 libraries/libfm/patches/0007-3586178-gtk3-css-strings-have-significantly-differen.patch create mode 100644 libraries/libfm/patches/0008-3586178-Comparison-is-wrong-bug-6421-in-libexo.patch create mode 100644 libraries/libfm/patches/0009-Another-fix-for-possible-SIGSEGV-in-src-base-fm-path.patch create mode 100644 libraries/libfm/patches/0010-3584798-We-shouldn-t-disable-DnD-on-non-native-targe.patch create mode 100644 libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch create mode 100644 libraries/libfm/patches/0012-Fix-for-localizations-of-Detailed-List-View-headers.patch create mode 100644 libraries/libfm/patches/0013-3587571-Ctrl-A-should-select-all-depending-on-focus.patch create mode 100644 libraries/libfm/patches/0014-Disabling-input-for-file-name-in-properties-dialog-w.patch create mode 100644 libraries/libfm/patches/0015-Adding-tooltips-for-file-name-and-location-in-file-p.patch create mode 100644 libraries/libfm/patches/0016-Fix-file-owner-group-should-be-properly-disabled-in-.patch create mode 100644 libraries/libfm/patches/0017-Fix-disabled-name-cannot-be-copied-to-clipboard-make.patch create mode 100644 libraries/libfm/patches/0018-Change-FM_CONFIG_DEFAULT_NO_USB_TRASH-to-more-expect.patch create mode 100644 libraries/libfm/patches/0019-3589259-Fix-for-dropping-files-onto-Trash-in-Places-.patch create mode 100644 libraries/libfm/patches/0020-Fix-after-changing-the-folder-selection-isn-t-reset.patch create mode 100644 libraries/libfm/patches/0021-Fix-over-previous-commit-it-leaded-to-crash.patch create mode 100644 libraries/libfm/patches/0022-3590304-Fallback-themed-icon-folder-video-to-folder-.patch (limited to 'libraries') diff --git a/libraries/libfm/libfm.SlackBuild b/libraries/libfm/libfm.SlackBuild index 66affb1bce..2f14c4d849 100644 --- a/libraries/libfm/libfm.SlackBuild +++ b/libraries/libfm/libfm.SlackBuild @@ -26,7 +26,7 @@ PRGNAM=libfm VERSION=${VERSION:-1.1.0} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then @@ -74,7 +74,10 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; -sh autogen.sh || true +# Apply patches from upstream +for i in $CWD/patches/* ; do patch -p1 < $i ; done + +autoreconf -fi CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ @@ -92,6 +95,9 @@ CXXFLAGS="$SLKCFLAGS" \ make make install-strip DESTDIR=$PKG +# Fix include folders +( cd $PKG/usr/include ; rm -fr libfm ; ln -s libfm-1.0 libfm ) + find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true diff --git a/libraries/libfm/patches/0001-3583229-Fix-for-broken-DnD-in-ExoTreeView.patch b/libraries/libfm/patches/0001-3583229-Fix-for-broken-DnD-in-ExoTreeView.patch new file mode 100644 index 0000000000..465fd8d0eb --- /dev/null +++ b/libraries/libfm/patches/0001-3583229-Fix-for-broken-DnD-in-ExoTreeView.patch @@ -0,0 +1,26 @@ +From 224d38249a449557714aedc2695d1a14279f5510 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Sun, 4 Nov 2012 20:28:21 +0200 +Subject: [PATCH 01/22] [#3583229]Fix for broken DnD in ExoTreeView. + +The commit 441db508ebf12b6cb1849ad1a244dcd668cccf82 added the call to +gtk_tree_view_set_reorderable() which happened to be incompatible with DnD. +--- + src/gtk/fm-standard-view.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/gtk/fm-standard-view.c b/src/gtk/fm-standard-view.c +index f0f791c..175cced 100644 +--- a/src/gtk/fm-standard-view.c ++++ b/src/gtk/fm-standard-view.c +@@ -687,7 +687,6 @@ static inline void create_list_view(FmStandardView* fv, GList* sels) + FM_FOLDER_MODEL_COL_NAME); + } + +- gtk_tree_view_set_reorderable(GTK_TREE_VIEW(fv->view), TRUE); + gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(fv->view), TRUE); + gtk_tree_view_set_rubber_banding(GTK_TREE_VIEW(fv->view), TRUE); + exo_tree_view_set_single_click((ExoTreeView*)fv->view, fm_config->single_click); +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0002-3582816-If-no-region-is-selected-in-editable-then-ap.patch b/libraries/libfm/patches/0002-3582816-If-no-region-is-selected-in-editable-then-ap.patch new file mode 100644 index 0000000000..ce7eb20b08 --- /dev/null +++ b/libraries/libfm/patches/0002-3582816-If-no-region-is-selected-in-editable-then-ap.patch @@ -0,0 +1,33 @@ +From 74901d717fefaf239bf7d8b6f5b14ea146170663 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Sat, 3 Nov 2012 16:05:31 +0200 +Subject: [PATCH 02/22] [#3582816]If no region is selected in editable then + apply 'Delete' to char next to cursor. + +--- + src/gtk/fm-folder-view.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/gtk/fm-folder-view.c b/src/gtk/fm-folder-view.c +index 153ed48..fe65e9f 100644 +--- a/src/gtk/fm-folder-view.c ++++ b/src/gtk/fm-folder-view.c +@@ -1001,7 +1001,15 @@ static void on_trash(GtkAction* act, FmFolderView* fv) + } + } + else if(GTK_IS_EDITABLE(focus)) /* fallback for editables */ ++ { ++ if(!gtk_editable_get_selection_bounds((GtkEditable*)focus, NULL, NULL)) ++ { ++ gint pos = gtk_editable_get_position((GtkEditable*)focus); ++ /* if no text selected then delete character next to cursor */ ++ gtk_editable_select_region((GtkEditable*)focus, pos, pos + 1); ++ } + gtk_editable_delete_selection((GtkEditable*)focus); ++ } + } + + static void on_rm(GtkAction* act, FmFolderView* fv) +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0003-3584608-Fix-for-rarely-broken-DnD-due-to-FmDndDest-s.patch b/libraries/libfm/patches/0003-3584608-Fix-for-rarely-broken-DnD-due-to-FmDndDest-s.patch new file mode 100644 index 0000000000..3837ed62a0 --- /dev/null +++ b/libraries/libfm/patches/0003-3584608-Fix-for-rarely-broken-DnD-due-to-FmDndDest-s.patch @@ -0,0 +1,139 @@ +From e098be34aa96bbcddb786a09b13da877d2d709ad Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Tue, 6 Nov 2012 05:49:19 +0200 +Subject: [PATCH 03/22] [#3584608]Fix for rarely broken DnD due to FmDndDest + source caching. + +The previous behavior was to cache data and reset cache when drag leaves +widget. This is completely wrong - we never get informed if we refuse drop +(for example, on wrong target) therefore drag source kept the same while +it was already changed. The only valid behavior is to keep drag context +referenced and compare it with one we get in handler and if it's changed +then reset our cache. This way we don't have to requery data again when +pointer leaves widget but still inside of application window - the drag +context is still the same, i.e. we get some optimization as a side effect. +--- + src/gtk/fm-dnd-dest.c | 44 ++++++++++++++------------------------------ + 1 file changed, 14 insertions(+), 30 deletions(-) + +diff --git a/src/gtk/fm-dnd-dest.c b/src/gtk/fm-dnd-dest.c +index 37686ce..21cf2c0 100644 +--- a/src/gtk/fm-dnd-dest.c ++++ b/src/gtk/fm-dnd-dest.c +@@ -108,10 +108,10 @@ struct _FmDndDest + + int info_type; /* type of src_files */ + FmPathList* src_files; ++ GdkDragContext* context; + guint32 src_dev; /* UNIX dev of source fs */ + const char* src_fs_id; /* filesystem id of source fs */ + FmFileInfo* dest_file; +- guint idle; /* idle handler */ + + gboolean waiting_data; + gboolean has_handlers; +@@ -211,11 +211,6 @@ static void fm_dnd_dest_dispose(GObject *object) + + fm_dnd_dest_set_widget(dd, NULL); + +- if(dd->idle) +- { +- g_source_remove(dd->idle); +- dd->idle = 0; +- } + clear_src_cache(dd); + + G_OBJECT_CLASS(fm_dnd_dest_parent_class)->dispose(object); +@@ -388,6 +383,11 @@ static gboolean fm_dnd_dest_files_dropped(FmDndDest* dd, int x, int y, + static void clear_src_cache(FmDndDest* dd) + { + /* free cached source files */ ++ if(dd->context) ++ { ++ g_object_unref(dd->context); ++ dd->context = NULL; ++ } + if(dd->src_files) + { + fm_path_list_unref(dd->src_files); +@@ -405,16 +405,6 @@ static void clear_src_cache(FmDndDest* dd) + dd->waiting_data = FALSE; + } + +-static gboolean clear_src_cache_on_idle(gpointer user_data) +-{ +- GDK_THREADS_ENTER(); +- /* check if dd is still valid */ +- if(!g_source_is_destroyed(g_main_current_source())) +- clear_src_cache((FmDndDest*)user_data); +- GDK_THREADS_LEAVE(); +- return FALSE; +-} +- + #if 0 + /* the returned list can be either FmPathList or FmFileInfoList */ + /* check with fm_list_is_path_list() and fm_list_is_file_info_list(). */ +@@ -581,6 +571,10 @@ gboolean _on_drag_data_received(FmDndDest* dd, GdkDragContext *drag_context, + dd->src_files = files; + dd->waiting_data = FALSE; + dd->info_type = info; ++ /* keep context to verify if it's changed */ ++ if(G_UNLIKELY(dd->context)) ++ g_object_unref(dd->context); ++ dd->context = g_object_ref(drag_context); + return (files != NULL); + } + +@@ -718,7 +712,7 @@ gboolean _on_drag_drop(FmDndDest* dd, GdkDragContext *drag_context, + } + + /* see if the dragged files are cached by "drag-motion" handler */ +- if(dd->src_files) ++ if(dd->src_files && drag_context == dd->context) + { + GdkDragAction action = gdk_drag_context_get_selected_action(drag_context); + /* emit files-dropped signal */ +@@ -777,14 +771,6 @@ GdkDragAction fm_dnd_dest_get_default_action(FmDndDest* dd, + /* query drag sources in any case */ + goto query_sources; + +- /* we may have another data already so clear the cache */ +- if(dd->idle) +- { +- g_source_remove(dd->idle); +- dd->idle = 0; +- clear_src_cache(dd); +- } +- + /* special support for dropping onto desktop entry */ + if(fm_file_info_is_desktop_entry(dest)) + { +@@ -802,8 +788,10 @@ GdkDragAction fm_dnd_dest_get_default_action(FmDndDest* dd, + if(target == dest_target_atom[FM_DND_DEST_TARGET_XDS]) + return GDK_ACTION_COPY; + +- if(!dd->src_files) /* we didn't have any data, cache it */ ++ /* we have no valid data, query it now */ ++ if(!dd->src_files || dd->context != drag_context) + { ++ clear_src_cache(dd); + query_sources: + action = 0; + if(!dd->waiting_data) /* we're still waiting for "drag-data-received" signal */ +@@ -886,13 +874,9 @@ query_sources: + */ + void fm_dnd_dest_drag_leave(FmDndDest* dd, GdkDragContext* drag_context, guint time) + { +- if(dd->idle == 0) +- dd->idle = g_idle_add_full(G_PRIORITY_LOW, clear_src_cache_on_idle, dd, NULL); + } + + static void on_drag_leave(GtkWidget *widget, GdkDragContext *drag_context, + guint time, FmDndDest* dd) + { +- if(dd->idle == 0) +- dd->idle = g_idle_add_full(G_PRIORITY_LOW, clear_src_cache_on_idle, dd, NULL); + } +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0004-3582493-Fix-for-SIGSEGV-in-fm_path_new_child-with-pa.patch b/libraries/libfm/patches/0004-3582493-Fix-for-SIGSEGV-in-fm_path_new_child-with-pa.patch new file mode 100644 index 0000000000..d765c0e997 --- /dev/null +++ b/libraries/libfm/patches/0004-3582493-Fix-for-SIGSEGV-in-fm_path_new_child-with-pa.patch @@ -0,0 +1,86 @@ +From 86717c497dcd07e4ba417a4236ee01bf3fb61594 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Mon, 12 Nov 2012 23:14:46 +0200 +Subject: [PATCH 04/22] [#3582493]Fix for SIGSEGV in fm_path_new_child() with + parent=NULL. + +--- + src/base/fm-path.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/src/base/fm-path.c b/src/base/fm-path.c +index 9cf3088..b90aeab 100644 +--- a/src/base/fm-path.c ++++ b/src/base/fm-path.c +@@ -238,8 +238,8 @@ static inline FmPath* _fm_path_reuse_existing_paths(FmPath* parent, const char* + + /** + * fm_path_new_child_len +- * @parent: a parent path +- * @basename: basename of a direct child of @parent directory ++ * @parent: (allow-none): a parent path ++ * @basename: (allow-none): basename of a direct child of @parent directory + * @name_len: length of @basename + * + * Creates new #FmPath for child of @parent directory which have name +@@ -346,8 +346,8 @@ FmPath* fm_path_new_child_len(FmPath* parent, const char* basename, int name_len + + /** + * fm_path_new_child +- * @parent: a parent path +- * @basename: basename of a direct child of @parent directory ++ * @parent: (allow-none): a parent path ++ * @basename: (allow-none): basename of a direct child of @parent directory + * + * Creates new #FmPath for child of @parent directory which have name + * @basename. @basename is in glib filename encoding (can be non-UTF-8) +@@ -362,7 +362,7 @@ FmPath* fm_path_new_child(FmPath* parent, const char* basename) + { + int baselen = strlen(basename); + return _fm_path_new_child_len(parent, basename, baselen, +- fm_path_is_native(parent)); ++ parent && fm_path_is_native(parent)); + } + return G_LIKELY(parent) ? fm_path_ref(parent) : NULL; + } +@@ -396,8 +396,8 @@ FmPath* fm_path_new_for_gfile(GFile* gf) + + /** + * fm_path_new_relative +- * @parent: a parent path +- * @rel: a path relative to @parent ++ * @parent: (allow-none): a parent path ++ * @rel: (allow-none): a path relative to @parent + * + * Creates new #FmPath which is relative to @parent directory by the + * relative path string @rel. @rel is in glib filename encoding (can be +@@ -458,7 +458,7 @@ FmPath* fm_path_new_relative(FmPath* parent, const char* rel) + + /** + * fm_path_new_for_path +- * @path_name: a POSIX path. ++ * @path_name: (allow-none): a POSIX path. + * + * Returns: a newly created FmPath for the path. You have to call + * fm_path_unref() when it's no longer needed. +@@ -484,7 +484,7 @@ FmPath* fm_path_new_for_path(const char* path_name) + + /** + * fm_path_new_for_uri +- * @uri: a URI with special characters escaped. ++ * @uri: (allow-none): a URI with special characters escaped. + * + * Creates new #FmPath by given @uri. You have to call + * fm_path_unref() when it's no longer needed. +@@ -564,7 +564,7 @@ FmPath* fm_path_new_for_display_name(const char* path_name) + + /** + * fm_path_new_for_str +- * @path_str: a string representing the file path in its native ++ * @path_str: (allow-none): a string representing the file path in its native + * encoding (can be non-UTF-8). It can either be a native path or an + * unescaped URI (can contain non-ASCII characters and spaces). + * The function will try to figure out what to do. +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0005-3582493-Fixing-test-fm-path-two-tests.patch b/libraries/libfm/patches/0005-3582493-Fixing-test-fm-path-two-tests.patch new file mode 100644 index 0000000000..1da69db274 --- /dev/null +++ b/libraries/libfm/patches/0005-3582493-Fixing-test-fm-path-two-tests.patch @@ -0,0 +1,39 @@ +From ea6d673d84b447b81b54c2cb825bdf8284952aea Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Mon, 12 Nov 2012 23:25:39 +0200 +Subject: [PATCH 05/22] [#3582493]Fixing test-fm-path two tests. + +--- + src/tests/test-fm-path.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/tests/test-fm-path.c b/src/tests/test-fm-path.c +index a4a3a6c..72c340f 100644 +--- a/src/tests/test-fm-path.c ++++ b/src/tests/test-fm-path.c +@@ -71,8 +71,9 @@ static void test_uri_parsing() + TEST_PARSING(fm_path_new_for_uri, "file:/test/path", + "/", "test", "path"); + ++ /* The 'test' in this format is a host part of URI */ + TEST_PARSING(fm_path_new_for_uri, "file://test/path", +- "/", "test", "path"); ++ "/", "path"); + + TEST_PARSING(fm_path_new_for_uri, "http://test/path/", + "http://test/", "path"); +@@ -87,7 +88,11 @@ static void test_uri_parsing() + "http://test/"); + + TEST_PARSING(fm_path_new_for_uri, "http://wiki.lxde.org/zh/%E9%A6%96%E9%A0%81", ++#if 0 ++ /* It should not do any break in URI since 1.0.1 */ + "http://wiki.lxde.org/", "zh", "首頁"); ++#endif ++ "http://wiki.lxde.org/", "zh", "%E9%A6%96%E9%A0%81"); + + TEST_PARSING(fm_path_new_for_uri, "mailto:test", + "mailto:test"); +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0006-3586178-doc-build-wasn-t-updated-for-with-gtk-3-case.patch b/libraries/libfm/patches/0006-3586178-doc-build-wasn-t-updated-for-with-gtk-3-case.patch new file mode 100644 index 0000000000..4748a2086d --- /dev/null +++ b/libraries/libfm/patches/0006-3586178-doc-build-wasn-t-updated-for-with-gtk-3-case.patch @@ -0,0 +1,26 @@ +From 80c568c277a5b8aa43d553d7d71f7ea404b41ab4 Mon Sep 17 00:00:00 2001 +From: galtgendo +Date: Tue, 13 Nov 2012 00:03:54 +0200 +Subject: [PATCH 06/22] [#3586178]doc build wasn't updated for '--with-gtk=3' + case + +--- + docs/reference/libfm/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/docs/reference/libfm/Makefile.am b/docs/reference/libfm/Makefile.am +index 4650c71..8537cec 100644 +--- a/docs/reference/libfm/Makefile.am ++++ b/docs/reference/libfm/Makefile.am +@@ -120,7 +120,7 @@ GTKDOC_CFLAGS= \ + $(GTK_CFLAGS) + GTKDOC_LIBS= \ + $(top_builddir)/src/libfm.la \ +- $(top_builddir)/src/libfm-gtk.la \ ++ $(top_builddir)/src/$(LIBFM_GTK_LTLIBRARIES) \ + $(GTK_LIBS) \ + $(NULL) + +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0007-3586178-gtk3-css-strings-have-significantly-differen.patch b/libraries/libfm/patches/0007-3586178-gtk3-css-strings-have-significantly-differen.patch new file mode 100644 index 0000000000..e795f0fc88 --- /dev/null +++ b/libraries/libfm/patches/0007-3586178-gtk3-css-strings-have-significantly-differen.patch @@ -0,0 +1,44 @@ +From 83f0300a130f9c2ec83bbd5af138b0c5633fc608 Mon Sep 17 00:00:00 2001 +From: galtgendo +Date: Tue, 13 Nov 2012 00:04:56 +0200 +Subject: [PATCH 07/22] [#3586178]gtk3 css strings have significantly different + syntax from gtk2 rc strings + +--- + src/gtk/fm-tab-label.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/gtk/fm-tab-label.c b/src/gtk/fm-tab-label.c +index 12c78ca..3bae9d4 100644 +--- a/src/gtk/fm-tab-label.c ++++ b/src/gtk/fm-tab-label.c +@@ -44,20 +44,21 @@ static void fm_tab_label_class_init(FmTabLabelClass *klass) + #if GTK_CHECK_VERSION(3, 0, 0) + provider = gtk_css_provider_new(); + gtk_css_provider_load_from_data(provider, ++ "#tab-close-btn {\n" ++ "-GtkWidget-focus-padding : 0;\n" ++ "-GtkWidget-focus-line-width : 0;\n" ++ "padding : 0;\n" ++ "}\n", -1, NULL); + #else + gtk_rc_parse_string( +-#endif + "style \"close-btn-style\" {\n" + "GtkWidget::focus-padding = 0\n" + "GtkWidget::focus-line-width = 0\n" + "xthickness = 0\n" + "ythickness = 0\n" + "}\n" +- "widget \"*.tab-close-btn\" style \"close-btn-style\"" +-#if GTK_CHECK_VERSION(3, 0, 0) +- , -1, NULL ++ "widget \"*.tab-close-btn\" style \"close-btn-style\""); + #endif +- ); + } + + /* FIXME: add g_object_unref (provider); on class destroy? */ +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0008-3586178-Comparison-is-wrong-bug-6421-in-libexo.patch b/libraries/libfm/patches/0008-3586178-Comparison-is-wrong-bug-6421-in-libexo.patch new file mode 100644 index 0000000000..f0505ac3b6 --- /dev/null +++ b/libraries/libfm/patches/0008-3586178-Comparison-is-wrong-bug-6421-in-libexo.patch @@ -0,0 +1,26 @@ +From 19801e7f3d906ebb4470de0818945e9686dcdf66 Mon Sep 17 00:00:00 2001 +From: galtgendo +Date: Tue, 13 Nov 2012 00:12:42 +0200 +Subject: [PATCH 08/22] [#3586178]Comparison is wrong (bug #6421 in libexo). + +http://git.xfce.org/xfce/exo/commit/?id=97b9c443baf879580ed851525a3150913c89ec10 +--- + src/gtk/exo/exo-icon-view.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gtk/exo/exo-icon-view.c b/src/gtk/exo/exo-icon-view.c +index b572cb0..11bd0cf 100644 +--- a/src/gtk/exo/exo-icon-view.c ++++ b/src/gtk/exo/exo-icon-view.c +@@ -7581,7 +7581,7 @@ exo_icon_view_set_drag_dest_item (ExoIconView *icon_view, + + /* special case a drop on an empty model */ + icon_view->priv->empty_view_drop = FALSE; +- if (pos == EXO_ICON_VIEW_DROP_LEFT && path ++ if (pos == EXO_ICON_VIEW_NO_DROP && path + && gtk_tree_path_get_depth (path) == 1 + && gtk_tree_path_get_indices (path)[0] == 0) + { +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0009-Another-fix-for-possible-SIGSEGV-in-src-base-fm-path.patch b/libraries/libfm/patches/0009-Another-fix-for-possible-SIGSEGV-in-src-base-fm-path.patch new file mode 100644 index 0000000000..b89dcc5414 --- /dev/null +++ b/libraries/libfm/patches/0009-Another-fix-for-possible-SIGSEGV-in-src-base-fm-path.patch @@ -0,0 +1,34 @@ +From 195e18e90abf1e641037b84a0e44dbf5c6aa8265 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Tue, 13 Nov 2012 04:04:24 +0200 +Subject: [PATCH 09/22] Another fix for possible SIGSEGV in src/base/fm-path.c. + +--- + src/base/fm-path.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/base/fm-path.c b/src/base/fm-path.c +index b90aeab..e4a0251 100644 +--- a/src/base/fm-path.c ++++ b/src/base/fm-path.c +@@ -245,6 +245,8 @@ static inline FmPath* _fm_path_reuse_existing_paths(FmPath* parent, const char* + * Creates new #FmPath for child of @parent directory which have name + * @basename. The string length of @basename is @name_len. @basename is + * in glib filename encoding (can be non-UTF-8) of target filesystem. ++ * If @parent is %NULL then @basename assumed to be root of some file ++ * system. + * + * Returns: (transfer full): a new #FmPath for the path. You have to call + * fm_path_unref() when it's no longer needed. +@@ -341,7 +343,7 @@ FmPath* _fm_path_new_child_len(FmPath* parent, const char* basename, int name_le + FmPath* fm_path_new_child_len(FmPath* parent, const char* basename, int name_len) + { + return _fm_path_new_child_len(parent, basename, name_len, +- fm_path_is_native(parent)); ++ parent && fm_path_is_native(parent)); + } + + /** +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0010-3584798-We-shouldn-t-disable-DnD-on-non-native-targe.patch b/libraries/libfm/patches/0010-3584798-We-shouldn-t-disable-DnD-on-non-native-targe.patch new file mode 100644 index 0000000000..d14e9491bd --- /dev/null +++ b/libraries/libfm/patches/0010-3584798-We-shouldn-t-disable-DnD-on-non-native-targe.patch @@ -0,0 +1,37 @@ +From 40aa4a6ae1531b189a25d373d642f5c7a1f7023d Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Thu, 15 Nov 2012 05:50:44 +0200 +Subject: [PATCH 10/22] [#3584798]We shouldn't disable DnD on non-native + targets completely. + +The handling dropping on non-native target should have some check +but not denial as it was before. Let user get error message if +dropping failed for now and do some other checks later. +--- + src/gtk/fm-dnd-dest.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/gtk/fm-dnd-dest.c b/src/gtk/fm-dnd-dest.c +index 21cf2c0..371e5f6 100644 +--- a/src/gtk/fm-dnd-dest.c ++++ b/src/gtk/fm-dnd-dest.c +@@ -811,12 +811,16 @@ query_sources: + else /* files inside trash are read only */ + action = 0; + } ++#if 0 ++ /* bug #3584798: DnD(copy/move) to remote host(SFTP://) does not work. ++ we should do some check if target FS is R/O instead of this */ + else if(!fm_path_is_native(dest_path)) + { + /* computer:/// and network:/// shouldn't received dropped files. */ + /* FIXME: some special handling can be done with menu:// */ + action = 0; + } ++#endif + else /* dest is a ordinary path */ + { + /* determine if the dragged files are on the same device as destination file */ +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch b/libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch new file mode 100644 index 0000000000..a980e81668 --- /dev/null +++ b/libraries/libfm/patches/0011-smb-symlinked-locations-cannot-be-launched-from-fold.patch @@ -0,0 +1,57 @@ +From 690e15ba4367784f3ac2134c5e68d52ee05e6cbb Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Thu, 15 Nov 2012 21:08:51 +0200 +Subject: [PATCH 11/22] smb:// symlinked locations cannot be launched from + folder view. + +This is because we don't assume each symlink is a folder anymore +(that assuming was stupid anyway) so we check how to handle the +symlink target. We have to get info on the target. If target isn't +mounted we cannot retrieve info on it and FmFileInfoJob fails. +Therefore we cannot launch the location. +The commit adds creation of simplest file info which contains only +name and type (directory) for not mounted location. +--- + src/job/fm-file-info-job.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/job/fm-file-info-job.c b/src/job/fm-file-info-job.c +index 19acb1b..69eb37d 100644 +--- a/src/job/fm-file-info-job.c ++++ b/src/job/fm-file-info-job.c +@@ -165,6 +165,24 @@ static gboolean fm_file_info_job_run(FmJob* fmjob) + gf = fm_path_to_gfile(path); + if(!_fm_file_info_job_get_info_for_gfile(fmjob, fi, gf, &err)) + { ++ if(err->domain == G_IO_ERROR && err->code == G_IO_ERROR_NOT_MOUNTED) ++ { ++ GFileInfo *inf; ++ /* location by link isn't mounted; unfortunately we cannot ++ launch a target if we don't know what kind of target we ++ have; lets make a simplest directory-kind GFIleInfo */ ++ /* FIXME: this may be dirty a bit */ ++ g_error_free(err); ++ err = NULL; ++ inf = g_file_info_new(); ++ g_file_info_set_file_type(inf, G_FILE_TYPE_DIRECTORY); ++ g_file_info_set_name(inf, fm_path_get_basename(path)); ++ g_file_info_set_display_name(inf, fm_path_get_basename(path)); ++ fm_file_info_set_from_gfileinfo(fi, inf); ++ g_object_unref(inf); ++ } ++ else ++ { + FmJobErrorAction act = fm_job_emit_error(fmjob, err, FM_JOB_ERROR_MILD); + g_error_free(err); + err = NULL; +@@ -175,6 +193,7 @@ static gboolean fm_file_info_job_run(FmJob* fmjob) + } + + fm_file_info_list_delete_link(job->file_infos, l); /* also calls unref */ ++ } + } + g_object_unref(gf); + } +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0012-Fix-for-localizations-of-Detailed-List-View-headers.patch b/libraries/libfm/patches/0012-Fix-for-localizations-of-Detailed-List-View-headers.patch new file mode 100644 index 0000000000..0fb620cc6f --- /dev/null +++ b/libraries/libfm/patches/0012-Fix-for-localizations-of-Detailed-List-View-headers.patch @@ -0,0 +1,26 @@ +From 924208952dbd8408b20b9357d7154f7aa5081b3e Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Sat, 17 Nov 2012 04:36:58 +0200 +Subject: [PATCH 12/22] Fix for localizations of Detailed List View headers. + +Detailed List View headers appeared untranslated, macro _() should be added. +--- + src/gtk/fm-folder-model.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gtk/fm-folder-model.c b/src/gtk/fm-folder-model.c +index 36f0d00..6072b3e 100644 +--- a/src/gtk/fm-folder-model.c ++++ b/src/gtk/fm-folder-model.c +@@ -1783,7 +1783,7 @@ const char* fm_folder_model_col_get_title(FmFolderModel* model, FmFolderModelCol + if(G_UNLIKELY(!FM_FOLDER_MODEL_COL_IS_VALID(col_id) + || column_infos[col_id] == NULL)) /* invalid id */ + return NULL; +- return column_infos[col_id]->title; ++ return _(column_infos[col_id]->title); + } + + /** +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0013-3587571-Ctrl-A-should-select-all-depending-on-focus.patch b/libraries/libfm/patches/0013-3587571-Ctrl-A-should-select-all-depending-on-focus.patch new file mode 100644 index 0000000000..f642e171ea --- /dev/null +++ b/libraries/libfm/patches/0013-3587571-Ctrl-A-should-select-all-depending-on-focus.patch @@ -0,0 +1,36 @@ +From afbe7e29106f9126c53a0c533ab007aae1f81139 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Sat, 17 Nov 2012 15:02:15 +0200 +Subject: [PATCH 13/22] [#3587571]Ctrl+A should select all depending on focus. + +The commit changes bahavior of Ctrl+A: it does not select all files in +the active view anymore but does it only if focus in in the view. +If focus is on some editable (i.e. path entry) it will select all in there. +--- + src/gtk/fm-folder-view.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/gtk/fm-folder-view.c b/src/gtk/fm-folder-view.c +index fe65e9f..d7fa53e 100644 +--- a/src/gtk/fm-folder-view.c ++++ b/src/gtk/fm-folder-view.c +@@ -1035,7 +1035,15 @@ static void on_rm(GtkAction* act, FmFolderView* fv) + + static void on_select_all(GtkAction* act, FmFolderView* fv) + { +- fm_folder_view_select_all(fv); ++ GtkMenu *popup = g_object_get_qdata(G_OBJECT(fv), popup_quark); ++ GtkWidget *win = gtk_menu_get_attach_widget(popup); ++ GtkWidget *focus = gtk_window_get_focus(GTK_WINDOW(win)); ++ ++ /* check if we are inside the view; for desktop focus will be NULL */ ++ if(focus == NULL || gtk_widget_is_ancestor(focus, GTK_WIDGET(fv))) ++ fm_folder_view_select_all(fv); ++ else if(GTK_IS_EDITABLE(focus)) /* fallback for editables */ ++ gtk_editable_select_region((GtkEditable*)focus, 0, -1); + } + + static void on_invert_select(GtkAction* act, FmFolderView* fv) +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0014-Disabling-input-for-file-name-in-properties-dialog-w.patch b/libraries/libfm/patches/0014-Disabling-input-for-file-name-in-properties-dialog-w.patch new file mode 100644 index 0000000000..67b0f0bd2f --- /dev/null +++ b/libraries/libfm/patches/0014-Disabling-input-for-file-name-in-properties-dialog-w.patch @@ -0,0 +1,28 @@ +From a10573226a21c1ff3be24efdf7f57be3a3108c76 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Mon, 19 Nov 2012 23:38:34 +0200 +Subject: [PATCH 14/22] Disabling input for file name in properties dialog + window. + +Changing file name in file properties dialog isn't implemented yet even +for single file therefore field for changing should be incensitive. +--- + src/gtk/fm-file-properties.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/gtk/fm-file-properties.c b/src/gtk/fm-file-properties.c +index ec486f7..ec672b7 100644 +--- a/src/gtk/fm-file-properties.c ++++ b/src/gtk/fm-file-properties.c +@@ -786,6 +786,8 @@ static void update_ui(FmFilePropData* data) + localtime_r(&atime, &tm); + strftime(buf, sizeof(buf), "%x %R", &tm); + gtk_label_set_text(data->atime, buf); ++ /* FIXME: changing file name isn't implemented yet, disable entry */ ++ gtk_widget_set_sensitive(GTK_WIDGET(data->name), FALSE); + } + else + { +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0015-Adding-tooltips-for-file-name-and-location-in-file-p.patch b/libraries/libfm/patches/0015-Adding-tooltips-for-file-name-and-location-in-file-p.patch new file mode 100644 index 0000000000..ba8718b034 --- /dev/null +++ b/libraries/libfm/patches/0015-Adding-tooltips-for-file-name-and-location-in-file-p.patch @@ -0,0 +1,39 @@ +From 3cea23d685c92dff892aebff01bd1908c4b7e169 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Mon, 19 Nov 2012 23:41:10 +0200 +Subject: [PATCH 15/22] Adding tooltips for file name and location in file + properties. + +In case when file name is too long to be shown in the field it will be +truncated so user cannot see it. Adding tooltip with full file name +and full file path helps to see it in any case. +The commit implements showing tooltips on base of text lenght, not +rendering size. That probably should be changed later. +--- + src/gtk/fm-file-properties.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/gtk/fm-file-properties.c b/src/gtk/fm-file-properties.c +index ec672b7..3d79cdf 100644 +--- a/src/gtk/fm-file-properties.c ++++ b/src/gtk/fm-file-properties.c +@@ -772,9 +772,16 @@ static void update_ui(FmFilePropData* data) + time_t atime; + struct tm tm; + gtk_entry_set_text(data->name, fm_file_info_get_disp_name(data->fi)); ++ /* FIXME: check if text fits in line */ ++ if(strlen(fm_file_info_get_disp_name(data->fi)) > 16) ++ gtk_widget_set_tooltip_text(GTK_WIDGET(data->name), ++ fm_file_info_get_disp_name(data->fi)); + if(parent_str) + { + gtk_label_set_text(data->dir, parent_str); ++ /* FIXME: check if text fits in line */ ++ if(strlen(parent_str) > 16) ++ gtk_widget_set_tooltip_text(GTK_WIDGET(data->dir), parent_str); + g_free(parent_str); + } + else +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0016-Fix-file-owner-group-should-be-properly-disabled-in-.patch b/libraries/libfm/patches/0016-Fix-file-owner-group-should-be-properly-disabled-in-.patch new file mode 100644 index 0000000000..34a1b3041e --- /dev/null +++ b/libraries/libfm/patches/0016-Fix-file-owner-group-should-be-properly-disabled-in-.patch @@ -0,0 +1,34 @@ +From 7b83548b43e2af014873655c850f580b16d24d57 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Mon, 19 Nov 2012 23:33:40 +0200 +Subject: [PATCH 16/22] Fix: file owner/group should be properly disabled in + dialog. + +Currently if owner and group cannot be changed by user those fields +are enabled for set cursor but content is unchangeable. That may +be questioned by users and considered as bug, it also visually not +distinguishable from changeable case. +The commit properly disables those fields completely so user will +see it cannot be changed and cannot set keyboard focus there. +--- + src/gtk/fm-file-properties.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/gtk/fm-file-properties.c b/src/gtk/fm-file-properties.c +index 3d79cdf..a87b546 100644 +--- a/src/gtk/fm-file-properties.c ++++ b/src/gtk/fm-file-properties.c +@@ -591,8 +591,8 @@ static void update_permissions(FmFilePropData* data) + /* on local filesystems, only root can do chown. */ + if( data->all_native && geteuid() != 0 ) + { +- gtk_editable_set_editable(GTK_EDITABLE(data->owner), FALSE); +- gtk_editable_set_editable(GTK_EDITABLE(data->group), FALSE); ++ gtk_widget_set_sensitive(GTK_WIDGET(data->owner), FALSE); ++ gtk_widget_set_sensitive(GTK_WIDGET(data->group), FALSE); + } + + /* read access chooser */ +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0017-Fix-disabled-name-cannot-be-copied-to-clipboard-make.patch b/libraries/libfm/patches/0017-Fix-disabled-name-cannot-be-copied-to-clipboard-make.patch new file mode 100644 index 0000000000..1b63f37e17 --- /dev/null +++ b/libraries/libfm/patches/0017-Fix-disabled-name-cannot-be-copied-to-clipboard-make.patch @@ -0,0 +1,29 @@ +From e1029d5ebf0fb1ea49cd4a26eb6f444f703d6e63 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Tue, 20 Nov 2012 02:31:18 +0200 +Subject: [PATCH 17/22] Fix: disabled name cannot be copied to clipboard, make + it unfocusable instead. + +Set name insensitive is good in visual but we cannot 'Select All'+'Copy' +on it. Therefore make it unfocusable and ineditable instead. +--- + src/gtk/fm-file-properties.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/gtk/fm-file-properties.c b/src/gtk/fm-file-properties.c +index a87b546..39b402b 100644 +--- a/src/gtk/fm-file-properties.c ++++ b/src/gtk/fm-file-properties.c +@@ -794,7 +794,8 @@ static void update_ui(FmFilePropData* data) + strftime(buf, sizeof(buf), "%x %R", &tm); + gtk_label_set_text(data->atime, buf); + /* FIXME: changing file name isn't implemented yet, disable entry */ +- gtk_widget_set_sensitive(GTK_WIDGET(data->name), FALSE); ++ gtk_widget_set_can_focus(GTK_WIDGET(data->name), FALSE); ++ gtk_editable_set_editable(GTK_EDITABLE(data->name), FALSE); + } + else + { +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0018-Change-FM_CONFIG_DEFAULT_NO_USB_TRASH-to-more-expect.patch b/libraries/libfm/patches/0018-Change-FM_CONFIG_DEFAULT_NO_USB_TRASH-to-more-expect.patch new file mode 100644 index 0000000000..899f6e5234 --- /dev/null +++ b/libraries/libfm/patches/0018-Change-FM_CONFIG_DEFAULT_NO_USB_TRASH-to-more-expect.patch @@ -0,0 +1,34 @@ +From 70ff12a694a85184775740fcb501342c75fd551b Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Tue, 20 Nov 2012 23:53:16 +0200 +Subject: [PATCH 18/22] Change FM_CONFIG_DEFAULT_NO_USB_TRASH to more expecting + TRUE. + +The most expected for users used to Windows behavior for that option +is to have it TRUE, and FALSE creates behavior unexpected by most of +the users and, moreover, even when user plug off flash drive an then +plug in it, the trash may be not always recognized by GVFS therefore +it's not trivial to get files on flash drive be REALLY deleted. And +users blame pcmanfm, of course. +The commit changes default. It will not affect users who already use +libfm 1.1.0 and have own setting for it but only new users. +--- + src/base/fm-config.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/base/fm-config.h b/src/base/fm-config.h +index 313db7c..cd41399 100644 +--- a/src/base/fm-config.h ++++ b/src/base/fm-config.h +@@ -43,7 +43,7 @@ typedef struct _FmConfigClass FmConfigClass; + #define FM_CONFIG_DEFAULT_SINGLE_CLICK FALSE + #define FM_CONFIG_DEFAULT_USE_TRASH TRUE + #define FM_CONFIG_DEFAULT_CONFIRM_DEL TRUE +-#define FM_CONFIG_DEFAULT_NO_USB_TRASH FALSE ++#define FM_CONFIG_DEFAULT_NO_USB_TRASH TRUE + + #define FM_CONFIG_DEFAULT_BIG_ICON_SIZE 48 + #define FM_CONFIG_DEFAULT_SMALL_ICON_SIZE 16 +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0019-3589259-Fix-for-dropping-files-onto-Trash-in-Places-.patch b/libraries/libfm/patches/0019-3589259-Fix-for-dropping-files-onto-Trash-in-Places-.patch new file mode 100644 index 0000000000..d132710fb8 --- /dev/null +++ b/libraries/libfm/patches/0019-3589259-Fix-for-dropping-files-onto-Trash-in-Places-.patch @@ -0,0 +1,34 @@ +From 0beaa4830244ab72eeece67bb99802c3aa04f81c Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Sat, 24 Nov 2012 00:56:34 +0200 +Subject: [PATCH 19/22] [#3589259]Fix for dropping files onto Trash in Places + sidebar. + +The Trash item in Places sidebar has incomplete file info and +FmDndDest widget thinks it's not droppable target. +The commit adds job to update Trash item so it will be complete. +--- + src/gtk/fm-places-model.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/gtk/fm-places-model.c b/src/gtk/fm-places-model.c +index f5d6927..b637089 100644 +--- a/src/gtk/fm-places-model.c ++++ b/src/gtk/fm-places-model.c +@@ -611,8 +611,13 @@ static void create_trash_item(FmPlacesModel* model) + FmPlacesItem* item; + GdkPixbuf* pix; + GFile* gf; ++ FmFileInfoJob* job = fm_file_info_job_new(NULL, FM_FILE_INFO_JOB_NONE); + + gf = fm_file_new_for_uri("trash:///"); ++ fm_file_info_job_add(job, fm_path_get_trash()); ++ g_signal_connect(job, "finished", G_CALLBACK(on_file_info_job_finished), model); ++ model->jobs = g_slist_prepend(model->jobs, job); ++ fm_job_run_async(FM_JOB(job)); + model->trash_monitor = fm_monitor_directory(gf, NULL); + g_signal_connect(model->trash_monitor, "changed", G_CALLBACK(on_trash_changed), model); + g_object_unref(gf); +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0020-Fix-after-changing-the-folder-selection-isn-t-reset.patch b/libraries/libfm/patches/0020-Fix-after-changing-the-folder-selection-isn-t-reset.patch new file mode 100644 index 0000000000..cc3b422db5 --- /dev/null +++ b/libraries/libfm/patches/0020-Fix-after-changing-the-folder-selection-isn-t-reset.patch @@ -0,0 +1,31 @@ +From 7d31d56805d907bcb23f6b4c54719ac3b8f7a137 Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Sat, 24 Nov 2012 17:31:48 +0200 +Subject: [PATCH 20/22] Fix: after changing the folder selection isn't reset + +This is reported in https://bugs.launchpad.net/ubuntu/+source/pcmanfm/+bug/1071231 + +After changing the folder selection is still stays cached +so pressing 'Delete' will trash the folder where we just came. +The commit adds cleanup on idle after model is changed. +--- + src/gtk/fm-standard-view.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/gtk/fm-standard-view.c b/src/gtk/fm-standard-view.c +index 175cced..1ff55ae 100644 +--- a/src/gtk/fm-standard-view.c ++++ b/src/gtk/fm-standard-view.c +@@ -275,6 +275,9 @@ static void unset_model(FmStandardView* fv) + /* g_debug("unset_model: %p, n_ref = %d", model, G_OBJECT(model)->ref_count); */ + g_object_unref(model); + fv->model = NULL; ++ /* https://bugs.launchpad.net/ubuntu/+source/pcmanfm/+bug/1071231: ++ after changing the folder selection isn't reset */ ++ on_sel_changed(NULL, fv); + } + } + +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0021-Fix-over-previous-commit-it-leaded-to-crash.patch b/libraries/libfm/patches/0021-Fix-over-previous-commit-it-leaded-to-crash.patch new file mode 100644 index 0000000000..ba8a02fdca --- /dev/null +++ b/libraries/libfm/patches/0021-Fix-over-previous-commit-it-leaded-to-crash.patch @@ -0,0 +1,46 @@ +From 01c1de235d7bdf702f8d1dfc99645b57afe3deec Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Sat, 24 Nov 2012 19:34:44 +0200 +Subject: [PATCH 21/22] Fix over previous commit: it leaded to crash. + +The last fix was incorrect since it updated selection after the +model was actually unset in FmStandardView but still in ExoIconView +therefore it crashed in raised callbacks. +The commit does it simpler by unselecting them all. That will +still send a signal about reset selection but will not conflict. +--- + src/gtk/fm-folder-view.c | 3 +++ + src/gtk/fm-standard-view.c | 3 --- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/gtk/fm-folder-view.c b/src/gtk/fm-folder-view.c +index d7fa53e..240f0e3 100644 +--- a/src/gtk/fm-folder-view.c ++++ b/src/gtk/fm-folder-view.c +@@ -624,6 +624,9 @@ void fm_folder_view_set_model(FmFolderView* fv, FmFolderModel* model) + { + fm_folder_model_get_sort(old_model, &by, &mode); + unset_model(fv, old_model); ++ /* https://bugs.launchpad.net/ubuntu/+source/pcmanfm/+bug/1071231: ++ after changing the folder selection isn't reset */ ++ iface->unselect_all(fv); + } + /* FIXME: which setting to apply if this is first model? */ + iface->set_model(fv, model); +diff --git a/src/gtk/fm-standard-view.c b/src/gtk/fm-standard-view.c +index 1ff55ae..175cced 100644 +--- a/src/gtk/fm-standard-view.c ++++ b/src/gtk/fm-standard-view.c +@@ -275,9 +275,6 @@ static void unset_model(FmStandardView* fv) + /* g_debug("unset_model: %p, n_ref = %d", model, G_OBJECT(model)->ref_count); */ + g_object_unref(model); + fv->model = NULL; +- /* https://bugs.launchpad.net/ubuntu/+source/pcmanfm/+bug/1071231: +- after changing the folder selection isn't reset */ +- on_sel_changed(NULL, fv); + } + } + +-- +1.8.0.1 + diff --git a/libraries/libfm/patches/0022-3590304-Fallback-themed-icon-folder-video-to-folder-.patch b/libraries/libfm/patches/0022-3590304-Fallback-themed-icon-folder-video-to-folder-.patch new file mode 100644 index 0000000000..4852b267b6 --- /dev/null +++ b/libraries/libfm/patches/0022-3590304-Fallback-themed-icon-folder-video-to-folder-.patch @@ -0,0 +1,50 @@ +From 552d91d59d32c0ed9fec958bf4f3c99a9caccedd Mon Sep 17 00:00:00 2001 +From: Andriy Grytsenko +Date: Tue, 27 Nov 2012 21:23:15 +0200 +Subject: [PATCH 22/22] [#3590304]Fallback themed icon "folder-video" to + "folder" not to gnome. + +GTK fallbacks missing themed icon "folder-video" to GNOME +"folder-video" and that breaks icon theme. +The same happens with many other icons. +It is better to use g_themed_icon_new_with_default_fallbacks() +and use default fallback to "folder" in case of above. +--- + src/base/fm-icon.c | 2 +- + src/gtk/fm-icon-pixbuf.c | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/base/fm-icon.c b/src/base/fm-icon.c +index 42dd3fc..e86a13b 100644 +--- a/src/base/fm-icon.c ++++ b/src/base/fm-icon.c +@@ -99,7 +99,7 @@ FmIcon* fm_icon_from_name(const char* name) + g_object_unref(gicon_file); + } + else +- gicon = g_themed_icon_new(name); ++ gicon = g_themed_icon_new_with_default_fallbacks(name); + + if(G_LIKELY(gicon)) + { +diff --git a/src/gtk/fm-icon-pixbuf.c b/src/gtk/fm-icon-pixbuf.c +index b30d7c7..8b1c276 100644 +--- a/src/gtk/fm-icon-pixbuf.c ++++ b/src/gtk/fm-icon-pixbuf.c +@@ -102,11 +102,13 @@ GdkPixbuf* fm_pixbuf_from_icon(FmIcon* icon, int size) + char* str = g_icon_to_string(icon->gicon); + g_debug("unable to load icon %s", str); + /* pix = NULL; */ ++#if 0 + if(g_strcmp0(str, "folder-locked") == 0) + pix = gtk_icon_theme_load_icon(gtk_icon_theme_get_default(), "folder", + size, GTK_ICON_LOOKUP_USE_BUILTIN|GTK_ICON_LOOKUP_FORCE_SIZE, NULL); + /* FIXME: create locked icon from "folder" one */ + else ++#endif + pix = gtk_icon_theme_load_icon(gtk_icon_theme_get_default(), "unknown", + size, GTK_ICON_LOOKUP_USE_BUILTIN|GTK_ICON_LOOKUP_FORCE_SIZE, NULL); + if(G_LIKELY(pix)) +-- +1.8.0.1 + -- cgit v1.2.3