Package: release.debian.org
Severity: normal
User: release.debian....@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 <hmat...@users.sourceforge.jp>
 Japanese                IWAI, Masaharu <iwaim....@gmail.com>
 French                 Vincent Lefèvre <vinc...@vinc17.org>
-French                 Guillaume Bernard <transl...@filorin.fr>
+French                 Guillaume Bernard <cont...@guillaume-bernard.fr>
 Swedish                        Daniel Nylander <p...@danielnylander.se>
 Swedish                        Andreas Ronnquist 
<gusnan.mailingli...@openmailbox.org>
 Turkish                        Mehmet Atif Ergun <mehmetaer...@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.wind...@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.wind...@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-de...@lists.sourceforge.net])
+AC_INIT([liferea],[1.12-rc3],[liferea-de...@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 <elb...@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 via email to