Your message dated Tue, 25 Apr 2017 06:05:00 +0000
with message-id <[email protected]>
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 [email protected]
immediately.)


-- 
860917: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860917
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
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 <[email protected]>
 Japanese                IWAI, Masaharu <[email protected]>
 French                 Vincent Lefèvre <[email protected]>
-French                 Guillaume Bernard <[email protected]>
+French                 Guillaume Bernard <[email protected]>
 Swedish                        Daniel Nylander <[email protected]>
 Swedish                        Andreas Ronnquist 
<[email protected]>
 Turkish                        Mehmet Atif Ergun <[email protected]>
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 <[email protected]>
+
+       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 <[email protected]>
 
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],[[email protected]])
+AC_INIT([liferea],[1.12-rc3],[[email protected]])
 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 <[email protected]>  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 via email to