[arch-commits] Commit in thunar/trunk (3 files)

Evangelos Foutras foutrelis at archlinux.org
Tue Apr 16 07:45:23 UTC 2019


    Date: Tuesday, April 16, 2019 @ 07:45:22
  Author: foutrelis
Revision: 350805

upgpkg: thunar 1.8.4-2

Add upstream fix for file template menu being collapsed (FS#62267).

Added:
  thunar/trunk/thunar-bz14946.patch
  thunar/trunk/thunar-bz15200.patch
Modified:
  thunar/trunk/PKGBUILD

----------------------+
 PKGBUILD             |   11 +
 thunar-bz14946.patch |   22 +++
 thunar-bz15200.patch |  281 +++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 311 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-04-16 07:35:18 UTC (rev 350804)
+++ PKGBUILD	2019-04-16 07:45:22 UTC (rev 350805)
@@ -3,7 +3,7 @@
 
 pkgname=thunar
 pkgver=1.8.4
-pkgrel=1
+pkgrel=2
 pkgdesc="Modern file manager for Xfce"
 arch=('x86_64')
 url="https://docs.xfce.org/xfce/thunar/start"
@@ -19,9 +19,11 @@
             'thunar-archive-plugin: create and deflate archives'
             'thunar-media-tags-plugin: view/edit id3/ogg tags')
 source=(https://archive.xfce.org/src/xfce/$pkgname/${pkgver%.*}/Thunar-$pkgver.tar.bz2
-        thunar-bz14946.patch::https://github.com/xfce-mirror/thunar/commit/4c0e17d7fc.patch)
+        thunar-bz14946.patch
+        thunar-bz15200.patch)
 sha256sums=('c2bf51da8ddec8f642d67818184ada2ca6e143151e6a45563991db73387a93b0'
-            '23497c2472807b5268b5df3e707940326565f15c480fde755d4fd2f9a86bed8d')
+            '749881ff877d05c442db05b4724ef8847198c136d73615c9492acd4ec3f4a967'
+            'f504f75b025ee8e2b092c92951bcf8e6720ea187e168847f4d0edc18a52fb258')
 
 prepare() {
   cd "$srcdir/Thunar-$pkgver"
@@ -28,6 +30,9 @@
 
   # https://bugzilla.xfce.org/show_bug.cgi?id=14946
   patch -Np1 -i ../thunar-bz14946.patch
+
+  # https://bugzilla.xfce.org/show_bug.cgi?id=15200
+  patch -Np1 -i ../thunar-bz15200.patch
 }
 
 build() {

Added: thunar-bz14946.patch
===================================================================
--- thunar-bz14946.patch	                        (rev 0)
+++ thunar-bz14946.patch	2019-04-16 07:45:22 UTC (rev 350805)
@@ -0,0 +1,22 @@
+From 4c0e17d7fc78525007833a10524e88d523123a40 Mon Sep 17 00:00:00 2001
+From: Andre Miranda <andre.miranda at liferay.com>
+Date: Wed, 5 Dec 2018 13:27:51 -0300
+Subject: [PATCH] Expand scroll window of file operation progress dialog (Bug
+ #14946)
+
+---
+ thunar/thunar-progress-dialog.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/thunar/thunar-progress-dialog.c b/thunar/thunar-progress-dialog.c
+index 7d227c214..f4de6097f 100644
+--- a/thunar/thunar-progress-dialog.c
++++ b/thunar/thunar-progress-dialog.c
+@@ -368,6 +368,7 @@ thunar_progress_dialog_add_job (ThunarProgressDialog *dialog,
+       dialog->scrollwin = gtk_scrolled_window_new (NULL, NULL);
+       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dialog->scrollwin),
+                                       GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
++      gtk_widget_set_vexpand (dialog->scrollwin, TRUE);
+       gtk_container_add (GTK_CONTAINER (dialog->vbox), dialog->scrollwin);
+       gtk_widget_show (dialog->scrollwin);
+ 

Added: thunar-bz15200.patch
===================================================================
--- thunar-bz15200.patch	                        (rev 0)
+++ thunar-bz15200.patch	2019-04-16 07:45:22 UTC (rev 350805)
@@ -0,0 +1,281 @@
+From 03b8362dd9946fa4593497672ef4f341330170ed Mon Sep 17 00:00:00 2001
+From: Andre Miranda <andreldm at xfce.org>
+Date: Sun, 14 Apr 2019 15:06:35 -0300
+Subject: [PATCH 1/2] Job is now optional for thunar_io_scan_directory
+
+---
+ thunar/thunar-io-scan-directory.c | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/thunar/thunar-io-scan-directory.c b/thunar/thunar-io-scan-directory.c
+index 8f81724c6..33aa7af45 100644
+--- a/thunar/thunar-io-scan-directory.c
++++ b/thunar/thunar-io-scan-directory.c
+@@ -52,13 +52,13 @@ thunar_io_scan_directory (ThunarJob          *job,
+   const gchar     *namespace;
+   ThunarFile      *thunar_file;
+   gboolean         is_mounted;
++  GCancellable    *cancellable = NULL;
+ 
+-  _thunar_return_val_if_fail (THUNAR_IS_JOB (job), NULL);
+   _thunar_return_val_if_fail (G_IS_FILE (file), NULL);
+   _thunar_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ 
+   /* abort if the job was cancelled */
+-  if (exo_job_set_error_if_cancelled (EXO_JOB (job), error))
++  if (job != NULL && exo_job_set_error_if_cancelled (EXO_JOB (job), error))
+     return NULL;
+ 
+   /* don't recurse when we are scanning prior to unlinking and the current
+@@ -73,11 +73,14 @@ thunar_io_scan_directory (ThunarJob          *job,
+       return NULL;
+     }
+ 
++  if (job != NULL)
++    cancellable = exo_job_get_cancellable (EXO_JOB (job));
++
+   /* query the file type */
+-  type = g_file_query_file_type (file, flags, exo_job_get_cancellable (EXO_JOB (job)));
++  type = g_file_query_file_type (file, flags, cancellable);
+ 
+   /* abort if the job was cancelled */
+-  if (exo_job_set_error_if_cancelled (EXO_JOB (job), error))
++  if (job != NULL && exo_job_set_error_if_cancelled (EXO_JOB (job), error))
+     return NULL;
+ 
+   /* ignore non-directory nodes */
+@@ -93,8 +96,7 @@ thunar_io_scan_directory (ThunarJob          *job,
+ 
+   /* try to read from the direectory */
+   enumerator = g_file_enumerate_children (file, namespace,
+-                                          flags, exo_job_get_cancellable (EXO_JOB (job)),
+-                                          &err);
++                                          flags, cancellable, &err);
+ 
+   /* abort if there was an error or the job was cancelled */
+   if (err != NULL)
+@@ -104,12 +106,10 @@ thunar_io_scan_directory (ThunarJob          *job,
+     }
+ 
+   /* iterate over children one by one */
+-  while (!exo_job_is_cancelled (EXO_JOB (job)))
++  while (job == NULL || !exo_job_is_cancelled (EXO_JOB (job)))
+     {
+       /* query info of the child */
+-      info = g_file_enumerator_next_file (enumerator,
+-                                          exo_job_get_cancellable (EXO_JOB (job)),
+-                                          &err);
++      info = g_file_enumerator_next_file (enumerator, cancellable, &err);
+ 
+       if (G_UNLIKELY (info == NULL))
+         break;
+@@ -171,7 +171,7 @@ thunar_io_scan_directory (ThunarJob          *job,
+       thunar_g_file_list_free (files);
+       return NULL;
+     }
+-  else if (exo_job_set_error_if_cancelled (EXO_JOB (job), &err))
++  else if (job != NULL && exo_job_set_error_if_cancelled (EXO_JOB (job), &err))
+     {
+       g_propagate_error (error, err);
+       thunar_g_file_list_free (files);
+
+From 6f980dbd6fed2b471d9fb9c7e1dd11d95b502150 Mon Sep 17 00:00:00 2001
+From: Andre Miranda <andreldm at xfce.org>
+Date: Sun, 14 Apr 2019 15:08:40 -0300
+Subject: [PATCH 2/2] Load templates synchronously (Bug #15200)
+
+---
+ thunar/thunar-templates-action.c | 95 ++++++++++++++++----------------
+ 1 file changed, 46 insertions(+), 49 deletions(-)
+
+diff --git a/thunar/thunar-templates-action.c b/thunar/thunar-templates-action.c
+index 42118ae32..35df13d18 100644
+--- a/thunar/thunar-templates-action.c
++++ b/thunar/thunar-templates-action.c
+@@ -25,8 +25,7 @@
+ #include <gio/gio.h>
+ 
+ #include <thunar/thunar-icon-factory.h>
+-#include <thunar/thunar-job.h>
+-#include <thunar/thunar-misc-jobs.h>
++#include <thunar/thunar-io-scan-directory.h>
+ #include <thunar/thunar-private.h>
+ #include <thunar/thunar-templates-action.h>
+ #include <thunar/thunar-util.h>
+@@ -44,7 +43,7 @@ enum
+ 
+ static void       thunar_templates_action_finalize          (GObject                    *object);
+ static GtkWidget *thunar_templates_action_create_menu_item  (GtkAction                  *action);
+-static void       thunar_templates_action_menu_shown        (GtkWidget                  *menu,
++static void       thunar_templates_action_load              (GtkWidget                  *menu,
+                                                              ThunarTemplatesAction      *templates_action);
+ 
+ 
+@@ -167,9 +166,10 @@ G_GNUC_END_IGNORE_DEPRECATIONS
+ 
+   /* associate an empty submenu with the item (will be filled when shown) */
+   menu = gtk_menu_new ();
+-  g_signal_connect (G_OBJECT (menu), "show", G_CALLBACK (thunar_templates_action_menu_shown), action);
+   gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+ 
++  thunar_templates_action_load (menu, THUNAR_TEMPLATES_ACTION (action));
++
+   return item;
+ }
+ 
+@@ -310,14 +310,13 @@ compare_files (ThunarFile *a,
+ 
+ 
+ static gboolean
+-thunar_templates_action_files_ready (ThunarJob             *job,
+-                                     GList                 *files,
+-                                     ThunarTemplatesAction *templates_action)
++thunar_templates_action_set_files (GtkWidget             *menu,
++                                   GList                 *files,
++                                   ThunarTemplatesAction *templates_action)
+ {
+   ThunarIconFactory *icon_factory;
+   ThunarFile        *file;
+   GdkPixbuf         *icon;
+-  GtkWidget         *menu;
+   GtkWidget         *parent_menu;
+   GtkWidget         *submenu;
+   GtkWidget         *image;
+@@ -331,9 +330,6 @@ thunar_templates_action_files_ready (ThunarJob             *job,
+   gchar             *label;
+   gchar             *dot;
+ 
+-  /* determine the menu to add the items and submenus to */
+-  menu = g_object_get_data (G_OBJECT (job), "menu");
+-
+   /* do nothing if there is no menu */
+   if (menu == NULL)
+     return FALSE;
+@@ -447,26 +443,21 @@ G_GNUC_END_IGNORE_DEPRECATIONS
+ 
+ 
+ static void
+-thunar_templates_action_load_error (ThunarJob             *job,
+-                                    GError                *error,
+-                                    ThunarTemplatesAction *templates_action)
++thunar_templates_action_set_error (GtkWidget             *menu,
++                                   const gchar           *error_message,
++                                   ThunarTemplatesAction *templates_action)
+ {
+   GtkWidget *item;
+-  GtkWidget *menu;
+   GList     *menu_children = NULL;
+ 
+-  _thunar_return_if_fail (THUNAR_IS_JOB (job));
+-  _thunar_return_if_fail (error != NULL);
++  _thunar_return_if_fail (error_message != NULL);
+   _thunar_return_if_fail (THUNAR_IS_TEMPLATES_ACTION (templates_action));
+-  _thunar_return_if_fail (templates_action->job == job);
+-
+-  menu = g_object_get_data (G_OBJECT (job), "menu");
+ 
+   /* check if any items were added to the menu */
+   if (G_LIKELY (menu != NULL && (menu_children = gtk_container_get_children( GTK_CONTAINER (menu))) == NULL))
+     {
+       /* tell the user that no templates were found */
+-      item = gtk_menu_item_new_with_label (error->message);
++      item = gtk_menu_item_new_with_label (error_message);
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+       gtk_widget_set_sensitive (item, FALSE);
+       gtk_widget_show (item);
+@@ -478,17 +469,13 @@ thunar_templates_action_load_error (ThunarJob             *job,
+ 
+ 
+ static void
+-thunar_templates_action_load_finished (ThunarJob             *job,
++thunar_templates_action_load_finished (GtkWidget             *menu,
+                                        ThunarTemplatesAction *templates_action)
+ {
+   GtkWidget *item;
+-  GtkWidget *menu;
+ 
+-  _thunar_return_if_fail (THUNAR_IS_JOB (job));
+   _thunar_return_if_fail (THUNAR_IS_TEMPLATES_ACTION (templates_action));
+-  _thunar_return_if_fail (templates_action->job == job);
+ 
+-  menu = g_object_get_data (G_OBJECT (job), "menu");
+   if (G_LIKELY (menu != NULL))
+     {
+       /* append a menu separator */
+@@ -503,43 +490,53 @@ thunar_templates_action_load_finished (ThunarJob             *job,
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+       gtk_widget_show (item);
+     }
+-
+-  g_signal_handlers_disconnect_matched (job, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL,
+-                                        templates_action);
+-  g_object_unref (job);
+ }
+ 
+ 
+ 
+ static void
+-thunar_templates_action_menu_shown (GtkWidget             *menu,
+-                                    ThunarTemplatesAction *templates_action)
++thunar_templates_action_load (GtkWidget             *menu,
++                              ThunarTemplatesAction *templates_action)
+ {
+-  GList *children;
++  GList           *files = NULL;
++  GFile           *home_dir;
++  GFile           *templates_dir;
++  const gchar     *path;
+ 
+   _thunar_return_if_fail (THUNAR_IS_TEMPLATES_ACTION (templates_action));
+   _thunar_return_if_fail (GTK_IS_MENU_SHELL (menu));
+ 
+-  /* drop all existing children of the menu first */
+-  children = gtk_container_get_children (GTK_CONTAINER (menu));
+-  g_list_free_full (children, (GDestroyNotify) gtk_widget_destroy);
++  home_dir = thunar_g_file_new_for_home ();
++  path = g_get_user_special_dir (G_USER_DIRECTORY_TEMPLATES);
++
++  if (G_LIKELY (path != NULL))
++    templates_dir = g_file_new_for_path (path);
++  else
++    templates_dir = g_file_resolve_relative_path (home_dir, "Templates");
+ 
+-  if (G_LIKELY (templates_action->job == NULL))
++  if (G_LIKELY (!g_file_equal (templates_dir, home_dir)))
+     {
+-      templates_action->job = thunar_misc_jobs_load_template_files (menu);
+-      g_object_add_weak_pointer (G_OBJECT (templates_action->job),
+-                                 (gpointer) &templates_action->job);
++      /* load the ThunarFiles */
++      files = thunar_io_scan_directory (NULL, templates_dir,
++                                        G_FILE_QUERY_INFO_NONE,
++                                        TRUE, FALSE, TRUE, NULL);
++    }
+ 
+-      g_signal_connect (templates_action->job, "files-ready",
+-                        G_CALLBACK (thunar_templates_action_files_ready),
+-                        templates_action);
+-      g_signal_connect (templates_action->job, "error",
+-                        G_CALLBACK (thunar_templates_action_load_error),
+-                        templates_action);
+-      g_signal_connect (templates_action->job, "finished",
+-                        G_CALLBACK (thunar_templates_action_load_finished),
+-                        templates_action);
++  g_object_unref (templates_dir);
++  g_object_unref (home_dir);
++
++  if (files == NULL)
++    {
++      thunar_templates_action_set_error (menu, _("No templates installed"),
++                                         templates_action);
+     }
++  else
++    {
++      thunar_templates_action_set_files (menu, files, templates_action);
++      thunar_g_file_list_free (files);
++    }
++
++  thunar_templates_action_load_finished (menu, templates_action);
+ }
+ 
+ 


More information about the arch-commits mailing list