[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#860917: unblock (pre-approval): liferea/1.12~rc3-1



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

I am solicitating your opinion on a possible unblock for the package liferea in
case I would upload the third release candidate of upstream. I hadn't
considered packaging that for Debian because it was released after the Stretch
freeze, but I was tricked into asking you this in (normal) bug 860742¹, which
was already fixed upstream. In the discussion in that bug, it turned out that
this third release candidate actual fixes a data-loss bug (not yet filed in the
BTS) and "the other changes look low risk".

Because I already included a rather large commit that now is included in the
upstream package, I provide you with a diff between the PATCHED source trees
(including the debian directory), which I created with the following command. I
excluded the translation files because there were a lot of changes there only
due to line number changes:

diff -U3 --exclude=.pc --exclude=.git --exclude="*.po" --recursive liferea_copy liferea > /tmp/liferea_1.12~rc3-1.tree.diff

The png files that are removed/new are actually renames, where git tells me:
diff --git a/pixmaps/flag.png b/pixmaps/emblem-important.png
similarity index 100%
rename from pixmaps/flag.png
rename to pixmaps/emblem-important.png
diff --git a/pixmaps/vfolder.png b/pixmaps/folder-saved-search.png
similarity index 100%
rename from pixmaps/vfolder.png
rename to pixmaps/folder-saved-search.png
diff --git a/pixmaps/directory.png b/pixmaps/folder.png
similarity index 100%
rename from pixmaps/directory.png
rename to pixmaps/folder.png
diff --git a/pixmaps/attachment.png b/pixmaps/mail-attachment.png
similarity index 100%
rename from pixmaps/attachment.png
rename to pixmaps/mail-attachment.png

Thanks for considering. (Of course, the alternative is to just cherry-pick the
fix for the data-loss issue, which is upstream #208: All "Unread" search folder
items marked read at once)

¹ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860742

unblock liferea/1.12~rc3-1

- -- System Information:
Debian Release: 9.0
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing'), (200, 'experimental'), (200, 'testing'), (50, 'experimental'), (50, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 4.9.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEWLZtSHNr6TsFLeZynFyZ6wW9dQoFAlj6ZRYACgkQnFyZ6wW9
dQotTAf+KlgDvXqp0l7ITtl2Qs5ZlKm4ChrYtD9yOMH2f4zI+LHoIdfLkHw7zLWA
MlYoXvLIIVcisLDwg00oNh7zIIPQGXR+OSsM/jCsQS0WoZRg3w73F145QhHOYWfQ
GXuse0dMaqMq6uxfM7fIAsfy1JqTZWONfHpFa7jSSyQ5OvPL9/VQOQTwTbFuAXDB
PPz0arOybgTFSY0lEBZJLhENEb+riJ309VwgvU+aTUdBNPoizWyLrG7ql8vBpY9A
bp+BXAjzR28Woc3VsZHoAzeYPx1GsDX4ktB6TNqRo6vqC7S9DBnIW9ytod2F6DuK
Jk/gxy1oURGPwHMrgQR43DkIMBUh7A==
=2ca5
-----END PGP SIGNATURE-----
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/AUTHORS liferea/AUTHORS
--- liferea_copy/AUTHORS	2017-04-21 11:45:45.557518685 +0200
+++ liferea/AUTHORS	2017-04-20 22:14:05.991686035 +0200
@@ -108,7 +108,7 @@
 Japanese		Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>
 Japanese                IWAI, Masaharu <iwaim.sub@gmail.com>
 French			Vincent Lefèvre <vincent@vinc17.org>
-French			Guillaume Bernard <translate@filorin.fr>
+French			Guillaume Bernard <contact@guillaume-bernard.fr>
 Swedish			Daniel Nylander <po@danielnylander.se>
 Swedish			Andreas Ronnquist <gusnan.mailinglists@openmailbox.org>
 Turkish			Mehmet Atif Ergun <mehmetaergun@gmail.com>
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/ChangeLog liferea/ChangeLog
--- liferea_copy/ChangeLog	2017-04-21 11:45:45.557518685 +0200
+++ liferea/ChangeLog	2017-04-20 22:14:05.991686035 +0200
@@ -1,6 +1,31 @@
 Open problems before 1.12 release
 
 	* Article skimming currently broken
+	* Tray icon needs to be auto-disabled along with a popup
+	  informing users who previously had it enabled
+
+2017-03-26   Lars Windolf <lars.windolf@gmx.de>
+
+	Version 1.12-rc3
+
+	* Fixes #459: Fixes GtkDoc warnings
+	  (Leiaz)
+	* Fixes #415: Filter commands are not asynchronous
+	  (Rich Coe)
+	* Fixes #363: Missing space above internal browser address bar
+	  (reported by nekohayo, patch by Mikel Olasagasti)
+	* Fixes #208: All "Unread" search folder items marked read at once
+	  (Leiaz)
+	* Fixes #251: Liferea does not always use theme icons when it is launched
+	  on system startup (reported by GreenLunar, fix by Leiaz)
+
+	* Updated Finnish translation (Jorma Karvonen)
+	* Updated Latvian translation (Rihards Prieditis)
+	* Updated Albanian translation (Bensik Bleta)
+	* Updated Hungarian translation (Balázs Úr)
+	* Updated Brazlian translation (Rafael Ferreira)
+	* Updated French translation (Guillaume Bernard)
+
 
 2016-11-11   Lars Windolf <lars.windolf@gmx.de>
 
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/configure.ac liferea/configure.ac
--- liferea_copy/configure.ac	2017-04-21 11:45:45.557518685 +0200
+++ liferea/configure.ac	2017-04-20 22:14:05.991686035 +0200
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT([liferea],[1.12-rc2],[liferea-devel@lists.sourceforge.net])
+AC_INIT([liferea],[1.12-rc3],[liferea-devel@lists.sourceforge.net])
 AC_CANONICAL_HOST
 AC_CONFIG_SRCDIR([src/feedlist.c])
 
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/debian/changelog liferea/debian/changelog
--- liferea_copy/debian/changelog	2017-04-21 11:45:45.561518683 +0200
+++ liferea/debian/changelog	2017-04-20 22:14:05.991686035 +0200
@@ -1,3 +1,12 @@
+liferea (1.12~rc3-1) unstable; urgency=medium
+
+  * New upstream release
+    - Lets the 'Update Monitor' dialog expand (Closes: #860742)
+  * Drop 0001-Removing-GtkDoc-warnings.patch as that came from upstream
+    commits for this release
+
+ -- Paul Gevers <elbrus@debian.org>  Thu, 20 Apr 2017 19:43:39 +0200
+
 liferea (1.12~rc2-2) unstable; urgency=medium
 
   * Install dbus service file (Closes: #849808), appdata and convert files
Only in liferea_copy/debian/patches: 0001-Removing-GtkDoc-warnings.patch
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/debian/patches/series liferea/debian/patches/series
--- liferea_copy/debian/patches/series	2017-04-21 11:45:45.561518683 +0200
+++ liferea/debian/patches/series	2017-04-20 22:14:05.991686035 +0200
@@ -1,4 +1,3 @@
 debian-example-feeds.patch
 www-browser.patch
 drop_tests_from_build.patch
-0001-Removing-GtkDoc-warnings.patch
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/doc/html/headlines_en.html liferea/doc/html/headlines_en.html
--- liferea_copy/doc/html/headlines_en.html	2017-04-21 11:45:45.561518683 +0200
+++ liferea/doc/html/headlines_en.html	2017-04-20 22:14:05.995686034 +0200
@@ -79,7 +79,7 @@
 
 	<p>
 	You can change between these modes in the "View" menu. This
-	is a per-feed settting so you can view each feed in the mode
+	is a per-feed setting so you can view each feed in the mode
 	that fits best. The default viewing mode is "Normal View".
 	</p>
 	
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/doc/html/onlineservices_en.html liferea/doc/html/onlineservices_en.html
--- liferea_copy/doc/html/onlineservices_en.html	2017-04-21 11:45:45.561518683 +0200
+++ liferea/doc/html/onlineservices_en.html	2017-04-20 22:14:05.995686034 +0200
@@ -102,7 +102,7 @@
 	version 1.5.3.</p>
 
 	<p>TinyTinyRSS must be installed on your own server, which requires server
-	adminstration knowledge. Once installed, TinyTinyRSS behaves as any other
+	administration knowledge. Once installed, TinyTinyRSS behaves as any other
 	online service.</p>
 		
 	<!-- navigation footer start -->
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/doc/html/preferences_de.html liferea/doc/html/preferences_de.html
--- liferea_copy/doc/html/preferences_de.html	2017-04-21 11:45:45.561518683 +0200
+++ liferea/doc/html/preferences_de.html	2017-04-20 22:14:05.995686034 +0200
@@ -181,7 +181,7 @@
 	GNOME-Proxy-Einstellungen automatisch übernehmen.<br>
 	<br>
  	Zur Zeit erlaubt Liferea keine Angabe von Rechnern, für
-	die die Proxy-Einstellungen ignoriert werden soll.
+	die Proxy-Einstellungen ignoriert werden soll.
 	</li>
 	</ul>
 
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/doc/html/searching_en.html liferea/doc/html/searching_en.html
--- liferea_copy/doc/html/searching_en.html	2017-04-21 11:45:45.561518683 +0200
+++ liferea/doc/html/searching_en.html	2017-04-20 22:14:05.995686034 +0200
@@ -138,7 +138,7 @@
 	<tr><td style="background:#bfb">
 	<b>Podcast included</b>
 	</td><td>
-	<b>Adds</b> all items that contain an enclosure to the search search folder.
+	<b>Adds</b> all items that contain an enclosure to the search folder.
 	</td></tr>
 	<!-- ----------------------------------------- -->
 	<tr><td style="background:#fbb">
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/doc/html/subscriptions_en.html liferea/doc/html/subscriptions_en.html
--- liferea_copy/doc/html/subscriptions_en.html	2017-04-21 11:45:45.561518683 +0200
+++ liferea/doc/html/subscriptions_en.html	2017-04-20 22:14:05.995686034 +0200
@@ -118,7 +118,7 @@
 	</p>
 	
 	<p>The "General" pane allows you to set feed title and update
-	interval. The feed name is is the feed's name shown in the feed
+	interval. The feed name is the feed's name shown in the feed
 	list. Multiple feeds can have the same name.</p>
 	
 	<a name="updateInterval">
@@ -147,7 +147,7 @@
 			the global update interval. Then you should select the user
 			defined interval option and enter the interval value you want.
 			<em>When specifying an update interval, you should consider the
-			  web traffic you will cause with an inappropiate update
+			  web traffic you will cause with an inappropriate update
 			  interval. Don't update more often than the feed's content is
 			  updated.</em></dd>
 	
@@ -204,7 +204,7 @@
 	<p>
 	This tab allows you to disable the use of the global proxy setting and
 	to enable HTTP authentication when downloading the feed. Enable the checkbox 
-	and enter appropriate user and password values to use pasword-protected feeds. 
+	and enter appropriate user and password values to use password-protected feeds. 
 	Usually you won't need to use these settings because you will be asked username 
 	and password when subscribing to the feed that requires	authentication.
 	</p>
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/glade/about.ui liferea/glade/about.ui
--- liferea_copy/glade/about.ui	2017-04-21 11:45:45.565518682 +0200
+++ liferea/glade/about.ui	2017-04-20 22:14:05.995686034 +0200
@@ -120,6 +120,7 @@
 Trần Ngọc Quân
 Pauli Virtanen
 Jorma Karvonen
+Guillaume Bernard
 </property>
     <property name="logo_icon_name">liferea</property>
     <child internal-child="vbox">
Only in liferea/glade: liferea.css
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/glade/Makefile.am liferea/glade/Makefile.am
--- liferea_copy/glade/Makefile.am	2017-04-21 11:45:45.565518682 +0200
+++ liferea/glade/Makefile.am	2017-04-20 22:14:05.995686034 +0200
@@ -22,7 +22,8 @@
 	simple_subscription.ui \
 	theoldreader_source.ui \
 	ttrss_source.ui \
-	update_monitor.ui
+	update_monitor.ui \
+	liferea.css
 
 EXTRA_DIST = \
 	$(glade_DATA)
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/glade/simple_search.ui liferea/glade/simple_search.ui
--- liferea_copy/glade/simple_search.ui	2017-04-21 11:45:45.565518682 +0200
+++ liferea/glade/simple_search.ui	2017-04-20 22:14:05.995686034 +0200
@@ -1,64 +1,24 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
 <interface>
-  <requires lib="gtk+" version="2.18"/>
-  <!-- interface-naming-policy toplevel-contextual -->
+  <requires lib="gtk+" version="3.14"/>
   <object class="GtkDialog" id="simple_search">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="border_width">5</property>
     <property name="title" translatable="yes">Search All Feeds</property>
     <property name="resizable">False</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox17">
+      <object class="GtkBox" id="dialog-vbox17">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">2</property>
-        <child>
-          <object class="GtkVBox" id="vbox2614">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-            <property name="spacing">12</property>
-            <child>
-              <object class="GtkHBox" id="hbox92227">
-                <property name="visible">True</property>
-                <property name="spacing">12</property>
-                <child>
-                  <object class="GtkLabel" id="label222">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">_Search for:</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">searchentry</property>
-                  </object>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <object class="GtkEntry" id="searchentry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="tooltip_text" translatable="yes">Enter a search string Liferea should find either in a items title or in its content.</property>
-                  </object>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="padding">6</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area17">
+          <object class="GtkButtonBox" id="dialog-action_area17">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="layout_style">end</property>
             <child>
               <object class="GtkButton" id="closebutton2">
@@ -68,7 +28,7 @@
                 <property name="can_default">True</property>
                 <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <signal name="clicked" handler="gtk_widget_destroy" object="simple_search"/>
+                <signal name="clicked" handler="gtk_widget_destroy" object="simple_search" swapped="yes"/>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -111,10 +71,51 @@
           </object>
           <packing>
             <property name="expand">False</property>
+            <property name="fill">False</property>
             <property name="pack_type">end</property>
             <property name="position">0</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkGrid">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="hexpand">True</property>
+            <property name="border_width">5</property>
+            <property name="row_spacing">12</property>
+            <property name="column_spacing">12</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Search for:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">searchentry</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="searchentry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip_text" translatable="yes">Enter a search string Liferea should find either in a items title or in its content.</property>
+                <property name="hexpand">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
       </object>
     </child>
     <action-widgets>
@@ -122,5 +123,8 @@
       <action-widget response="2">advancedbtn</action-widget>
       <action-widget response="1">searchstartbtn</action-widget>
     </action-widgets>
+    <child>
+      <placeholder/>
+    </child>
   </object>
 </interface>
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/glade/update_monitor.ui liferea/glade/update_monitor.ui
--- liferea_copy/glade/update_monitor.ui	2017-04-21 11:45:45.565518682 +0200
+++ liferea/glade/update_monitor.ui	2017-04-20 22:14:05.995686034 +0200
@@ -1,166 +1,152 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
 <interface>
-  <requires lib="gtk+" version="2.18"/>
-  <!-- interface-naming-policy toplevel-contextual -->
+  <requires lib="gtk+" version="3.14"/>
   <object class="GtkDialog" id="update_monitor">
     <property name="visible">True</property>
+    <property name="can_focus">False</property>
     <property name="title" translatable="yes">Update Monitor</property>
     <property name="default_width">400</property>
     <property name="default_height">300</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox18">
+      <object class="GtkBox" id="dialog-vbox18">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area18">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button4">
+                <property name="label" translatable="yes">Cancel All</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <signal name="clicked" handler="on_cancel_all_requests_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button5">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="on_close_update_monitor_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
         <child>
-          <object class="GtkTable" id="table9">
+          <object class="GtkGrid">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="border_width">6</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">2</property>
-            <property name="column_spacing">6</property>
             <property name="row_spacing">6</property>
+            <property name="column_spacing">6</property>
             <child>
               <object class="GtkScrolledWindow" id="scrolledwindow9">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">automatic</property>
-                <property name="vscrollbar_policy">automatic</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <property name="shadow_type">in</property>
                 <child>
                   <object class="GtkTreeView" id="left">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="headers_visible">False</property>
+                    <child internal-child="selection">
+                      <object class="GtkTreeSelection"/>
+                    </child>
                   </object>
                 </child>
               </object>
               <packing>
+                <property name="left_attach">0</property>
                 <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
               </packing>
             </child>
             <child>
               <object class="GtkScrolledWindow" id="scrolledwindow10">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">automatic</property>
-                <property name="vscrollbar_policy">automatic</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <property name="shadow_type">in</property>
                 <child>
                   <object class="GtkTreeView" id="right">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="headers_visible">False</property>
+                    <child internal-child="selection">
+                      <object class="GtkTreeSelection"/>
+                    </child>
                   </object>
                 </child>
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
                 <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label229">
+              <object class="GtkLabel">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
+                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">Pending Requests</property>
+                <property name="xalign">0</property>
                 <attributes>
                   <attribute name="weight" value="bold"/>
                 </attributes>
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="top_attach">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label228">
+              <object class="GtkLabel">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
+                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">Downloading Now</property>
+                <property name="xalign">0</property>
                 <attributes>
                   <attribute name="weight" value="bold"/>
                 </attributes>
               </object>
               <packing>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area18">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="button4">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <signal name="clicked" handler="on_cancel_all_requests_clicked"/>
-                <child>
-                  <object class="GtkAlignment" id="alignment36">
-                    <property name="visible">True</property>
-                    <property name="xscale">0</property>
-                    <property name="yscale">0</property>
-                    <child>
-                      <object class="GtkHBox" id="hbox92233">
-                        <property name="visible">True</property>
-                        <property name="spacing">2</property>
-                        <child>
-                          <object class="GtkLabel" id="label227">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Cancel _All</property>
-                            <property name="use_underline">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button5">
-                <property name="label">gtk-close</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-                <signal name="clicked" handler="on_close_update_monitor_clicked"/>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
@@ -169,5 +155,8 @@
       <action-widget response="0">button4</action-widget>
       <action-widget response="-7">button5</action-widget>
     </action-widgets>
+    <child>
+      <placeholder/>
+    </child>
   </object>
 </interface>
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/opml/feedlist_fr.opml liferea/opml/feedlist_fr.opml
--- liferea_copy/opml/feedlist_fr.opml	2017-04-21 11:45:51.969516365 +0200
+++ liferea/opml/feedlist_fr.opml	2017-04-21 11:45:10.485531371 +0200
@@ -12,7 +12,7 @@
        <outline text="MozillaZine-Fr" htmlUrl="http://www.mozillazine-fr.org/"; xmlUrl="http://mozillazine-fr.org/contenu.xml"; />
        <outline text="LinuxFR" htmlUrl="http://linuxfr.org/"; xmlUrl="http://linuxfr.org/news.atom"; />
        <outline text="Le Monde.fr" htmlUrl="http://www.lemonde.fr/"; xmlUrl="http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml"; />
-       <outline text="Le Nouvel Observateur" htmlUrl="http://permanent.nouvelobs.com/"; xmlUrl="http://permanent.nouvelobs.com/rss_permanent.xml"; />
+       <outline text="Le Nouvel Observateur" htmlUrl="https://tempsreel.nouvelobs.com/"; xmlUrl="https://tempsreel.nouvelobs.com/rss.xml"; />
      </outline>
 
 	<!-- lets keep this default English block in sync over all feed lists! -->
Only in liferea_copy/pixmaps: attachment.png
Only in liferea_copy/pixmaps: directory.png
Only in liferea/pixmaps: emblem-important.png
Only in liferea_copy/pixmaps: flag.png
Only in liferea/pixmaps: folder.png
Only in liferea/pixmaps: folder-saved-search.png
Only in liferea/pixmaps: mail-attachment.png
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/pixmaps/Makefile.am liferea/pixmaps/Makefile.am
--- liferea_copy/pixmaps/Makefile.am	2017-04-21 11:45:45.565518682 +0200
+++ liferea/pixmaps/Makefile.am	2017-04-20 22:14:05.995686034 +0200
@@ -1,15 +1,15 @@
 SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable
 EXTRA_DIST = \
-	attachment.png	\
+	mail-attachment.png	\
 	available.png   \
 	available_offline.png \
 	default.png	\
-	directory.png   \
+	folder.png   \
 	empty.png       \
 	empty_offline.png \
-	flag.png        \
+	emblem-important.png        \
 	unread.png      \
-	vfolder.png     \
+	folder-saved-search.png     \
 	fl_opml.png	\
 	newsbin.png	
 
Only in liferea_copy/pixmaps: vfolder.png
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/feedlist.h liferea/src/feedlist.h
--- liferea_copy/src/feedlist.h	2017-04-21 11:45:52.121516310 +0200
+++ liferea/src/feedlist.h	2017-04-20 22:14:06.055686038 +0200
@@ -77,7 +77,7 @@
 /**
  * feedlist_get_unread_item_count:
  *
- * Query overall number of of unread items.
+ * Query overall number of unread items.
  *
  * Returns: overall number of unread items.
  */
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/liferea_application.c liferea/src/liferea_application.c
--- liferea_copy/src/liferea_application.c	2017-04-21 11:45:45.625518660 +0200
+++ liferea/src/liferea_application.c	2017-04-20 22:14:06.059686038 +0200
@@ -107,6 +107,11 @@
 static void
 on_app_activate (GtkApplication *gtk_app, gpointer user_data)
 {
+	gchar *css_filename;
+	GFile *css_file;
+	GtkCssProvider *provider;
+	GError *error = NULL;
+
 	GList		*list;
 	LifereaApplication *app = LIFEREA_APPLICATION (gtk_app);
 
@@ -117,6 +122,28 @@
 	} else {
 		liferea_shell_create (gtk_app, app->initialStateOption);
 	}
+
+	css_filename = g_build_filename (PACKAGE_DATA_DIR, PACKAGE, "liferea.css", NULL);
+	css_file = g_file_new_for_path (css_filename);
+	provider = gtk_css_provider_new ();
+
+	gtk_css_provider_load_from_file(provider, css_file, &error);
+
+	if (G_UNLIKELY (!gtk_css_provider_load_from_file(provider,
+							css_file,
+							&error)))
+	{
+		g_critical ("Could not load CSS data: %s", error->message);
+		g_clear_error (&error);
+	} else {
+		gtk_style_context_add_provider_for_screen (
+				gdk_screen_get_default(),
+				GTK_STYLE_PROVIDER (provider),
+				GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+	}
+	g_object_unref (provider);
+	g_object_unref (css_file);
+	g_free (css_filename);
 }
 
 /* Callback to the startup signal emitted only by the primary instance upon registration. */
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/net.c liferea/src/net.c
--- liferea_copy/src/net.c	2017-04-21 11:45:45.625518660 +0200
+++ liferea/src/net.c	2017-04-20 22:14:06.059686038 +0200
@@ -109,13 +109,13 @@
 
 /* Downloads a feed specified in the request structure, returns 
    the downloaded data or NULL in the request structure.
-   If the the webserver reports a permanent redirection, the
+   If the webserver reports a permanent redirection, the
    feed url will be modified and the old URL 'll be freed. The
    request structure will also contain the HTTP status and the
    last modified string.
  */
 void
-network_process_request (const updateJobPtr const job)
+network_process_request (const updateJobPtr job)
 {
 	SoupMessage	*msg;
 	SoupDate	*date;
@@ -259,14 +259,15 @@
 			soup_uri_set_port (uri, port);
 			soup_uri_set_user (uri, user);
 			soup_uri_set_password (uri, password);
+			soup_uri_set_path (uri, "/");
 
 			if (SOUP_URI_IS_VALID (uri)) {
 				/* Sets proxy-uri, this unsets proxy-resolver. */
 				g_object_set (G_OBJECT (session),
 					SOUP_SESSION_PROXY_URI, uri,
 					NULL);
-				soup_uri_free (uri);
 			}
+			soup_uri_free (uri);
 			break;
 	}
 }
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/node.c liferea/src/node.c
--- liferea_copy/src/node.c	2017-04-21 11:45:52.129516308 +0200
+++ liferea/src/node.c	2017-04-20 22:14:06.059686038 +0200
@@ -407,11 +407,8 @@
 	/* Load pixbuf for all widget based rendering */
 	if (node->icon) 
 		g_object_unref (node->icon);
-	if (node->largeIcon)
-		g_object_unref (node->largeIcon);
 
-	node->icon = favicon_load_from_cache (node->id, 16);
-	node->largeIcon = favicon_load_from_cache (node->id, 32);
+	node->icon = favicon_load_from_cache (node->id, 32);
 	
 	/* Create filename for HTML rendering */
 	g_free (node->iconFile);
@@ -432,12 +429,6 @@
 	return node->icon;
 }
 
-gpointer
-node_get_large_icon (nodePtr node)
-{
-	return node->largeIcon;
-}
-
 const gchar *
 node_get_favicon_file (nodePtr node)
 {
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/node.h liferea/src/node.h
--- liferea_copy/src/node.h	2017-04-21 11:45:52.129516308 +0200
+++ liferea/src/node.h	2017-04-20 22:14:06.059686038 +0200
@@ -56,11 +56,10 @@
 	guint			popupCount;	/*<< number of items to be notified */
 	guint			newCount;	/*<< number of recently downloaded items */
 
-	gchar			*title;		/*<< the label of the node in the feed list */
-	gpointer		icon;		/*<< 16x16 favicon GdkPixBuf (or NULL) */
-	gpointer		largeIcon;	/*<< 32x32 favicon GdkPixBuf (or NULL) */
-	gboolean		available;	/*<< availability of this node (usually the last downloading state) */
-	gboolean		expanded;	/*<< expansion state (for nodes with childs) */
+	gchar			*title;		/**< the label of the node in the feed list */
+	gpointer		icon;		/**< favicon GdkPixBuf (or NULL) */
+	gboolean		available;	/**< availability of this node (usually the last downloading state) */
+	gboolean		expanded;	/**< expansion state (for nodes with childs) */
 
 	/* item list state properties of this node */
 	nodeViewType		viewMode;	/*<< Viewing mode for this node (one of NODE_VIEW_MODE_*) */
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/node_type.h liferea/src/node_type.h
--- liferea_copy/src/node_type.h	2017-04-21 11:45:45.625518660 +0200
+++ liferea/src/node_type.h	2017-04-20 22:14:06.059686038 +0200
@@ -53,7 +53,7 @@
 typedef struct nodeType {
 	gulong		capabilities;	/**< bitmask of node type capabilities */
 	const gchar	*id;		/**< type id (used for type attribute in OPML export) */
-	const GdkPixbuf	*icon;		/**< default icon for nodes of this type (if no favicon available) */
+	const GIcon	*icon;		/**< default icon for nodes of this type (if no favicon available) */
 	
 	/* For method documentation see the wrappers defined below! 
 	   All methods are mandatory for each node type. */
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/feed_list_view.c liferea/src/ui/feed_list_view.c
--- liferea_copy/src/ui/feed_list_view.c	2017-04-21 11:45:45.629518659 +0200
+++ liferea/src/ui/feed_list_view.c	2017-04-20 22:14:06.063686038 +0200
@@ -254,7 +254,7 @@
 	/* Set up store */
 	feedstore = gtk_tree_store_new (FS_LEN,
 	                                G_TYPE_STRING,
-	                                GDK_TYPE_PIXBUF,
+	                                G_TYPE_ICON,
 	                                G_TYPE_POINTER,
 	                                G_TYPE_UINT,
 					G_TYPE_STRING);
@@ -284,7 +284,7 @@
 	gtk_tree_view_column_pack_start (column, titleRenderer, TRUE);
 	gtk_tree_view_column_pack_end (column2, countRenderer, FALSE);
 	
-	gtk_tree_view_column_add_attribute (column, iconRenderer, "pixbuf", FS_ICON);
+	gtk_tree_view_column_add_attribute (column, iconRenderer, "gicon", FS_ICON);
 	gtk_tree_view_column_add_attribute (column, titleRenderer, "markup", FS_LABEL);
 	gtk_tree_view_column_add_attribute (column2, countRenderer, "markup", FS_COUNT);
 
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/icons.c liferea/src/ui/icons.c
--- liferea_copy/src/ui/icons.c	2017-04-21 11:45:52.133516306 +0200
+++ liferea/src/ui/icons.c	2017-04-20 22:14:06.063686038 +0200
@@ -26,7 +26,7 @@
 
 #include "common.h"
 
-static GdkPixbuf *icons[MAX_ICONS];	/*<< list of icon assignments */
+static GIcon *icons[MAX_ICONS];	/**< list of icon assignments */
 
 static gchar *
 icon_find_pixmap_file (const gchar *filename)
@@ -65,84 +65,44 @@
 	return pixbuf;
 }
 
-static GdkPixbuf *
-icon_get_from_theme (GtkIconTheme *icon_theme, const gchar *name, gint size)
-{
-	GError *error = NULL;
-	GdkPixbuf *pixbuf;
-
-	pixbuf = gtk_icon_theme_load_icon (icon_theme,
-	                                   name, /* icon name */
-	                                   size, /* size */
-	                                   0,  /* flags */
-	                                   &error);
-	if (!pixbuf) {
-		g_warning ("Couldn't load icon: %s", error->message);
-		g_error_free (error);
-	}
-	return pixbuf;
-}
-
 void
 icons_load (void)
 {
 	GtkIconTheme	*icon_theme;
 	gint		i;
-	
-	/* first try to load icons from theme */
-	static const gchar *iconThemeNames[] = {
-		NULL,			/* ICON_UNREAD */
+	gchar 		*path;
+
+	path = g_build_filename (PACKAGE_DATA_DIR G_DIR_SEPARATOR_S PACKAGE G_DIR_SEPARATOR_S "pixmaps", NULL);
+	icon_theme = gtk_icon_theme_get_default ();
+
+	gtk_icon_theme_append_search_path (icon_theme, path);
+
+	static const gchar *iconNames[] = {
+		"unread",		/* ICON_UNREAD */
 		"emblem-important",	/* ICON_FLAG */
-		NULL,			/* ICON_AVAILABLE */
-		NULL,			/* ICON_AVAILABLE_OFFLINE */
+		"available",	/* ICON_AVAILABLE */
+		"available_offline",	/* ICON_AVAILABLE_OFFLINE */
 		"dialog-error",		/* ICON_UNAVAILABLE */
-		NULL,			/* ICON_DEFAULT */
+		"default",		/* ICON_DEFAULT */
 		"folder",		/* ICON_FOLDER */
 		"folder-saved-search",	/* ICON_VFOLDER */
-		NULL,			/* ICON_NEWSBIN */
-		NULL,			/* ICON_EMPTY */
-		NULL,			/* ICON_EMPTY_OFFLINE */
+		"newsbin",		/* ICON_NEWSBIN */
+		"empty",		/* ICON_EMPTY */
+		"empty_offline",	/* ICON_EMPTY_OFFLINE */
 		"gtk-connect",		/* ICON_ONLINE */
 		"gtk-disconnect",	/* ICON_OFFLINE */
 		"mail-attachment",	/* ICON_ENCLOSURE */
 		NULL
 	};
 
-	icon_theme = gtk_icon_theme_get_default ();
-	for (i = 0; i < MAX_ICONS; i++)
-		if (iconThemeNames[i])
-			icons[i] = icon_get_from_theme (icon_theme, iconThemeNames[i], 16);
-
-	/* and then load own default icons */
-	static const gchar *iconNames[] = {
-		"unread.png",		/* ICON_UNREAD */
-		"flag.png",		/* ICON_FLAG */
-		"available.png",	/* ICON_AVAILABLE */
-		"available_offline.png",	/* ICON_AVAILABLE_OFFLINE */
-		NULL,			/* ICON_UNAVAILABLE */
-		"default.png",		/* ICON_DEFAULT */
-		"directory.png",	/* ICON_FOLDER */
-		"vfolder.png",		/* ICON_VFOLDER */
-		"newsbin.png",		/* ICON_NEWSBIN */
-		"empty.png",		/* ICON_EMPTY */
-		"empty_offline.png",	/* ICON_EMPTY_OFFLINE */
-		"online.png",		/* ICON_ONLINE */
-		"offline.png",		/* ICON_OFFLINE */
-		"attachment.png",	/* ICON_ENCLOSURE */
-		NULL
-	};
-
 	for (i = 0; i < MAX_ICONS; i++)
-		if (!icons[i])
-			icons[i] = icon_create_from_file (iconNames[i]);
+		icons[i] = g_themed_icon_new (iconNames[i]);
 }
 
-const GdkPixbuf *
+const GIcon *
 icon_get (lifereaIcon icon)
 {
 	g_assert (NULL != *icons);		
 
 	return icons[icon];
 }
-
-
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/icons.h liferea/src/ui/icons.h
--- liferea_copy/src/ui/icons.h	2017-04-21 11:45:52.133516306 +0200
+++ liferea/src/ui/icons.h	2017-04-20 22:14:06.063686038 +0200
@@ -54,23 +54,23 @@
 
 /**
  * icon_get:
- * @icon:	the icon
+ * Returns a GIcon for the requested item.
  *
- * Returns a GdkPixbuf for the requested item.
+ * @icon:	the icon
  *
- * Returns: (transfer none): GdkPixbuf
+ * Returns: (transfer none): GIcon
  */
-const GdkPixbuf * icon_get (lifereaIcon icon);
+const GIcon * icon_get (lifereaIcon icon);
 
 /**
  * icon_create_from_file:
- * @file name:	the name of the file
+ * @filename:	the name of the file
  *
  * Takes a file name relative to "pixmaps" directory and tries to load the 
  * image into a GdkPixbuf. Can be used to load icons not in lifereaIcon
  * on demand.
  *
- * Returns: (transfer none): a new pixbuf or NULL
+ * Returns: (transfer full): a new pixbuf or NULL
  */
 GdkPixbuf * icon_create_from_file (const gchar *filename);
 
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/item_list_view.c liferea/src/ui/item_list_view.c
--- liferea_copy/src/ui/item_list_view.c	2017-04-21 11:45:52.133516306 +0200
+++ liferea/src/ui/item_list_view.c	2017-04-20 22:14:06.063686038 +0200
@@ -291,11 +291,11 @@
 	                    G_TYPE_UINT64,	/* IS_TIME */
 	                    G_TYPE_STRING, 	/* IS_TIME_STR */
 	                    G_TYPE_STRING,	/* IS_LABEL */
-	                    GDK_TYPE_PIXBUF,	/* IS_STATEICON */
+	                    G_TYPE_ICON,	/* IS_STATEICON */
 	                    G_TYPE_ULONG,	/* IS_NR */
 	                    G_TYPE_POINTER,	/* IS_PARENT */
-	                    GDK_TYPE_PIXBUF,	/* IS_FAVICON */
-	                    GDK_TYPE_PIXBUF,	/* IS_ENCICON */
+	                    G_TYPE_ICON,	/* IS_FAVICON */
+	                    G_TYPE_ICON,	/* IS_ENCICON */
 	                    G_TYPE_BOOLEAN,	/* IS_ENCLOSURE */
 	                    G_TYPE_POINTER,	/* IS_SOURCE */
 	                    G_TYPE_UINT,	/* IS_STATE */
@@ -311,12 +311,17 @@
 	GtkTreeModel	*model;
 	itemPtr		item = NULL;
 
-	if (gtk_tree_selection_get_selected (selection, &model, &iter))
-		item = item_load (item_list_view_iter_to_id (ITEM_LIST_VIEW (user_data), &iter));
-
-	liferea_shell_update_item_menu (NULL != item);
-	if (item)
-		itemlist_selection_changed (item);
+	if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+		gulong id = item_list_view_iter_to_id (ITEM_LIST_VIEW (user_data), &iter);
+		if (id != itemlist_get_selected_id ()) {
+			item = item_load (id);
+			liferea_shell_update_item_menu (NULL != item);
+			if (item)
+				itemlist_selection_changed (item);
+		}
+	} else {
+		liferea_shell_update_item_menu (FALSE);
+	}
 }
 
 static void
@@ -463,7 +468,7 @@
 	GtkTreeStore	*itemstore;
 	GtkTreeIter	iter;
 	gchar		*title, *time_str;
-	const GdkPixbuf	*state_icon;
+	const GIcon	*state_icon;
 	
 	if (!item_list_view_id_to_iter (ilv, item->id, &iter))
 		return;
@@ -754,7 +759,7 @@
 	item_list_view_set_tree_store (ilv, item_list_view_create_tree_store ());
 
 	renderer = gtk_cell_renderer_pixbuf_new ();
-	column = gtk_tree_view_column_new_with_attributes ("", renderer, "pixbuf", IS_STATEICON, NULL);
+	column = gtk_tree_view_column_new_with_attributes ("", renderer, "gicon", IS_STATEICON, NULL);
 	gtk_tree_view_append_column (ilv->priv->treeview, column);
 	ilv->priv->stateColumn = column;
 	gtk_tree_view_column_set_sort_column_id (column, IS_STATE);
@@ -762,7 +767,7 @@
 		gtk_tree_view_column_set_visible (column, FALSE);
 	
 	renderer = gtk_cell_renderer_pixbuf_new ();
-	column = gtk_tree_view_column_new_with_attributes ("", renderer, "pixbuf", IS_ENCICON, NULL);
+	column = gtk_tree_view_column_new_with_attributes ("", renderer, "gicon", IS_ENCICON, NULL);
 	gtk_tree_view_append_column (ilv->priv->treeview, column);
 	ilv->priv->enclosureColumn = column;
 
@@ -780,7 +785,13 @@
 	}
 
 	renderer = gtk_cell_renderer_pixbuf_new ();
