libraries/libfm: Updated for version 20131102_7e1f053.

Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
This commit is contained in:
Matteo Bernardini 2013-11-05 17:00:48 +01:00 committed by Robby Workman
parent 59a7ed6157
commit 7423152ca4
24 changed files with 8 additions and 951 deletions

View File

@ -2,6 +2,7 @@
# Slackware build script for libfm
# Copyright 2013 Matteo Bernardini <ponce@slackbuilds.org>
# Copyright 2010 Chris Abela <chris.abela@maltats.com>
# All rights reserved.
#
@ -21,12 +22,10 @@
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# slightly modified by Matteo Bernardini <ponce@slackbuilds.org>
PRGNAM=libfm
VERSION=${VERSION:-1.1.0}
BUILD=${BUILD:-2}
VERSION=${VERSION:-20131102_7e1f053}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
@ -74,10 +73,7 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
# Apply patches from upstream
for i in $CWD/patches/* ; do patch -p1 < $i ; done
autoreconf -fi
sh autogen.sh || true
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@ -105,13 +101,8 @@ find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
# add handlers for terminal and archiver from LXDE components to the default config
sed -i -e 's|\[ui\]|terminal=lxterminal -e %s\narchiver=xarchiver %s\n\n[ui]|' \
sed -i -e 's|\[ui\]|terminal=lxterminal -e %s\narchiver=file-roller %s\n\n[ui]|' \
$PKG/etc/xdg/libfm/libfm.conf
# add them also for web browser and mail client using those of Slackware
sed -i -e 's|^WebBrowser=.*|WebBrowser=mozilla-firefox.desktop|' \
$PKG/etc/xdg/libfm/pref-apps.conf
sed -i -e 's|^MailClient=.*|MailClient=mozilla-thunderbird.desktop|' \
$PKG/etc/xdg/libfm/pref-apps.conf
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING README TODO \

View File

@ -1,8 +1,8 @@
PRGNAM="libfm"
VERSION="1.1.0"
VERSION="20131102_7e1f053"
HOMEPAGE="http://pcmanfm.sourceforge.net"
DOWNLOAD="http://downloads.sourceforge.net/pcmanfm/libfm-1.1.0.tar.gz"
MD5SUM="a5bc8b8291cf810c659bfb3af378b5de"
DOWNLOAD="http://ponce.cc/slackware/sources/repo/lxde/libfm-20131102_7e1f053.tar.xz"
MD5SUM="9fe7493540a16ea8263cd6b26460862f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="menu-cache"

View File

@ -1,26 +0,0 @@
From 224d38249a449557714aedc2695d1a14279f5510 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,33 +0,0 @@
From 74901d717fefaf239bf7d8b6f5b14ea146170663 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,139 +0,0 @@
From e098be34aa96bbcddb786a09b13da877d2d709ad Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,86 +0,0 @@
From 86717c497dcd07e4ba417a4236ee01bf3fb61594 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,39 +0,0 @@
From ea6d673d84b447b81b54c2cb825bdf8284952aea Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,26 +0,0 @@
From 80c568c277a5b8aa43d553d7d71f7ea404b41ab4 Mon Sep 17 00:00:00 2001
From: galtgendo <galt_gendo@sourceforge.net>
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

View File

@ -1,44 +0,0 @@
From 83f0300a130f9c2ec83bbd5af138b0c5633fc608 Mon Sep 17 00:00:00 2001
From: galtgendo <galt_gendo@sourceforge.net>
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

View File

@ -1,26 +0,0 @@
From 19801e7f3d906ebb4470de0818945e9686dcdf66 Mon Sep 17 00:00:00 2001
From: galtgendo <galt_gendo@sourceforge.net>
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

View File

@ -1,34 +0,0 @@
From 195e18e90abf1e641037b84a0e44dbf5c6aa8265 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,37 +0,0 @@
From 40aa4a6ae1531b189a25d373d642f5c7a1f7023d Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,57 +0,0 @@
From 690e15ba4367784f3ac2134c5e68d52ee05e6cbb Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,26 +0,0 @@
From 924208952dbd8408b20b9357d7154f7aa5081b3e Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,36 +0,0 @@
From afbe7e29106f9126c53a0c533ab007aae1f81139 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,28 +0,0 @@
From a10573226a21c1ff3be24efdf7f57be3a3108c76 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,39 +0,0 @@
From 3cea23d685c92dff892aebff01bd1908c4b7e169 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,34 +0,0 @@
From 7b83548b43e2af014873655c850f580b16d24d57 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,29 +0,0 @@
From e1029d5ebf0fb1ea49cd4a26eb6f444f703d6e63 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,34 +0,0 @@
From 70ff12a694a85184775740fcb501342c75fd551b Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,34 +0,0 @@
From 0beaa4830244ab72eeece67bb99802c3aa04f81c Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,31 +0,0 @@
From 7d31d56805d907bcb23f6b4c54719ac3b8f7a137 Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,46 +0,0 @@
From 01c1de235d7bdf702f8d1dfc99645b57afe3deec Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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

View File

@ -1,50 +0,0 @@
From 552d91d59d32c0ed9fec958bf4f3c99a9caccedd Mon Sep 17 00:00:00 2001
From: Andriy Grytsenko <andrej@rep.kiev.ua>
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