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