-	column = gtk_tree_view_column_new_with_attributes ("", renderer, "pixbuf", IS_FAVICON, NULL);
+	column = gtk_tree_view_column_new_with_attributes ("", renderer, "gicon", IS_FAVICON, NULL);
+	if (wide) {
+		g_object_set (renderer, "stock-size", GTK_ICON_SIZE_DND, NULL);
+	} else {
+		g_object_set (renderer, "stock-size", GTK_ICON_SIZE_SMALL_TOOLBAR, NULL);
+	}
+
 	gtk_tree_view_column_set_sort_column_id (column, IS_SOURCE);
 	gtk_tree_view_append_column (ilv->priv->treeview, column);
 	ilv->priv->faviconColumn = column;
@@ -847,7 +858,7 @@
 		                       IS_TIME, (guint64)item->time,
 		                       IS_NR, item->id,
 				       IS_PARENT, node,
-		                       IS_FAVICON, ilv->priv->wideView?node_get_large_icon (node):node_get_icon (node),
+		                       IS_FAVICON, node_get_icon (node),
 		                       IS_ENCICON, item->hasEnclosure?icon_get (ICON_ENCLOSURE):NULL,
 				       IS_ENCLOSURE, item->hasEnclosure,
 				       IS_SOURCE, node,
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/liferea_htmlview.c liferea/src/ui/liferea_htmlview.c
--- liferea_copy/src/ui/liferea_htmlview.c	2017-04-21 11:45:45.633518657 +0200
+++ liferea/src/ui/liferea_htmlview.c	2017-04-20 22:14:06.067686038 +0200
@@ -393,7 +393,7 @@
 void
 liferea_htmlview_location_changed (LifereaHtmlView *htmlview, const gchar *location)
 {
-	if (g_strcmp0 (location, "file:///")) {
+	if (g_strcmp0 (location, "file:///") && g_strcmp0 (location, "file://")) {
 		/* A URI different from the locally generated html base url is being loaded. */
 		htmlview->priv->internal = FALSE;
 	}
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/popup_menu.c liferea/src/ui/popup_menu.c
--- liferea_copy/src/ui/popup_menu.c	2017-04-21 11:45:45.633518657 +0200
+++ liferea/src/ui/popup_menu.c	2017-04-20 22:14:06.067686038 +0200
@@ -336,7 +336,7 @@
 		if (writeableFeedlist) {
 			gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_separator_menu_item_new ());
 			ui_popup_add_menuitem (menu, _("_Delete"), ui_popup_delete, node, 0);
-			ui_popup_add_menuitem (menu, _("_Preferences"), ui_popup_properties, node, 0);
+			ui_popup_add_menuitem (menu, _("_Properties"), ui_popup_properties, node, 0);
 		}
 
 		if (IS_NODE_SOURCE (node) && NODE_SOURCE_TYPE (node)->capabilities & NODE_SOURCE_CAPABILITY_CONVERT_TO_LOCAL) {
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/search_dialog.c liferea/src/ui/search_dialog.c
--- liferea_copy/src/ui/search_dialog.c	2017-04-21 11:45:45.633518657 +0200
+++ liferea/src/ui/search_dialog.c	2017-04-20 22:14:06.067686038 +0200
@@ -163,7 +163,7 @@
 		return search;
 		
 	sd = SEARCH_DIALOG (g_object_new (SEARCH_DIALOG_TYPE, NULL));
-	sd->priv->dialog = liferea_dialog_new ("search_dialog");
+	sd->priv->dialog = liferea_dialog_new ("search");
 	
 	if (query)
 		itemset_add_rule (sd->priv->vfolder->itemset, "exact", query, TRUE);
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/ui/ui_update.c liferea/src/ui/ui_update.c
--- liferea_copy/src/ui/ui_update.c	2017-04-21 11:45:45.633518657 +0200
+++ liferea/src/ui/ui_update.c	2017-04-20 22:14:06.067686038 +0200
@@ -52,16 +52,20 @@
 
 static void ui_update_merge_request(nodePtr node, GtkTreeStore *store, GHashTable *hash) {
 	GtkTreeIter	*iter;
+        gchar           *title;
 
 	if(NULL != (iter = (GtkTreeIter *)g_hash_table_lookup(hash, (gpointer)node->id)))
 		return;
 
 	iter = g_new0(GtkTreeIter, 1);
 	gtk_tree_store_append(store, iter, NULL);
-	gtk_tree_store_set(store, iter, UM_REQUEST_TITLE, node_get_title(node), 
+        title = g_markup_escape_text (node_get_title (node), -1);
+	gtk_tree_store_set(store, iter, UM_REQUEST_TITLE, title,
 	                                UM_FAVICON, node_get_icon(node),
 	                                -1);
 	g_hash_table_insert(hash, (gpointer)node->id, (gpointer)iter);
+
+        g_free (title);
 }
 
 static void
@@ -144,7 +148,7 @@
 		
 		/* Set up left store and view */
 		view = GTK_TREE_VIEW(liferea_dialog_lookup(umdialog, "left"));
-		um1store = gtk_tree_store_new(UM_LEN, GDK_TYPE_PIXBUF, G_TYPE_STRING);
+		um1store = gtk_tree_store_new(UM_LEN, G_TYPE_ICON, G_TYPE_STRING);
 		gtk_tree_view_set_model(view, GTK_TREE_MODEL(um1store));
 
 		textRenderer = gtk_cell_renderer_text_new();
@@ -153,13 +157,13 @@
 	
 		gtk_tree_view_column_pack_start(column, iconRenderer, FALSE);
 		gtk_tree_view_column_pack_start(column, textRenderer, TRUE);
-		gtk_tree_view_column_add_attribute(column, iconRenderer, "pixbuf", UM_FAVICON);
+		gtk_tree_view_column_add_attribute(column, iconRenderer, "gicon", UM_FAVICON);
 		gtk_tree_view_column_add_attribute(column, textRenderer, "markup", UM_REQUEST_TITLE);
 		gtk_tree_view_append_column(view, column);
 		
 		/* Set up right store and view */
 		view = GTK_TREE_VIEW(liferea_dialog_lookup(umdialog, "right"));
-		um2store = gtk_tree_store_new(UM_LEN, GDK_TYPE_PIXBUF, G_TYPE_STRING);
+		um2store = gtk_tree_store_new(UM_LEN, G_TYPE_ICON, G_TYPE_STRING);
 		gtk_tree_view_set_model(view, GTK_TREE_MODEL(um2store));
 
 		textRenderer = gtk_cell_renderer_text_new();
@@ -168,7 +172,7 @@
 	
 		gtk_tree_view_column_pack_start(column, iconRenderer, FALSE);
 		gtk_tree_view_column_pack_start(column, textRenderer, TRUE);
-		gtk_tree_view_column_add_attribute(column, iconRenderer, "pixbuf", UM_FAVICON);
+		gtk_tree_view_column_add_attribute(column, iconRenderer, "gicon", UM_FAVICON);
 		gtk_tree_view_column_add_attribute(column, textRenderer, "markup", UM_REQUEST_TITLE);
 		gtk_tree_view_append_column(view, column);		
 		
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/update.c liferea/src/update.c
--- liferea_copy/src/update.c	2017-04-21 11:45:45.633518657 +0200
+++ liferea/src/update.c	2017-04-20 22:14:06.071686039 +0200
@@ -579,6 +579,21 @@
 	return FALSE;
 }
 
+static void
+update_apply_filter_async(GTask *task, gpointer src, gpointer tdata, GCancellable *ccan)
+{
+    updateJobPtr job = tdata;
+    update_apply_filter(job);
+    g_task_return_int(task, 0);
+}
+
+static void
+update_apply_filter_finish(GObject *src, GAsyncResult *result, gpointer user_data)
+{
+    updateJobPtr job = user_data;
+    g_idle_add(update_process_result_idle_cb, job);
+}
+
 void
 update_process_finished_job (updateJobPtr job)
 {
@@ -596,8 +611,13 @@
 	} 
 
 	/* Finally execute the postfilter */
-	if (job->result->data && job->request->filtercmd) 
-		update_apply_filter (job);
+	if (job->result->data && job->request->filtercmd) {
+                GTask *task = g_task_new(NULL, NULL, update_apply_filter_finish, job);
+                g_task_set_task_data(task, job, NULL);
+                g_task_run_in_thread(task, update_apply_filter_async);
+                g_object_unref(task);
+                return;
+        }
 		
 	g_idle_add (update_process_result_idle_cb, job);
 }
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/src/webkit/webkit.c liferea/src/webkit/webkit.c
--- liferea_copy/src/webkit/webkit.c	2017-04-21 11:45:45.633518657 +0200
+++ liferea/src/webkit/webkit.c	2017-04-20 22:14:06.071686039 +0200
@@ -575,12 +575,54 @@
 static void
 liferea_webkit_set_proxy (ProxyDetectMode mode, const gchar *host, guint port, const gchar *user, const gchar *pwd)
 {
-	/*
-	 * FIXME
-	 *  Webkit2 uses global proxy settings :
-	 *  https://bugs.webkit.org/show_bug.cgi?id=128674
-	 *  https://bugs.webkit.org/show_bug.cgi?id=113663
-	 */
+#if WEBKIT_CHECK_VERSION (2, 15, 3)
+	WebKitNetworkProxySettings *proxy_settings = NULL;
+	gchar *proxy_uri = NULL;
+	gchar *user_pass = NULL, *host_port = NULL;
+
+	switch (mode) {
+		case PROXY_DETECT_MODE_AUTO:
+			webkit_web_context_set_network_proxy_settings (webkit_web_context_get_default (), WEBKIT_NETWORK_PROXY_MODE_DEFAULT, NULL);
+			break;
+		case PROXY_DETECT_MODE_NONE:
+			webkit_web_context_set_network_proxy_settings (webkit_web_context_get_default (), WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, NULL);
+			break;
+		case PROXY_DETECT_MODE_MANUAL:
+			/* Construct user:password part of the URI if specified. */
+			if (user) {
+				user_pass = g_uri_escape_string (user, NULL, TRUE);
+				if (pwd) {
+					gchar *enc_user = user_pass;
+					gchar *enc_pass = g_uri_escape_string (pwd, NULL, TRUE);
+					user_pass = g_strdup_printf ("%s:%s", enc_user, enc_pass);
+					g_free (enc_user);
+					g_free (enc_pass);
+				}
+			}
+
+			/* Construct the host:port part of the URI. */
+			if (port) {
+				host_port = g_strdup_printf ("%s:%d", host, port);
+			} else {
+				host_port = g_strdup (host);
+			}
+
+			/* Construct proxy URI. */
+			if (user) {
+				proxy_uri = g_strdup_printf("http://%s@%s";, user_pass, host_port);
+			} else {
+				proxy_uri = g_strdup_printf("http://%s";, host_port);
+			}
+
+			g_free (user_pass);
+			g_free (host_port);
+			proxy_settings = webkit_network_proxy_settings_new (proxy_uri, NULL);
+			g_free (proxy_uri);
+			webkit_web_context_set_network_proxy_settings (webkit_web_context_get_default (), WEBKIT_NETWORK_PROXY_MODE_CUSTOM, proxy_settings);
+			webkit_network_proxy_settings_free (proxy_settings);
+			break;
+	}
+#endif
 }
 
 static struct
@@ -594,7 +636,7 @@
 	.hasSelection	= NULL,  /* Was only useful for the context menu, can be removed */
 	.copySelection	= liferea_webkit_copy_selection, /* Same. */
 	.scrollPagedown	= liferea_webkit_scroll_pagedown,
-	.setProxy	= NULL, // FIXME: readd later
+	.setProxy	= liferea_webkit_set_proxy,
 	.setOffLine	= NULL // FIXME: blocked on https://bugs.webkit.org/show_bug.cgi?id=18893
 };
 
diff -U3 '--exclude=.pc' '--exclude=.git' '--exclude=*.po' --recursive liferea_copy/.travis.yml liferea/.travis.yml
--- liferea_copy/.travis.yml	2017-04-21 11:45:45.557518685 +0200
+++ liferea/.travis.yml	2017-04-20 22:14:05.987686034 +0200
@@ -1,14 +1,24 @@
 language: c
+sudo: false
 
 script:
   - ./autogen.sh
   - ./configure && make
-  - sudo make install
 
 compiler:
   - clang
   - gcc
 
-before_install:
-  - sudo apt-get update -qq
-  - sudo apt-get install -y intltool libxml2-dev libxslt1-dev libgtk-3-dev libwebkit2gtk-4.0-dev libpeas-dev libsqlite3-dev libjson-glib-dev libgirepository1.0-dev gsettings-desktop-schemas-dev
+addons:
+  apt:
+    packages:
+      - intltool
+      - libxml2-dev
+      - libxslt1-dev
+      - libgtk-3-dev
+      - libwebkit2gtk-4.0-dev
+      - libpeas-dev
+      - libsqlite3-dev
+      - libjson-glib-dev
+      - libgirepository1.0-dev
+      - gsettings-desktop-schemas-dev

Reply to: