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

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



Your message dated Tue, 25 Apr 2017 06:05:00 +0000
with message-id <af9c24be-f40f-7fb0-d49a-73c7b493caed@thykier.net>
and subject line Re: Bug#860917: unblock (pre-approval): liferea/1.12~rc3-1
has caused the Debian Bug report #860917,
regarding unblock (pre-approval): liferea/1.12~rc3-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
860917: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860917
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
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

--- End Message ---
--- Begin Message ---
Paul Gevers:
> Control: tags -1 -moreinfo
> 
> On 23-04-17 14:46, Niels Thykier wrote:
>>> unblock liferea/1.12~rc3-1
>>
>> Ack, please go ahead and remove the moreinfo tag once the package is in
>> unstable and has been compiled on all relevant release architectures.
> 
> Thanks. Uploaded and build on all release architectures.
> 
> Paul
> 

Unblocked, thanks.

~Niels

--- End Message ---

Reply to: