diff options
65 files changed, 118 insertions, 1659 deletions
| @@ -1,3 +1,9 @@ +Shotwell 0.30.7 - 20 Aug 2019 +  * Fix compatibility with Vala 0.46 + +Shotwell 0.30.6 - 20 Aug 2019 +  * Fix issue with Flickr authentication introduced in 0.30.5 +  Shotwell 0.30.5 - 14 Aug 2019    * Update appdata release information    * Fix crash in Piwigo if system certificate store is empty diff --git a/debian/changelog b/debian/changelog index 485e033..adb6c3e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +shotwell (0.30.7-1) unstable; urgency=medium + +  * New upstream release: +    - New debian/patches/0115-fix_meson_build.patch to fix FTBFS. +    - debian/control: Add cmake to Build-Depends. +  * Declare compliance with Debian Policy 4.4.1 (No changes needed). +  * debian/control: +    - Add Rules-Requires-Root: binary-targets. +  * Remove unused patches. + + -- Jörg Frings-Fürst <debian@jff.email>  Mon, 07 Oct 2019 16:38:02 +0200 +  shotwell (0.30.5-1) unstable; urgency=medium    * New upstream release. diff --git a/debian/control b/debian/control index 0691e8b..745f9ae 100644 --- a/debian/control +++ b/debian/control @@ -4,6 +4,7 @@ Priority: optional  Maintainer: Jörg Frings-Fürst <debian@jff.email>  Build-Depends:   appstream-util, + cmake,   debhelper (>= 12),   desktop-file-utils,   gnome-doc-utils, @@ -31,8 +32,9 @@ Build-Depends:   libxml2 (>= 2.6.32),   meson,   ninja-build, - valac (>= 0.22.0) -Standards-Version: 4.4.0 + valac (>= 0.46.0) +Standards-Version: 4.4.1 +Rules-Requires-Root: binary-targets  Homepage: https://wiki.gnome.org/Apps/Shotwell  Vcs-Git: git://jff.email/opt/git/shotwell.git  Vcs-Browser: https://jff.email/cgit/shotwell.git diff --git a/debian/patches/0001-buildflags.patch b/debian/patches/0001-buildflags.patch deleted file mode 100644 index 91ca3a0..0000000 --- a/debian/patches/0001-buildflags.patch +++ /dev/null @@ -1,20 +0,0 @@ -Description: Poke requested Debian buildflags for hardening into Makefile -Author: Jörg Frings-Fürst <debian@jff-webhosting.net> -Last-Update: 2015-01-07 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: trunk/Makefile -=================================================================== ---- trunk.orig/Makefile -+++ trunk/Makefile -@@ -385,8 +385,8 @@ PLUGIN_CFLAGS = -O2 -g -pipe - endif - endif -  --CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS) --PLUGIN_CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS) -+CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS) -fstack-protector-strong -+PLUGIN_CFLAGS += $(PROFILE_FLAGS) $(REQUIRED_CFLAGS) -fPIC -fno-stack-protector -  - # Required for gudev-1.0 - CFLAGS += -DG_UDEV_API_IS_SUBJECT_TO_CHANGE diff --git a/debian/patches/0005-hardening.patch b/debian/patches/0005-hardening.patch deleted file mode 100644 index c8abeea..0000000 --- a/debian/patches/0005-hardening.patch +++ /dev/null @@ -1,38 +0,0 @@ -Description: pass compiler flags set in debian/rules to compiler -Author: Devid Antonio Filoni <d.filoni@ubuntu.com> - -Index: trunk/Makefile -=================================================================== ---- trunk.orig/Makefile -+++ trunk/Makefile -@@ -35,7 +35,7 @@ CORE_SUPPORTED_LANGUAGES=$(shell cat po/ - LOCAL_LANG_DIR=locale-langpack - SYSTEM_LANG_DIR := $(DESTDIR)$(PREFIX)/share/locale -  --VALAFLAGS := -g --enable-checking --target-glib=2.32 --thread --fatal-warnings --enable-experimental --enable-deprecated $(USER_VALAFLAGS) -+VALAFLAGS := $(foreach w,$(CPPFLAGS) $(CFLAGS) $(LDFLAGS),-X $(w)) --enable-checking --target-glib=2.32 --thread --enable-experimental --enable-deprecated $(USER_VALAFLAGS) - ifdef UNITY_SUPPORT - VALAFLAGS := $(VALAFLAGS) --define UNITY_SUPPORT - endif -@@ -661,7 +661,7 @@ $(EXPANDED_C_FILES): $(VALA_STAMP) - 	@ -  - $(EXPANDED_OBJ_FILES): %.o: %.c $(CONFIG_IN) Makefile --	$(CC) -c $(VALA_CFLAGS) $(CFLAGS) -o $@ $< -+	$(CC) -c $(VALA_CFLAGS) $(CPPFLAGS) $(CFLAGS) -o $@ $< -  - $(PROGRAM): $(EXPANDED_OBJ_FILES) $(RESOURCES) $(LANG_STAMP) $(THUMBNAILER_BIN) misc/gschemas.compiled $(DOC_LANG_STAMP) - 	$(CC) $(EXPANDED_OBJ_FILES) $(CFLAGS) $(LDFLAGS) $(RESOURCES) $(VALA_LDFLAGS) $(EXPORT_FLAGS) -o $@ -Index: trunk/plugins/Makefile.plugin.mk -=================================================================== ---- trunk.orig/plugins/Makefile.plugin.mk -+++ trunk/plugins/Makefile.plugin.mk -@@ -42,7 +42,7 @@ PLUGIN_EXTRAFLAGS ?= --vapidir=../common - PLUGIN_EXTRALINKFLAGS ?= -L../common/ -lshotwell-plugin-common -  - .stamp: $(SRC_FILES) $(MAKE_FILES) $(HEADER_FILES) --	$(VALAC) --target-glib=$(MIN_GLIB_VERSION) -g --enable-checking --fatal-warnings --ccode --enable-deprecated \ -+	$(VALAC) --target-glib=$(MIN_GLIB_VERSION) -g --enable-checking --ccode --enable-deprecated \ - 		--vapidir=../ $(foreach pkg,$(PKGS),--pkg=$(pkg)) $(foreach pkg,$(CUSTOM_VAPI_PKGS),--pkg=$(pkg)) \ - 		$(USER_VALAFLAGS) \ - 		$(PLUGIN_EXTRAFLAGS) \ diff --git a/debian/patches/0010-libexec.patch b/debian/patches/0010-libexec.patch deleted file mode 100644 index 0e06218..0000000 --- a/debian/patches/0010-libexec.patch +++ /dev/null @@ -1,16 +0,0 @@ -Description: do not install files in libexec directory -Author: Luca Falavigna <dktrkranz@debian.org> - -Index: shotwell-0.15.0/Makefile -=================================================================== ---- shotwell-0.15.0.orig/Makefile	2013-10-13 09:51:58.893357001 +0200 -+++ shotwell-0.15.0/Makefile	2013-10-13 09:54:33.885361749 +0200 -@@ -27,7 +27,7 @@ -  - -include configure.mk - ifndef LIBEXECDIR --LIBEXECDIR=$(PREFIX)/libexec/shotwell -+LIBEXECDIR=$(PREFIX)/share/shotwell - endif -  - CORE_SUPPORTED_LANGUAGES=$(shell cat po/LINGUAS) diff --git a/debian/patches/0100-ios8.patch b/debian/patches/0100-ios8.patch deleted file mode 100644 index 8844861..0000000 --- a/debian/patches/0100-ios8.patch +++ /dev/null @@ -1,103 +0,0 @@ -Description: Reset iOS 8 devices to download files -Origin: https://bugzilla.gnome.org/show_bug.cgi?id=742295#c22 -Bug: https://bugzilla.gnome.org/show_bug.cgi?id=742295 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=792016 -Last-Update: 2016-11-25 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: trunk/src/camera/ImportPage.vala -=================================================================== ---- trunk.orig/src/camera/ImportPage.vala -+++ trunk/src/camera/ImportPage.vala -@@ -773,6 +773,15 @@ public class ImportPage : CheckerboardPa -     ~ImportPage() { -         LibraryPhoto.global.contents_altered.disconnect(on_media_added_removed); -         Video.global.contents_altered.disconnect(on_media_added_removed); -+ -+        // iOS 8 issue. Release the camera here -+        if (camera != null) { -+          GPhoto.Result res = camera.exit(spin_idle_context.context); -+          if (res != GPhoto.Result.OK) { -+              // log but don't fail -+              warning("ImportPage destructor: Unable to unlock camera: %s", res.to_full_string()); -+          } -+        } -     } -      -     public override Gtk.Toolbar get_toolbar() { -@@ -1162,11 +1171,14 @@ public class ImportPage : CheckerboardPa -         update_status(busy, false); -          -         refresh_error = null; --        refresh_result = camera.init(spin_idle_context.context); --        if (refresh_result != GPhoto.Result.OK) { --            warning("Unable to initialize camera: %s", refresh_result.to_full_string()); --             --            return (refresh_result == GPhoto.Result.IO_LOCK) ? RefreshResult.LOCKED : RefreshResult.LIBRARY_ERROR; -+        // iOS 8 issue -+        if (camera == null) { -+          refresh_result = camera.init(spin_idle_context.context); -+          if (refresh_result != GPhoto.Result.OK) { -+              warning("Unable to initialize camera: %s", refresh_result.to_full_string()); -+ -+              return (refresh_result == GPhoto.Result.IO_LOCK) ? RefreshResult.LOCKED : RefreshResult.LIBRARY_ERROR; -+          } -         } -  -         update_status(true, refreshed); -@@ -1271,13 +1283,15 @@ public class ImportPage : CheckerboardPa -         progress_bar.set_ellipsize(Pango.EllipsizeMode.NONE); -         progress_bar.set_text(""); -         progress_bar.set_fraction(0.0); --         -+ -+#if 0 -         GPhoto.Result res = camera.exit(spin_idle_context.context); -         if (res != GPhoto.Result.OK) { -             // log but don't fail -             warning("Unable to unlock camera: %s", res.to_full_string()); -         } --         -+#endif -+ -         if (refresh_result == GPhoto.Result.OK) { -             if (import_sources.get_count () == 0) { -                 this.set_page_message (this.get_view_empty_message ()); -@@ -1646,11 +1660,15 @@ public class ImportPage : CheckerboardPa -     } -      -     private void import(Gee.Iterable<DataObject> items) { --        GPhoto.Result res = camera.init(spin_idle_context.context); --        if (res != GPhoto.Result.OK) { --            AppWindow.error_message(_("Unable to lock camera: %s").printf(res.to_full_string())); --             --            return; -+        // We now keep the camera open as long as we can to -+        // work around the iOS 8 directory name shuffling issue. -+        if (camera == null) { -+          GPhoto.Result res = camera.init(spin_idle_context.context); -+          if (res != GPhoto.Result.OK) { -+              AppWindow.error_message(_("Unable to lock camera: %s").printf(res.to_full_string())); -+ -+              return; -+          } -         } -  -         update_status(true, refreshed); -@@ -1786,12 +1804,15 @@ public class ImportPage : CheckerboardPa -     } -  -     private void close_import() { -+// iOS 8 issue -+#if 0 -         GPhoto.Result res = camera.exit(spin_idle_context.context); -         if (res != GPhoto.Result.OK) { -             // log but don't fail -             message("Unable to unlock camera: %s", res.to_full_string()); -         } --         -+#endif -+ -         update_status(false, refreshed); -          -         on_view_changed(); diff --git a/debian/patches/0110-fix_GoogleAuthenticator.patch b/debian/patches/0110-fix_GoogleAuthenticator.patch deleted file mode 100644 index 2ea4155..0000000 --- a/debian/patches/0110-fix_GoogleAuthenticator.patch +++ /dev/null @@ -1,135 +0,0 @@ -Description: Fix GoogleAuthenticator -Author: Jörg Frings-Fürst <debian@jff.email> -Origin: upstream, https://gitlab.gnome.org/GNOME/shotwell/commit/db18c371984b80ead9daf4e0ae2058469d2f5524.diff -Bug: https://gitlab.gnome.org/GNOME/shotwell/issues/158 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=934723 -Forwarded: not-needed -Last-Update: 2019-08-14 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: trunk/plugins/authenticator/shotwell/FlickrPublishingAuthenticator.vala -=================================================================== ---- trunk.orig/plugins/authenticator/shotwell/FlickrPublishingAuthenticator.vala -+++ trunk/plugins/authenticator/shotwell/FlickrPublishingAuthenticator.vala -@@ -54,6 +54,12 @@ namespace Publishing.Authenticator.Shotw -         } -  -         public override void on_page_load() { -+            if (this.load_error != null) { -+                this.error(); -+ -+                return; -+            } -+ -             var uri = new Soup.URI(get_view().get_uri()); -             if (uri.scheme == "shotwell-auth" && this.auth_code == null) { -                 var form_data = Soup.Form.decode (uri.query); -@@ -77,6 +83,8 @@ namespace Publishing.Authenticator.Shotw -     } -  -     internal class Flickr : Publishing.Authenticator.Shotwell.OAuth1.Authenticator { -+        private WebAuthenticationPane pane; -+ -         public Flickr(Spit.Publishing.PluginHost host) { -             base(API_KEY, API_SECRET, host); -         } -@@ -185,13 +193,17 @@ namespace Publishing.Authenticator.Shotw -         } -  -         private void do_web_authentication(string token) { --            var pane = new WebAuthenticationPane(token); -+            pane = new WebAuthenticationPane(token); -             host.install_dialog_pane(pane); -             pane.authorized.connect(this.do_verify_pin); -             pane.error.connect(this.on_web_login_error); -         } -  -         private void on_web_login_error() { -+            if (pane.load_error != null) { -+                host.post_error(pane.load_error); -+                return; -+            } -             host.post_error(new Spit.Publishing.PublishingError.PROTOCOL_ERROR(_("Flickr authorization failed"))); -         } -  -Index: trunk/plugins/authenticator/shotwell/GoogleAuthenticator.vala -=================================================================== ---- trunk.orig/plugins/authenticator/shotwell/GoogleAuthenticator.vala -+++ trunk/plugins/authenticator/shotwell/GoogleAuthenticator.vala -@@ -21,6 +21,12 @@ namespace Publishing.Authenticator.Shotw -         } -  -         public override void on_page_load() { -+            if (this.load_error != null) { -+                this.error (); -+ -+                return; -+            } -+ -             var uri = new Soup.URI(get_view().get_uri()); -             if (uri.scheme == REVERSE_CLIENT_ID && this.auth_code == null) { -                 var form_data = Soup.Form.decode (uri.query); -@@ -173,6 +179,7 @@ namespace Publishing.Authenticator.Shotw -  -             web_auth_pane = new WebAuthenticationPane(user_authorization_url); -             web_auth_pane.authorized.connect(on_web_auth_pane_authorized); -+            web_auth_pane.error.connect(on_web_auth_pane_error); -  -             host.install_dialog_pane(web_auth_pane); -         } -@@ -185,6 +192,10 @@ namespace Publishing.Authenticator.Shotw -             do_get_access_tokens(auth_code); -         } -  -+        private void on_web_auth_pane_error() { -+            host.post_error(web_auth_pane.load_error); -+        } -+ -         private void do_get_access_tokens(string auth_code) { -             debug("ACTION: exchanging authorization code for access & refresh tokens"); -  -Index: trunk/plugins/common/WebAuthenticationPane.vala -=================================================================== ---- trunk.orig/plugins/common/WebAuthenticationPane.vala -+++ trunk/plugins/common/WebAuthenticationPane.vala -@@ -12,6 +12,7 @@ namespace Shotwell.Plugins.Common { -         } -  -         public string login_uri { owned get; construct; } -+        public Error load_error { get; private set; default = null; } -  -         private WebKit.WebView webview; -  -@@ -22,6 +23,7 @@ namespace Shotwell.Plugins.Common { -             this.webview.get_settings ().enable_plugins = false; -  -             this.webview.load_changed.connect (this.on_page_load_changed); -+            this.webview.load_failed.connect (this.on_page_load_failed); -             this.webview.context_menu.connect ( () => { return false; }); -         } -  -@@ -29,11 +31,24 @@ namespace Shotwell.Plugins.Common { -  -         protected void set_cursor (Gdk.CursorType type) { -             var window = webview.get_window (); -+            if (window == null) -+                return; -+ -             var display = window.get_display (); -+            if (display == null) -+                return; -+ -             var cursor = new Gdk.Cursor.for_display (display, type); -             window.set_cursor (cursor); -         } -  -+        private bool on_page_load_failed (WebKit.LoadEvent load_event, string uri, Error error) { -+            critical ("Failed to load uri %s: %s", uri, error.message); -+            this.load_error = error; -+ -+            return false; -+        } -+ -         private void on_page_load_changed (WebKit.LoadEvent load_event) { -             switch (load_event) { -                 case WebKit.LoadEvent.STARTED: diff --git a/debian/patches/0115-fix_meson_build.patch b/debian/patches/0115-fix_meson_build.patch new file mode 100644 index 0000000..0739a80 --- /dev/null +++ b/debian/patches/0115-fix_meson_build.patch @@ -0,0 +1,17 @@ +Description: Remove --fatal-warnings from build options +Author: Jörg Frings-Fürst <debian@jff.email> +Last-Update: 2019-10-07 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: trunk/meson.build +=================================================================== +--- trunk.orig/meson.build ++++ trunk/meson.build +@@ -25,7 +25,6 @@ add_global_arguments(['--target-glib=2.4 +                       '--vapidir=@0@'.format(join_paths(meson.current_source_dir(), +                         'vapi')), +                       '--enable-checking', +-                      '--fatal-warnings', +                       '--enable-experimental', +                       '--enable-deprecated'], language : 'vala') +  diff --git a/debian/patches/0500-Port-to-webkit2gtk-40.patch b/debian/patches/0500-Port-to-webkit2gtk-40.patch deleted file mode 100644 index 51cd8de..0000000 --- a/debian/patches/0500-Port-to-webkit2gtk-40.patch +++ /dev/null @@ -1,1026 +0,0 @@ -From afc5e103d2dd414f0d028565097d86c7e85fadbc Mon Sep 17 00:00:00 2001 -From: Iain Lane <iain@orangesquash.org.uk> -Date: Tue, 30 Jun 2015 10:43:15 +0100 -Subject: [PATCH] Port to webkit2gtk-4.0 - -https://bugzilla.gnome.org/show_bug.cgi?id=751709 ---- - Makefile                                           |   8 +- - debian/control                                     |   2 +- - plugins/common/RESTSupport.vala                    |  24 +- - plugins/shotwell-publishing-extras/Makefile        |   2 +- - .../YandexPublishing.vala                          |  67 ++- - .../shotwell-publishing/FacebookPublishing.vala    |  36 +- - plugins/shotwell-publishing/Makefile               |   2 +- - vapi/webkitgtk-3.0.deps                            |   8 - - vapi/webkitgtk-3.0.vapi                            | 653 --------------------- - 9 files changed, 97 insertions(+), 705 deletions(-) - delete mode 100644 vapi/webkitgtk-3.0.deps - delete mode 100644 vapi/webkitgtk-3.0.vapi - -diff --git a/Makefile b/Makefile -index fe354a7..1ce5668 100644 ---- a/Makefile -+++ b/Makefile -@@ -14,7 +14,7 @@ VALAC := $(shell which $(VALAC)) - endif -  - VALAC_VERSION := `$(VALAC) --version | awk '{print $$2}'` --MIN_VALAC_VERSION := 0.20.1 -+MIN_VALAC_VERSION := 0.28.0 - INSTALL_PROGRAM := install - INSTALL_DATA := install -m 644 -  -@@ -120,12 +120,10 @@ VAPI_FILES = \ - 	LConv.vapi \ - 	libexif.vapi \ - 	libraw.vapi \ --	webkitgtk-3.0.vapi \ - 	unique-3.0.vapi \ - 	unity.vapi -  - DEPS_FILES = \ --	webkitgtk-3.0.deps \ - 	unique-3.0.deps \ - 	unity.deps -  -@@ -271,7 +269,7 @@ EXT_PKGS = \ - 	libsoup-2.4 \ - 	libxml-2.0 \ - 	sqlite3 \ --	webkitgtk-3.0 -+	webkit2gtk-4.0 - ifdef UNITY_SUPPORT - EXT_PKGS += unity - endif -@@ -303,7 +301,7 @@ EXT_PKG_VERSIONS = \ - 	libxml-2.0 >= 2.6.32 \ - 	rest-0.7 >= 0.7 \ - 	sqlite3 >= 3.5.9 \ --	webkitgtk-3.0 >= 1.4.0 \ -+	webkit2gtk-4.0 \ - 	gnome-doc-utils -  - DIRECT_LIBS_VERSIONS = -diff --git a/plugins/common/RESTSupport.vala b/plugins/common/RESTSupport.vala -index fdde409..a4a0621 100644 ---- a/plugins/common/RESTSupport.vala -+++ b/plugins/common/RESTSupport.vala -@@ -741,10 +741,9 @@ public abstract class GooglePublisher : Object, Spit.Publishing.Publisher { -  -             webview = new WebKit.WebView(); -             webview.get_settings().enable_plugins = false; --            webview.get_settings().enable_default_context_menu = false; -  --            webview.load_finished.connect(on_page_load); --            webview.load_started.connect(on_load_started); -+            webview.load_changed.connect(on_page_load_changed); -+            webview.context_menu.connect(() => { return false; }); -  -             webview_frame.add(webview); -             pane_widget.pack_start(webview_frame, true, true, 0); -@@ -754,7 +753,7 @@ public abstract class GooglePublisher : Object, Spit.Publishing.Publisher { -             return cache_dirty; -         } -          --        private void on_page_load(WebKit.WebFrame origin_frame) { -+        private void on_page_load() { -             pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR)); -              -             string page_title = webview.get_title(); -@@ -772,9 +771,22 @@ public abstract class GooglePublisher : Object, Spit.Publishing.Publisher { -             } -         } -  --        private void on_load_started(WebKit.WebFrame frame) { -+        private void on_load_started() { -             pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.WATCH)); -         } -+ -+        private void on_page_load_changed (WebKit.LoadEvent load_event) { -+            switch (load_event) { -+                case WebKit.LoadEvent.STARTED: -+                    on_load_started(); -+                    break; -+                case WebKit.LoadEvent.FINISHED: -+                    on_page_load(); -+                    break; -+            } -+ -+            return; -+        } -          -         public Spit.Publishing.DialogPane.GeometryOptions get_preferred_geometry() { -             return Spit.Publishing.DialogPane.GeometryOptions.NONE; -@@ -785,7 +797,7 @@ public abstract class GooglePublisher : Object, Spit.Publishing.Publisher { -         } -  -         public void on_pane_installed() { --            webview.open(auth_sequence_start_url); -+            webview.load_uri(auth_sequence_start_url); -         } -  -         public void on_pane_uninstalled() { -diff --git a/plugins/shotwell-publishing-extras/Makefile b/plugins/shotwell-publishing-extras/Makefile -index 9259fbb..91452cf 100644 ---- a/plugins/shotwell-publishing-extras/Makefile -+++ b/plugins/shotwell-publishing-extras/Makefile -@@ -5,7 +5,7 @@ PLUGIN_PKGS := \ - 	gtk+-3.0 \ - 	libsoup-2.4 \ - 	libxml-2.0 \ --	webkitgtk-3.0 \ -+	webkit2gtk-4.0 \ - 	gee-0.8 \ - 	rest-0.7 \ - 	json-glib-1.0 -diff --git a/plugins/shotwell-publishing-extras/YandexPublishing.vala b/plugins/shotwell-publishing-extras/YandexPublishing.vala -index 36a3ede..ec99c2b 100644 ---- a/plugins/shotwell-publishing-extras/YandexPublishing.vala -+++ b/plugins/shotwell-publishing-extras/YandexPublishing.vala -@@ -120,43 +120,70 @@ internal class WebAuthPane : Spit.Publishing.DialogPane, GLib.Object { -  -         webview = new WebKit.WebView(); -         webview.get_settings().enable_plugins = false; --        webview.get_settings().enable_default_context_menu = false; -  --        webview.load_finished.connect(on_page_load); --        webview.load_started.connect(on_load_started); --        webview.navigation_requested.connect(navigation_requested); -+        webview.load_changed.connect(on_page_load_changed); -+        webview.decide_policy.connect(on_decide_policy); -+        webview.context_menu.connect(() => { return false; }); -  -         webview_frame.add(webview); -         pane_widget.pack_start(webview_frame, true, true, 0); -     } -  --    private void on_page_load(WebKit.WebFrame origin_frame) { -+    private void on_page_load() { -         pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR)); -     } -  --    private WebKit.NavigationResponse navigation_requested (WebKit.WebFrame frame, WebKit.NetworkRequest req) { --        debug("Navigating to '%s'", req.uri); -+    private bool on_decide_policy (WebKit.PolicyDecision decision, -+                                   WebKit.PolicyDecisionType type) { -+        switch (type) { -+            case WebKit.PolicyDecisionType.NAVIGATION_ACTION: -+                WebKit.NavigationPolicyDecision n_decision = (WebKit.NavigationPolicyDecision) decision; -+                WebKit.NavigationAction action = n_decision.navigation_action; -+                string uri = action.get_request().uri; -+                debug("Navigating to '%s'", uri); -  --        MatchInfo info = null; -+                MatchInfo info = null; -  --        if (re.match(req.uri, 0, out info)) { --            string access_token = info.fetch_all()[2]; -+                if (re.match(uri, 0, out info)) { -+                    string access_token = info.fetch_all()[2]; -  --            debug("Load completed: %s", access_token); --            pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR)); --            if (access_token != null) { --                login_succeeded(access_token); --                return WebKit.NavigationResponse.IGNORE; --            } else --                login_failed(); -+                    debug("Load completed: %s", access_token); -+                    pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR)); -+                    if (access_token != null) { -+                        login_succeeded(access_token); -+                        decision.ignore(); -+                        break; -+                    } else -+                        login_failed(); -+                } -+                decision.use(); -+                break; -+            case WebKit.PolicyDecisionType.RESPONSE: -+                decision.use(); -+                break; -+            default: -+                return false; -         } --        return WebKit.NavigationResponse.ACCEPT; -+        return true; -     } -  --    private void on_load_started(WebKit.WebFrame frame) { -+    private void on_load_started() { -         pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.WATCH)); -     } -  -+    private void on_page_load_changed (WebKit.LoadEvent load_event) { -+        switch (load_event) { -+            case WebKit.LoadEvent.STARTED: -+                on_load_started(); -+                break; -+            case WebKit.LoadEvent.FINISHED: -+                on_page_load(); -+                break; -+        } -+ -+        return; -+    } -+ -     public Gtk.Widget get_widget() { -         return pane_widget; -     } -@@ -166,7 +193,7 @@ internal class WebAuthPane : Spit.Publishing.DialogPane, GLib.Object { -     } -  -     public void on_pane_installed() { --        webview.open(login_url); -+        webview.load_uri(login_url); -     } -  -     public void on_pane_uninstalled() { -diff --git a/plugins/shotwell-publishing/FacebookPublishing.vala b/plugins/shotwell-publishing/FacebookPublishing.vala -index 1dd793d..4efe7f7 100644 ---- a/plugins/shotwell-publishing/FacebookPublishing.vala -+++ b/plugins/shotwell-publishing/FacebookPublishing.vala -@@ -535,7 +535,7 @@ public class FacebookPublisher : Spit.Publishing.Publisher, GLib.Object { -             return; -  -         debug("EVENT: endpoint test transaction failed to detect a connection to the Facebook " + --            "endpoint"); -+            "endpoint" + error.message); -  -         on_generic_error(error); -     } -@@ -829,15 +829,15 @@ internal class WebAuthenticationPane : Spit.Publishing.DialogPane, Object { -  -         webview = new WebKit.WebView(); -         webview.get_settings().enable_plugins = false; --        webview.get_settings().enable_default_context_menu = false; -+        webview.get_settings().enable_xss_auditor = false; -  --        webview.load_finished.connect(on_page_load); --        webview.load_started.connect(on_load_started); -+        webview.load_changed.connect(on_page_load_changed); -+        webview.context_menu.connect(() => { return true; }); -  -         webview_frame.add(webview); -         pane_widget.pack_start(webview_frame, true, true, 0); -     } --     -+ -     private class LocaleLookup { -         public string prefix; -         public string translation; -@@ -945,10 +945,11 @@ internal class WebAuthenticationPane : Spit.Publishing.DialogPane, Object { -         return "https://%s.facebook.com/dialog/oauth?client_id=%s&redirect_uri=https://www.facebook.com/connect/login_success.html&scope=publish_actions,user_photos,user_videos&response_type=token".printf(facebook_locale, APPLICATION_ID); -     } -  --    private void on_page_load(WebKit.WebFrame origin_frame) { -+    private void on_page_load() { -         pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR)); -  --        string loaded_url = origin_frame.get_uri().dup(); -+        string loaded_url = webview.uri.dup(); -+        debug("loaded url: " + loaded_url); -  -         // strip parameters from the loaded url -         if (loaded_url.contains("?")) { -@@ -960,7 +961,7 @@ internal class WebAuthenticationPane : Spit.Publishing.DialogPane, Object { -         // were we redirected to the facebook login success page? -         if (loaded_url.contains("login_success")) { -             cache_dirty = true; --            login_succeeded(origin_frame.get_uri()); -+            login_succeeded(webview.uri); -             return; -         } -  -@@ -971,10 +972,24 @@ internal class WebAuthenticationPane : Spit.Publishing.DialogPane, Object { -         } -     } -  --    private void on_load_started(WebKit.WebFrame frame) { -+    private void on_load_started() { -         pane_widget.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.WATCH)); -     } -  -+    private void on_page_load_changed (WebKit.LoadEvent load_event) { -+        switch (load_event) { -+            case WebKit.LoadEvent.STARTED: -+            case WebKit.LoadEvent.REDIRECTED: -+                on_load_started(); -+                break; -+            case WebKit.LoadEvent.FINISHED: -+                on_page_load(); -+                break; -+        } -+ -+        return; -+    } -+ -     public static bool is_cache_dirty() { -         return cache_dirty; -     } -@@ -988,7 +1003,7 @@ internal class WebAuthenticationPane : Spit.Publishing.DialogPane, Object { -     } -  -     public void on_pane_installed() { --        webview.open(get_login_url()); -+        webview.load_uri(get_login_url()); -     } -  -     public void on_pane_uninstalled() { -@@ -1527,6 +1542,7 @@ internal class GraphSession { -                         "Service %s returned HTTP status code %u %s", real_message.get_uri(), -                         msg.status_code, msg.reason_phrase); -                 } else { -+                    debug(msg.reason_phrase); -                     error = new Spit.Publishing.PublishingError.NO_ANSWER( -                         "Failure communicating with %s (error code %u)", real_message.get_uri(), -                         msg.status_code); -diff --git a/plugins/shotwell-publishing/Makefile b/plugins/shotwell-publishing/Makefile -index 639fa88..6b3945b 100644 ---- a/plugins/shotwell-publishing/Makefile -+++ b/plugins/shotwell-publishing/Makefile -@@ -5,7 +5,7 @@ PLUGIN_PKGS := \ - 	gtk+-3.0 \ - 	libsoup-2.4 \ - 	libxml-2.0 \ --	webkitgtk-3.0 \ -+	webkit2gtk-4.0 \ - 	gexiv2 \ - 	rest-0.7 \ - 	gee-0.8 \ -diff --git a/vapi/webkitgtk-3.0.deps b/vapi/webkitgtk-3.0.deps -deleted file mode 100644 -index 91b1dfe..0000000 ---- a/vapi/webkitgtk-3.0.deps -+++ /dev/null -@@ -1,8 +0,0 @@ --atk --gio-2.0 --cairo --pango --gdk-pixbuf-2.0 --gdk-3.0 --gtk+-3.0 --libsoup-2.4 -diff --git a/vapi/webkitgtk-3.0.vapi b/vapi/webkitgtk-3.0.vapi -deleted file mode 100644 -index 9e0d347..0000000 ---- a/vapi/webkitgtk-3.0.vapi -+++ /dev/null -@@ -1,653 +0,0 @@ --/* webkit-1.0.vapi generated by vapigen, do not modify. */ -- --[CCode (cprefix = "WebKit", lower_case_cprefix = "webkit_")] --namespace WebKit { --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class Download : GLib.Object { --		[CCode (has_construct_function = false)] --		public Download (WebKit.NetworkRequest request); --		public void cancel (); --		public uint64 get_current_size (); --		public unowned string get_destination_uri (); --		public double get_elapsed_time (); --		public unowned WebKit.NetworkRequest get_network_request (); --		public unowned WebKit.NetworkResponse get_network_response (); --		public double get_progress (); --		public WebKit.DownloadStatus get_status (); --		public unowned string get_suggested_filename (); --		public uint64 get_total_size (); --		public unowned string get_uri (); --		public void set_destination_uri (string destination_uri); --		public void start (); --		public uint64 current_size { get; } --		public string destination_uri { get; set; } --		public WebKit.NetworkRequest network_request { get; construct; } --		public WebKit.NetworkResponse network_response { get; construct; } --		public double progress { get; } --		public WebKit.DownloadStatus status { get; } --		public string suggested_filename { get; } --		public uint64 total_size { get; } --		public virtual signal bool error (int p0, int p1, string p2); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class GeolocationPolicyDecision : GLib.Object { --		[CCode (has_construct_function = false)] --		protected GeolocationPolicyDecision (); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class HitTestResult : GLib.Object { --		[CCode (has_construct_function = false)] --		protected HitTestResult (); --		[NoAccessorMethod] --		public WebKit.HitTestResultContext context { get; construct; } --		[NoAccessorMethod] --		public string image_uri { owned get; construct; } --		[NoAccessorMethod] --		public string link_uri { owned get; construct; } --		[NoAccessorMethod] --		public string media_uri { owned get; construct; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class NetworkRequest : GLib.Object { --		[CCode (has_construct_function = false)] --		public NetworkRequest (string uri); --		public unowned Soup.Message get_message (); --		public unowned string get_uri (); --		public void set_uri (string uri); --		public Soup.Message message { get; construct; } --		public string uri { get; set; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class NetworkResponse : GLib.Object { --		[CCode (has_construct_function = false)] --		public NetworkResponse (string uri); --		public unowned Soup.Message get_message (); --		public unowned string get_uri (); --		public void set_uri (string uri); --		public Soup.Message message { get; construct; } --		public string uri { get; set; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class SecurityOrigin : GLib.Object { --		[CCode (has_construct_function = false)] --		protected SecurityOrigin (); --		public unowned GLib.List<WebKit.WebDatabase> get_all_web_databases (); --		public unowned string get_host (); --		public uint get_port (); --		public unowned string get_protocol (); --		public uint64 get_web_database_quota (); --		public uint64 get_web_database_usage (); --		public void set_web_database_quota (uint64 quota); --		public string host { get; } --		public uint port { get; } --		public string protocol { get; } --		public uint64 web_database_quota { get; set; } --		public uint64 web_database_usage { get; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class SoupAuthDialog : GLib.Object, Soup.SessionFeature { --		[CCode (has_construct_function = false)] --		protected SoupAuthDialog (); --		public virtual signal unowned Gtk.Widget current_toplevel (Soup.Message message); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebBackForwardList : GLib.Object { --		[CCode (has_construct_function = false)] --		protected WebBackForwardList (); --		public void add_item (WebKit.WebHistoryItem history_item); --		public void clear (); --		public bool contains_item (WebKit.WebHistoryItem history_item); --		public unowned WebKit.WebHistoryItem get_back_item (); --		public int get_back_length (); --		public unowned GLib.List<WebKit.WebHistoryItem> get_back_list_with_limit (int limit); --		public unowned WebKit.WebHistoryItem get_current_item (); --		public unowned WebKit.WebHistoryItem get_forward_item (); --		public int get_forward_length (); --		public unowned GLib.List<WebKit.WebHistoryItem> get_forward_list_with_limit (int limit); --		public int get_limit (); --		public unowned WebKit.WebHistoryItem get_nth_item (int index); --		public void go_back (); --		public void go_forward (); --		public void go_to_item (WebKit.WebHistoryItem history_item); --		public void set_limit (int limit); --		[CCode (has_construct_function = false)] --		public WebBackForwardList.with_web_view (WebKit.WebView web_view); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebDataSource : GLib.Object { --		[CCode (has_construct_function = false)] --		public WebDataSource (); --		public unowned GLib.StringBuilder get_data (); --		public unowned string get_encoding (); --		public unowned WebKit.NetworkRequest get_initial_request (); --		public unowned WebKit.WebResource get_main_resource (); --		public unowned WebKit.NetworkRequest get_request (); --		public unowned GLib.List<WebKit.WebResource> get_subresources (); --		public unowned string get_unreachable_uri (); --		public unowned WebKit.WebFrame get_web_frame (); --		public bool is_loading (); --		[CCode (has_construct_function = false)] --		public WebDataSource.with_request (WebKit.NetworkRequest request); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebDatabase : GLib.Object { --		[CCode (has_construct_function = false)] --		protected WebDatabase (); --		public unowned string get_display_name (); --		public uint64 get_expected_size (); --		public unowned string get_filename (); --		public unowned string get_name (); --		public unowned WebKit.SecurityOrigin get_security_origin (); --		public uint64 get_size (); --		public void remove (); --		public string display_name { get; } --		public uint64 expected_size { get; } --		public string filename { get; } --		public string name { get; construct; } --		public WebKit.SecurityOrigin security_origin { get; construct; } --		public uint64 size { get; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebFrame : GLib.Object { --		[CCode (has_construct_function = false)] --		public WebFrame (WebKit.WebView web_view); --		public unowned WebKit.WebFrame find_frame (string name); --		public unowned WebKit.WebDataSource get_data_source (); --		public Gtk.PolicyType get_horizontal_scrollbar_policy (); --		public WebKit.LoadStatus get_load_status (); --		public unowned string get_name (); --		public unowned WebKit.NetworkResponse get_network_response (); --		public unowned WebKit.WebFrame get_parent (); --		public unowned WebKit.WebDataSource get_provisional_data_source (); --		public unowned WebKit.SecurityOrigin get_security_origin (); --		public unowned string get_title (); --		public unowned string get_uri (); --		public Gtk.PolicyType get_vertical_scrollbar_policy (); --		public unowned WebKit.WebView get_web_view (); --		public void load_alternate_string (string content, string base_url, string unreachable_url); --		public void load_request (WebKit.NetworkRequest request); --		public void load_string (string content, string mime_type, string encoding, string base_uri); --		public void load_uri (string uri); --		public void print (); --		public Gtk.PrintOperationResult print_full (Gtk.PrintOperation operation, Gtk.PrintOperationAction action) throws GLib.Error; --		public void reload (); --		public void stop_loading (); --		public Gtk.PolicyType horizontal_scrollbar_policy { get; } --		public WebKit.LoadStatus load_status { get; } --		public string name { get; } --		public string title { get; } --		public string uri { get; } --		public Gtk.PolicyType vertical_scrollbar_policy { get; } --		public virtual signal void cleared (); --		public virtual signal void hovering_over_link (string p0, string p1); --		public virtual signal void load_committed (); --		public virtual signal void load_done (bool p0); --		public virtual signal bool scrollbars_policy_changed (); --		public virtual signal void title_changed (string p0); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebHistoryItem : GLib.Object { --		[CCode (has_construct_function = false)] --		public WebHistoryItem (); --		public unowned WebKit.WebHistoryItem copy (); --		public unowned string get_alternate_title (); --		public double get_last_visited_time (); --		public unowned string get_original_uri (); --		public unowned string get_title (); --		public unowned string get_uri (); --		public void set_alternate_title (string title); --		[CCode (has_construct_function = false)] --		public WebHistoryItem.with_data (string uri, string title); --		public string alternate_title { get; set; } --		public double last_visited_time { get; } --		public string original_uri { get; } --		public string title { get; } --		public string uri { get; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebInspector : GLib.Object { --		[CCode (has_construct_function = false)] --		protected WebInspector (); --		public void close (); --		public unowned string get_inspected_uri (); --		public unowned WebKit.WebView get_web_view (); --		public void inspect_coordinates (double x, double y); --		public void show (); --		public string inspected_uri { get; } --		[NoAccessorMethod] --		public bool javascript_profiling_enabled { get; set; } --		[NoAccessorMethod] --		public bool timeline_profiling_enabled { get; set; } --		public WebKit.WebView web_view { get; } --		public virtual signal bool attach_window (); --		public virtual signal bool close_window (); --		public virtual signal bool detach_window (); --		public virtual signal void finished (); --		public virtual signal unowned WebKit.WebView inspect_web_view (WebKit.WebView p0); --		public virtual signal bool show_window (); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebNavigationAction : GLib.Object { --		[CCode (has_construct_function = false)] --		protected WebNavigationAction (); --		public int get_button (); --		public int get_modifier_state (); --		public unowned string get_original_uri (); --		public WebKit.WebNavigationReason get_reason (); --		public unowned string get_target_frame (); --		public void set_original_uri (string originalUri); --		public void set_reason (WebKit.WebNavigationReason reason); --		public int button { get; construct; } --		public int modifier_state { get; construct; } --		public string original_uri { get; set construct; } --		public WebKit.WebNavigationReason reason { get; set construct; } --		public string target_frame { get; construct; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebPolicyDecision : GLib.Object { --		[CCode (has_construct_function = false)] --		protected WebPolicyDecision (); --		public void download (); --		public void ignore (); --		public void use (); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebResource : GLib.Object { --		[CCode (has_construct_function = false)] --		public WebResource (string data, ssize_t size, string uri, string mime_type, string encoding, string frame_name); --		public unowned GLib.StringBuilder get_data (); --		public unowned string get_encoding (); --		public unowned string get_frame_name (); --		public unowned string get_mime_type (); --		public unowned string get_uri (); --		public string encoding { get; } --		public string frame_name { get; } --		public string mime_type { get; } --		public string uri { get; construct; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebSettings : GLib.Object { --		[CCode (has_construct_function = false)] --		public WebSettings (); --		public WebKit.WebSettings copy (); --		public unowned string get_user_agent (); --		[NoAccessorMethod] --		public bool auto_load_images { get; set construct; } --		[NoAccessorMethod] --		public bool auto_resize_window { get; set construct; } --		[NoAccessorMethod] --		public bool auto_shrink_images { get; set construct; } --		[NoAccessorMethod] --		public string cursive_font_family { owned get; set construct; } --		[NoAccessorMethod] --		public string default_encoding { owned get; set construct; } --		[NoAccessorMethod] --		public string default_font_family { owned get; set construct; } --		[NoAccessorMethod] --		public int default_font_size { get; set construct; } --		[NoAccessorMethod] --		public int default_monospace_font_size { get; set construct; } --		[NoAccessorMethod] --		public WebKit.EditingBehavior editing_behavior { get; set construct; } --		[NoAccessorMethod] --		public bool enable_caret_browsing { get; set construct; } --		[NoAccessorMethod] --		public bool enable_default_context_menu { get; set construct; } --		[NoAccessorMethod] --		public bool enable_developer_extras { get; set construct; } --		[NoAccessorMethod] --		public bool enable_dom_paste { get; set construct; } --		[NoAccessorMethod] --		public bool enable_file_access_from_file_uris { get; set construct; } --		[NoAccessorMethod] --		public bool enable_html5_database { get; set construct; } --		[NoAccessorMethod] --		public bool enable_html5_local_storage { get; set construct; } --		[NoAccessorMethod] --		public bool enable_java_applet { get; set construct; } --		[NoAccessorMethod] --		public bool enable_offline_web_application_cache { get; set construct; } --		[NoAccessorMethod] --		public bool enable_page_cache { get; set construct; } --		[NoAccessorMethod] --		public bool enable_plugins { get; set construct; } --		[NoAccessorMethod] --		public bool enable_private_browsing { get; set construct; } --		[NoAccessorMethod] --		public bool enable_scripts { get; set construct; } --		[NoAccessorMethod] --		public bool enable_site_specific_quirks { get; set construct; } --		[NoAccessorMethod] --		public bool enable_spatial_navigation { get; set construct; } --		[NoAccessorMethod] --		public bool enable_spell_checking { get; set construct; } --		[NoAccessorMethod] --		public bool enable_universal_access_from_file_uris { get; set construct; } --		[NoAccessorMethod] --		public bool enable_xss_auditor { get; set construct; } --		[NoAccessorMethod] --		public bool enforce_96_dpi { get; set construct; } --		[NoAccessorMethod] --		public string fantasy_font_family { owned get; set construct; } --		[NoAccessorMethod] --		public bool javascript_can_access_clipboard { get; set construct; } --		[NoAccessorMethod] --		public bool javascript_can_open_windows_automatically { get; set construct; } --		[NoAccessorMethod] --		public int minimum_font_size { get; set construct; } --		[NoAccessorMethod] --		public int minimum_logical_font_size { get; set construct; } --		[NoAccessorMethod] --		public string monospace_font_family { owned get; set construct; } --		[NoAccessorMethod] --		public bool print_backgrounds { get; set construct; } --		[NoAccessorMethod] --		public bool resizable_text_areas { get; set construct; } --		[NoAccessorMethod] --		public string sans_serif_font_family { owned get; set construct; } --		[NoAccessorMethod] --		public string serif_font_family { owned get; set construct; } --		[NoAccessorMethod] --		public string spell_checking_languages { owned get; set construct; } --		[NoAccessorMethod] --		public bool tab_key_cycles_through_elements { get; set construct; } --		[NoAccessorMethod] --		public string user_agent { owned get; set construct; } --		[NoAccessorMethod] --		public string user_stylesheet_uri { owned get; set construct; } --		[NoAccessorMethod] --		public float zoom_step { get; set construct; } --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebView : Gtk.Container, Atk.Implementor, Gtk.Buildable { --		[CCode (type = "GtkWidget*", has_construct_function = false)] --		public WebView (); --		public bool can_copy_clipboard (); --		public bool can_cut_clipboard (); --		public bool can_go_back (); --		public bool can_go_back_or_forward (int steps); --		public bool can_go_forward (); --		public bool can_paste_clipboard (); --		public bool can_redo (); --		public bool can_show_mime_type (string mime_type); --		public bool can_undo (); --		[NoWrapper] --		public virtual unowned string choose_file (WebKit.WebFrame frame, string old_file); --		public void delete_selection (); --		public void execute_script (string script); --		public unowned WebKit.WebBackForwardList get_back_forward_list (); --		public unowned Gtk.TargetList get_copy_target_list (); --		public unowned string get_custom_encoding (); --		public bool get_editable (); --		public unowned string get_encoding (); --		public unowned WebKit.WebFrame get_focused_frame (); --		public bool get_full_content_zoom (); --		public unowned WebKit.HitTestResult get_hit_test_result (Gdk.EventButton event); --		public unowned string get_icon_uri (); --		public unowned WebKit.WebInspector get_inspector (); --		public WebKit.LoadStatus get_load_status (); --		public unowned WebKit.WebFrame get_main_frame (); --		public unowned Gtk.TargetList get_paste_target_list (); --		public double get_progress (); --		public unowned WebKit.WebSettings get_settings (); --		public unowned string get_title (); --		public bool get_transparent (); --		public unowned string get_uri (); --		public bool get_view_source_mode (); --		public unowned WebKit.WebWindowFeatures get_window_features (); --		public float get_zoom_level (); --		public void go_back (); --		public void go_back_or_forward (int steps); --		public void go_forward (); --		public bool go_to_back_forward_item (WebKit.WebHistoryItem item); --		public bool has_selection (); --		public void load_html_string (string content, string base_uri); --		public void load_request (WebKit.NetworkRequest request); --		public void load_string (string content, string mime_type, string encoding, string base_uri); --		public void load_uri (string uri); --		public uint mark_text_matches (string str, bool case_sensitive, uint limit); --		public void open (string uri); --		public void reload (); --		public void reload_bypass_cache (); --		public bool search_text (string text, bool case_sensitive, bool forward, bool wrap); --		public void set_custom_encoding (string encoding); --		public void set_editable (bool flag); --		public void set_full_content_zoom (bool full_content_zoom); --		public void set_highlight_text_matches (bool highlight); --		public void set_maintains_back_forward_list (bool flag); --		public void set_settings (WebKit.WebSettings settings); --		public void set_transparent (bool flag); --		public void set_view_source_mode (bool view_source_mode); --		public void set_zoom_level (float zoom_level); --		public void stop_loading (); --		public void unmark_text_matches (); --		public void zoom_in (); --		public void zoom_out (); --		public Gtk.TargetList copy_target_list { get; } --		public string custom_encoding { get; set; } --		public bool editable { get; set; } --		public string encoding { get; } --		public bool full_content_zoom { get; set; } --		public string icon_uri { get; } --		[NoAccessorMethod] --		public Gtk.IMContext im_context { owned get; } --		public WebKit.LoadStatus load_status { get; } --		public Gtk.TargetList paste_target_list { get; } --		public double progress { get; } --		public WebKit.WebSettings settings { get; set; } --		public string title { get; } --		public bool transparent { get; set; } --		public string uri { get; } --		[NoAccessorMethod] --		public WebKit.WebInspector web_inspector { owned get; } --		[NoAccessorMethod] --		public WebKit.WebWindowFeatures window_features { owned get; set; } --		public float zoom_level { get; set; } --		public virtual signal bool close_web_view (); --		public virtual signal bool console_message (string message, int line_number, string source_id); --		[HasEmitter] --		public virtual signal void copy_clipboard (); --		public virtual signal unowned Gtk.Widget create_plugin_widget (string p0, string p1, GLib.HashTable p2); --		public virtual signal WebKit.WebView create_web_view (WebKit.WebFrame web_frame); --		[HasEmitter] --		public virtual signal void cut_clipboard (); --		public virtual signal void database_quota_exceeded (GLib.Object p0, GLib.Object p1); --		public virtual signal void document_load_finished (WebKit.WebFrame p0); --		public virtual signal bool download_requested (GLib.Object p0); --		public virtual signal void geolocation_policy_decision_cancelled (WebKit.WebFrame p0); --		public virtual signal bool geolocation_policy_decision_requested (WebKit.WebFrame p0, WebKit.GeolocationPolicyDecision p1); --		public virtual signal void hovering_over_link (string? p0, string p1); --		public virtual signal void icon_loaded (string p0); --		public virtual signal void load_committed (WebKit.WebFrame p0); --		public virtual signal bool load_error (WebKit.WebFrame p0, string p1, GLib.Error p2); --		public virtual signal void load_finished (WebKit.WebFrame p0); --		public virtual signal void load_progress_changed (int p0); --		public virtual signal void load_started (WebKit.WebFrame p0); --		public virtual signal bool mime_type_policy_decision_requested (WebKit.WebFrame p0, WebKit.NetworkRequest p1, string p2, WebKit.WebPolicyDecision p3); --		[HasEmitter] --		public virtual signal bool move_cursor (Gtk.MovementStep step, int count); --		public virtual signal bool navigation_policy_decision_requested (WebKit.WebFrame p0, WebKit.NetworkRequest p1, WebKit.WebNavigationAction p2, WebKit.WebPolicyDecision p3); --		public virtual signal WebKit.NavigationResponse navigation_requested (WebKit.WebFrame frame, WebKit.NetworkRequest request); --		public virtual signal bool new_window_policy_decision_requested (WebKit.WebFrame p0, WebKit.NetworkRequest p1, WebKit.WebNavigationAction p2, WebKit.WebPolicyDecision p3); --		[HasEmitter] --		public virtual signal void paste_clipboard (); --		public virtual signal void populate_popup (Gtk.Menu p0); --		public virtual signal bool print_requested (WebKit.WebFrame p0); --		[HasEmitter] --		public virtual signal void redo (); --		public virtual signal void resource_request_starting (WebKit.WebFrame p0, WebKit.WebResource p1, WebKit.NetworkRequest p2, WebKit.NetworkResponse p3); --		public virtual signal bool script_alert (WebKit.WebFrame frame, string alert_message); --		public virtual signal bool script_confirm (WebKit.WebFrame frame, string confirm_message, void* did_confirm); --		public virtual signal bool script_prompt (WebKit.WebFrame frame, string message, string default_value, void* value); --		[HasEmitter] --		public virtual signal void select_all (); --		public virtual signal void selection_changed (); --		public virtual signal void set_scroll_adjustments (Gtk.Adjustment hadjustment, Gtk.Adjustment vadjustment); --		public virtual signal void status_bar_text_changed (string p0); --		public virtual signal void title_changed (WebKit.WebFrame p0, string p1); --		[HasEmitter] --		public virtual signal void undo (); --		public virtual signal bool web_view_ready (); --		public virtual signal void window_object_cleared (WebKit.WebFrame frame, void* context, void* window_object); --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public class WebWindowFeatures : GLib.Object { --		[CCode (has_construct_function = false)] --		public WebWindowFeatures (); --		public bool equal (WebKit.WebWindowFeatures features2); --		[NoAccessorMethod] --		public bool fullscreen { get; set construct; } --		[NoAccessorMethod] --		public int height { get; set construct; } --		[NoAccessorMethod] --		public bool locationbar_visible { get; set construct; } --		[NoAccessorMethod] --		public bool menubar_visible { get; set construct; } --		[NoAccessorMethod] --		public bool scrollbar_visible { get; set construct; } --		[NoAccessorMethod] --		public bool statusbar_visible { get; set construct; } --		[NoAccessorMethod] --		public bool toolbar_visible { get; set construct; } --		[NoAccessorMethod] --		public int width { get; set construct; } --		[NoAccessorMethod] --		public int x { get; set construct; } --		[NoAccessorMethod] --		public int y { get; set construct; } --	} --	[CCode (cprefix = "WEBKIT_CACHE_MODEL_", cheader_filename = "webkit/webkit.h")] --	public enum CacheModel { --		DOCUMENT_VIEWER, --		WEB_BROWSER --	} --	[CCode (cprefix = "WEBKIT_DOWNLOAD_ERROR_", cheader_filename = "webkit/webkit.h")] --	public enum DownloadError { --		CANCELLED_BY_USER, --		DESTINATION, --		NETWORK --	} --	[CCode (cprefix = "WEBKIT_DOWNLOAD_STATUS_", cheader_filename = "webkit/webkit.h")] --	public enum DownloadStatus { --		ERROR, --		CREATED, --		STARTED, --		CANCELLED, --		FINISHED --	} --	[CCode (cprefix = "WEBKIT_EDITING_BEHAVIOR_", cheader_filename = "webkit/webkit.h")] --	public enum EditingBehavior { --		MAC, --		WINDOWS --	} --	[CCode (cprefix = "WEBKIT_HIT_TEST_RESULT_CONTEXT_", cheader_filename = "webkit/webkit.h")] --	[Flags] --	public enum HitTestResultContext { --		DOCUMENT, --		LINK, --		IMAGE, --		MEDIA, --		SELECTION, --		EDITABLE --	} --	[CCode (cprefix = "WEBKIT_LOAD_", cheader_filename = "webkit/webkit.h")] --	public enum LoadStatus { --		PROVISIONAL, --		COMMITTED, --		FINISHED, --		FIRST_VISUALLY_NON_EMPTY_LAYOUT, --		FAILED --	} --	[CCode (cprefix = "WEBKIT_NAVIGATION_RESPONSE_", cheader_filename = "webkit/webkit.h")] --	public enum NavigationResponse { --		ACCEPT, --		IGNORE, --		DOWNLOAD --	} --	[CCode (cprefix = "WEBKIT_NETWORK_ERROR_", cheader_filename = "webkit/webkit.h")] --	public enum NetworkError { --		FAILED, --		TRANSPORT, --		UNKNOWN_PROTOCOL, --		CANCELLED, --		FILE_DOES_NOT_EXIST --	} --	[CCode (cprefix = "WEBKIT_PLUGIN_ERROR_", cheader_filename = "webkit/webkit.h")] --	public enum PluginError { --		FAILED, --		CANNOT_FIND_PLUGIN, --		CANNOT_LOAD_PLUGIN, --		JAVA_UNAVAILABLE, --		CONNECTION_CANCELLED, --		WILL_HANDLE_LOAD --	} --	[CCode (cprefix = "WEBKIT_POLICY_ERROR_", cheader_filename = "webkit/webkit.h")] --	public enum PolicyError { --		FAILED, --		CANNOT_SHOW_MIME_TYPE, --		CANNOT_SHOW_URL, --		FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE, --		CANNOT_USE_RESTRICTED_PORT --	} --	[CCode (cprefix = "WEBKIT_WEB_NAVIGATION_REASON_", cheader_filename = "webkit/webkit.h")] --	public enum WebNavigationReason { --		LINK_CLICKED, --		FORM_SUBMITTED, --		BACK_FORWARD, --		RELOAD, --		FORM_RESUBMITTED, --		OTHER --	} --	[CCode (cprefix = "WEBKIT_WEB_VIEW_TARGET_INFO_", cheader_filename = "webkit/webkit.h")] --	public enum WebViewTargetInfo { --		HTML, --		TEXT, --		IMAGE, --		URI_LIST, --		NETSCAPE_URL --	} --	[CCode (cheader_filename = "webkit/webkit.h")] --	public const int MAJOR_VERSION; --	[CCode (cheader_filename = "webkit/webkit.h")] --	public const int MICRO_VERSION; --	[CCode (cheader_filename = "webkit/webkit.h")] --	public const int MINOR_VERSION; --	[CCode (cheader_filename = "webkit/webkit.h")] --	public const int USER_AGENT_MAJOR_VERSION; --	[CCode (cheader_filename = "webkit/webkit.h")] --	public const int USER_AGENT_MINOR_VERSION; --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static bool check_version (uint major, uint minor, uint micro); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static void geolocation_policy_allow (WebKit.GeolocationPolicyDecision decision); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static void geolocation_policy_deny (WebKit.GeolocationPolicyDecision decision); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static WebKit.CacheModel get_cache_model (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static unowned Soup.Session get_default_session (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static uint64 get_default_web_database_quota (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static unowned string get_web_database_directory_path (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static uint major_version (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static uint micro_version (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static uint minor_version (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static GLib.Quark network_error_quark (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static GLib.Quark plugin_error_quark (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static GLib.Quark policy_error_quark (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static void remove_all_web_databases (); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static void set_cache_model (WebKit.CacheModel cache_model); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static void set_default_web_database_quota (uint64 defaultQuota); --	[CCode (cheader_filename = "webkit/webkit.h")] --	public static void set_web_database_directory_path (string path); --} ---  -2.5.0
\ No newline at end of file diff --git a/debian/patches/0501-Dont-pack-webview-into-a-scrolled-window.patch b/debian/patches/0501-Dont-pack-webview-into-a-scrolled-window.patch deleted file mode 100644 index a5820dd..0000000 --- a/debian/patches/0501-Dont-pack-webview-into-a-scrolled-window.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 130ebe6f1eda9564e89ab617bdfa30a50f828e47 Mon Sep 17 00:00:00 2001 -From: Michael Catanzaro <mcatanzaro@igalia.com> -Date: Fri, 4 Dec 2015 17:33:43 +0100 -Subject: [PATCH] Don't pack webview into a scrolled window - -The scrollbar is drawn by WebKitWebView in WK2. - -https://bugzilla.gnome.org/show_bug.cgi?id=751709 ---- - plugins/common/RESTSupport.vala | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) - -Index: trunk/plugins/common/RESTSupport.vala -=================================================================== ---- trunk.orig/plugins/common/RESTSupport.vala -+++ trunk/plugins/common/RESTSupport.vala -@@ -725,7 +725,6 @@ public abstract class GooglePublisher : -          -         private WebKit.WebView webview; -         private Gtk.Box pane_widget; --        private Gtk.ScrolledWindow webview_frame; -         private string auth_sequence_start_url; -  -         public signal void authorized(string auth_code); -@@ -735,18 +734,13 @@ public abstract class GooglePublisher : -  -             pane_widget = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); -  --            webview_frame = new Gtk.ScrolledWindow(null, null); --            webview_frame.set_shadow_type(Gtk.ShadowType.ETCHED_IN); --            webview_frame.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC); -- -             webview = new WebKit.WebView(); -             webview.get_settings().enable_plugins = false; -  -             webview.load_changed.connect(on_page_load_changed); -             webview.context_menu.connect(() => { return false; }); -  --            webview_frame.add(webview); --            pane_widget.pack_start(webview_frame, true, true, 0); -+            pane_widget.pack_start(webview, true, true, 0); -         } -          -         public static bool is_cache_dirty() { diff --git a/debian/patches/0502-Have-all-soup-sessions-validate-TLS-certificates.patch b/debian/patches/0502-Have-all-soup-sessions-validate-TLS-certificates.patch deleted file mode 100644 index df24283..0000000 --- a/debian/patches/0502-Have-all-soup-sessions-validate-TLS-certificates.patch +++ /dev/null @@ -1,39 +0,0 @@ -From ac6efab13554d1ef39eb8b86744234d72773c2da Mon Sep 17 00:00:00 2001 -From: Michael Catanzaro <mcatanzaro@igalia.com> -Date: Fri, 4 Dec 2015 17:34:17 +0100 -Subject: [PATCH] Have all soup sessions validate TLS certificates - -Note that this commit is *not* sufficient to fix certificate verification -on its own. The port to WK2 is also required, else WebKit's soup session -will not verify certificates. - -https://bugzilla.gnome.org/show_bug.cgi?id=751709 ---- - plugins/common/RESTSupport.vala                     | 1 + - plugins/shotwell-publishing/FacebookPublishing.vala | 1 + - 2 files changed, 2 insertions(+) - -Index: trunk/plugins/common/RESTSupport.vala -=================================================================== ---- trunk.orig/plugins/common/RESTSupport.vala -+++ trunk/plugins/common/RESTSupport.vala -@@ -20,6 +20,7 @@ public abstract class Session { -     public Session(string? endpoint_url = null) { -         this.endpoint_url = endpoint_url; -         soup_session = new Soup.SessionAsync(); -+        this.soup_session.ssl_use_system_ca_file = true; -     } -      -     protected void notify_wire_message_unqueued(Soup.Message message) { -Index: trunk/plugins/shotwell-publishing/FacebookPublishing.vala -=================================================================== ---- trunk.orig/plugins/shotwell-publishing/FacebookPublishing.vala -+++ trunk/plugins/shotwell-publishing/FacebookPublishing.vala -@@ -1473,6 +1473,7 @@ internal class GraphSession { -         this.soup_session.timeout = 15; -         this.access_token = null; -         this.current_message = null; -+        this.soup_session.ssl_use_system_ca_file = true; -     } -  -     ~GraphSession() { diff --git a/debian/patches/0503-facebook-Dont-disable-XSS-auditor.patch b/debian/patches/0503-facebook-Dont-disable-XSS-auditor.patch deleted file mode 100644 index 976b6ec..0000000 --- a/debian/patches/0503-facebook-Dont-disable-XSS-auditor.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 2a1dd48e702b0e8524a4ed212252aa4c49c6b0f0 Mon Sep 17 00:00:00 2001 -From: Michael Catanzaro <mcatanzaro@igalia.com> -Date: Fri, 4 Dec 2015 18:08:54 +0100 -Subject: [PATCH] facebook: Don't disable XSS auditor - -This is a separate commit to make it possible to revert easily, as -I don't know why it was disabled. - -https://bugzilla.gnome.org/show_bug.cgi?id=751709 ---- - plugins/shotwell-publishing/FacebookPublishing.vala | 1 - - 1 file changed, 1 deletion(-) - -Index: trunk/plugins/shotwell-publishing/FacebookPublishing.vala -=================================================================== ---- trunk.orig/plugins/shotwell-publishing/FacebookPublishing.vala -+++ trunk/plugins/shotwell-publishing/FacebookPublishing.vala -@@ -829,7 +829,6 @@ internal class WebAuthenticationPane : S -  -         webview = new WebKit.WebView(); -         webview.get_settings().enable_plugins = false; --        webview.get_settings().enable_xss_auditor = false; -  -         webview.load_changed.connect(on_page_load_changed); -         webview.context_menu.connect(() => { return true; }); diff --git a/debian/patches/0510-Delay_size_request.patch b/debian/patches/0510-Delay_size_request.patch deleted file mode 100644 index 7c03791..0000000 --- a/debian/patches/0510-Delay_size_request.patch +++ /dev/null @@ -1,26 +0,0 @@ -Description: Delay size_request -Author: Jens Georg <mail@jensge.org> -Origin: https://git.gnome.org/browse/shotwell/commit/?id=4a70d87 -Bug: https://bugzilla.gnome.org/show_bug.cgi?id=766864 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823835 -Forwarded: not-needed -Last-Update: 2015-06-05 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: trunk/src/CheckerboardLayout.vala -=================================================================== ---- trunk.orig/src/CheckerboardLayout.vala -+++ trunk/src/CheckerboardLayout.vala -@@ -911,7 +911,11 @@ public class CheckerboardLayout : Gtk.Dr -             debug("on_viewport_resized: due_to_reflow=%s set_size_request %dx%d", -                 size_allocate_due_to_reflow.to_string(), parent_allocation.width, req.height); - #endif --            set_size_request(parent_allocation.width - SCROLLBAR_PLACEHOLDER_WIDTH, req.height); -+            // But if the current height is 0, don't request a size yet. Delay -+            // it to do_reflow (bgo#766864) -+            if (req.height != 0) { -+                set_size_request(parent_allocation.width - SCROLLBAR_PLACEHOLDER_WIDTH, req.height); -+            } -         } else { -             // set the layout's width and height to always match the parent's -             set_size_request(parent_allocation.width, parent_allocation.height); diff --git a/debian/patches/0515-Fix_background_color_drawing.patch b/debian/patches/0515-Fix_background_color_drawing.patch deleted file mode 100644 index 04a1adb..0000000 --- a/debian/patches/0515-Fix_background_color_drawing.patch +++ /dev/null @@ -1,32 +0,0 @@ -Description: Fix background color drawing -Author: Jens Georg <mail@jensge.org> -Origin: https://git.gnome.org/browse/shotwell/commit/?id=7361b3f -Bug: https://bugzilla.gnome.org/show_bug.cgi?id=766864 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823835 -Forwarded: not-needed -Last-Update: 2015-06-05 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: trunk/src/CheckerboardLayout.vala -=================================================================== ---- trunk.orig/src/CheckerboardLayout.vala -+++ trunk/src/CheckerboardLayout.vala -@@ -1812,6 +1812,10 @@ public class CheckerboardLayout : Gtk.Dr -         // we want switched_to() to be the final call in the process (indicating that the page is -         // now in place and should do its thing to update itself), have to be be prepared for -         // GTK/GDK calls between the widgets being actually present on the screen and "switched to" -+ -+        Gtk.Allocation allocation; -+        get_allocation(out allocation); -+        get_style_context().render_background (ctx, 0, 0, allocation.width, allocation.height); -          -         // watch for message mode -         if (message == null) { -@@ -1833,7 +1837,6 @@ public class CheckerboardLayout : Gtk.Dr -             int text_width, text_height; -             pango_layout.get_pixel_size(out text_width, out text_height); -              --            Gtk.Allocation allocation; -             get_allocation(out allocation); -              -             int x = allocation.width - text_width; diff --git a/debian/patches/0600-remove_wrong_marco.patch b/debian/patches/0600-remove_wrong_marco.patch deleted file mode 100644 index 42ec942..0000000 --- a/debian/patches/0600-remove_wrong_marco.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: Remove wrong macro 'R' from manpage -Author: Jörg Frings-Fürst <debian@jff-webhosting.net> -Last-Update: 2016-08-20 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: trunk/help/shotwell.1 -=================================================================== ---- trunk.orig/help/shotwell.1 -+++ trunk/help/shotwell.1 -@@ -13,7 +13,8 @@ import photos from disk or camera, organ -  - .SH "OPTIONS" - .B \-h, \-\-help --.R Show help options -+Show help options -+.RE -  - .B \-d, \-\-datadir=DIRECTORY - .RS diff --git a/debian/patches/505-fix-viewer-desktop-file.patch b/debian/patches/505-fix-viewer-desktop-file.patch deleted file mode 100644 index 30505b5..0000000 --- a/debian/patches/505-fix-viewer-desktop-file.patch +++ /dev/null @@ -1,27 +0,0 @@ -Description: Fix viewer desktop file - A typo in the Makefile, probably due to a quick copy/paste, results in an - incorrectly generated desktop file for the photo viewer. -Author: Raphaël Halimi <raphael.halimi@gmail.com> -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776745 -Bug: https://bugzilla.gnome.org/show_bug.cgi?id=743799 -Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=743799 -Applied-Upstream: 0.22.0, https://git.gnome.org/browse/shotwell/commit/?id=2ecda59a5562565967647b6c3d44dd99a48a04ef -Last-Update: 2015-04-03 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: trunk/Makefile -=================================================================== ---- trunk.orig/Makefile -+++ trunk/Makefile -@@ -493,9 +493,8 @@ endif - misc/shotwell-viewer.desktop: misc/shotwell-viewer.desktop.head $(EXPANDED_CORE_PO_FILES) - 	cp misc/shotwell-viewer.desktop.head misc/shotwell-viewer.desktop - 	$(foreach lang,$(CORE_SUPPORTED_LANGUAGES), echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack \ --		LANGUAGE=$(lang) gettext --domain=shotwell $(DESKTOP_APP_FULL_NAME)` \ --		echo X-GNOME-FullName[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \ --		--domain=shotwell $(DIRECT_EDIT_DESKTOP_APP_FULL_NAME)` >> misc/shotwell-viewer.desktop ; \ -+		LANGUAGE=$(lang) gettext --domain=shotwell $(DIRECT_EDIT_DESKTOP_APP_FULL_NAME)` \ -+		>> misc/shotwell-viewer.desktop ; \ - 		echo GenericName[$(lang)]=`TEXTDOMAINDIR=locale-langpack LANGUAGE=$(lang) gettext \ - 		--domain=shotwell $(DIRECT_EDIT_DESKTOP_APPLICATION_CLASS)` >> misc/shotwell-viewer.desktop ;) - ifndef DISABLE_DESKTOP_VALIDATE diff --git a/debian/patches/series b/debian/patches/series index 0bf22a4..7fbf718 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,14 +1,2 @@ -#0001-buildflags.patch -#0005-hardening.patch -#0010-libexec.patch -#0500-Port-to-webkit2gtk-40.patch -#0501-Dont-pack-webview-into-a-scrolled-window.patch -#0502-Have-all-soup-sessions-validate-TLS-certificates.patch -#0503-facebook-Dont-disable-XSS-auditor.patch -#0600-remove_wrong_marco.patch -#0100-ios8.patch -#0510-Delay_size_request.patch -#0515-Fix_background_color_drawing.patch -#505-fix-viewer-desktop-file.patch  0105-gitversion.patch -#0110-fix_GoogleAuthenticator.patch +0115-fix_meson_build.patch diff --git a/meson.build b/meson.build index 1b8e72e..ebc9847 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@  project('shotwell', ['vala', 'c'], -        version : '0.30.5', +        version : '0.30.7',          meson_version : '>= 0.43.0',          default_options : ['buildtype=debugoptimized']) diff --git a/plugins/authenticator/shotwell/FlickrPublishingAuthenticator.vala b/plugins/authenticator/shotwell/FlickrPublishingAuthenticator.vala index ea4d9ce..82448e2 100644 --- a/plugins/authenticator/shotwell/FlickrPublishingAuthenticator.vala +++ b/plugins/authenticator/shotwell/FlickrPublishingAuthenticator.vala @@ -51,6 +51,10 @@ namespace Publishing.Authenticator.Shotwell.Flickr {              var ctx = WebKit.WebContext.get_default();              ctx.register_uri_scheme("shotwell-auth", this.on_shotwell_auth_request_cb); + +            var mgr = ctx.get_security_manager(); +            mgr.register_uri_scheme_as_secure("shotwell-auth"); +            mgr.register_uri_scheme_as_cors_enabled("shotwell-auth");          }          public override void on_page_load() { diff --git a/plugins/authenticator/shotwell/OAuth1Authenticator.vala b/plugins/authenticator/shotwell/OAuth1Authenticator.vala index 399b66f..39752ec 100644 --- a/plugins/authenticator/shotwell/OAuth1Authenticator.vala +++ b/plugins/authenticator/shotwell/OAuth1Authenticator.vala @@ -12,7 +12,7 @@ namespace Publishing.Authenticator.Shotwell.OAuth1 {          protected Publishing.RESTSupport.OAuth1.Session session;          protected Spit.Publishing.PluginHost host; -        public Authenticator(string api_key, string api_secret, Spit.Publishing.PluginHost host) { +        protected Authenticator(string api_key, string api_secret, Spit.Publishing.PluginHost host) {              base();              this.host = host; diff --git a/plugins/common/RESTSupport.vala b/plugins/common/RESTSupport.vala index 5cd3768..0d0a3fb 100644 --- a/plugins/common/RESTSupport.vala +++ b/plugins/common/RESTSupport.vala @@ -31,7 +31,7 @@ public abstract class Session {      public signal void authenticated();      public signal void authentication_failed(Spit.Publishing.PublishingError err); -    public Session(string? endpoint_url = null) { +    protected Session(string? endpoint_url = null) {          this.endpoint_url = endpoint_url;          soup_session = new Soup.Session ();          this.soup_session.ssl_use_system_ca_file = true; @@ -685,7 +685,7 @@ public abstract class BatchUploader {      public signal void upload_complete(int num_photos_published);      public signal void upload_error(Spit.Publishing.PublishingError err); -    public BatchUploader(Session session, Spit.Publishing.Publishable[] publishables) { +    protected BatchUploader(Session session, Spit.Publishing.Publishable[] publishables) {          this.publishables = publishables;          this.session = session;      } diff --git a/plugins/common/WebAuthenticationPane.vala b/plugins/common/WebAuthenticationPane.vala index 1704780..43afe65 100644 --- a/plugins/common/WebAuthenticationPane.vala +++ b/plugins/common/WebAuthenticationPane.vala @@ -43,6 +43,11 @@ namespace Shotwell.Plugins.Common {          }          private bool on_page_load_failed (WebKit.LoadEvent load_event, string uri, Error error) { +            // OAuth call-back scheme. Produces a load error because it is not HTTP(S) +            // Do not set the load_error, but continue the error handling +            if (uri.has_prefix ("shotwell-auth://")) +                return false; +              critical ("Failed to load uri %s: %s", uri, error.message);              this.load_error = error; diff --git a/plugins/shotwell-publishing/FacebookPublishing.vala b/plugins/shotwell-publishing/FacebookPublishing.vala index c979b26..1633269 100644 --- a/plugins/shotwell-publishing/FacebookPublishing.vala +++ b/plugins/shotwell-publishing/FacebookPublishing.vala @@ -1002,7 +1002,7 @@ internal class GraphSession {          public weak GraphSession host_session;          public int bytes_so_far; -        public GraphMessageImpl(GraphSession host_session, Publishing.RESTSupport.HttpMethod method, +        protected GraphMessageImpl(GraphSession host_session, Publishing.RESTSupport.HttpMethod method,              string relative_uri, string access_token, Endpoint endpoint = Endpoint.DEFAULT) {              this.method = method;              this.access_token = access_token; diff --git a/plugins/shotwell-transitions/shotwell-transitions.vala b/plugins/shotwell-transitions/shotwell-transitions.vala index 7673414..1d2344f 100644 --- a/plugins/shotwell-transitions/shotwell-transitions.vala +++ b/plugins/shotwell-transitions/shotwell-transitions.vala @@ -56,7 +56,7 @@ public abstract class ShotwellTransitionDescriptor : Object, Spit.Pluggable, Spi      private static Gdk.Pixbuf[] icon_pixbuf_set = null; -    public ShotwellTransitionDescriptor(GLib.File resource_directory) { +    protected ShotwellTransitionDescriptor(GLib.File resource_directory) {          if (icon_pixbuf_set == null)              icon_pixbuf_set =                  Resources.load_from_resource(Resources.RESOURCE_PATH + "/" + ICON_FILENAME); diff --git a/src/AppWindow.vala b/src/AppWindow.vala index 5c1496e..a5b27a4 100644 --- a/src/AppWindow.vala +++ b/src/AppWindow.vala @@ -283,7 +283,7 @@ public abstract class PageWindow : Gtk.ApplicationWindow {      protected virtual void switched_pages(Page? old_page, Page? new_page) {      } -    public PageWindow() { +    protected PageWindow() {          Object (application: Application.get_instance().get_system_app ());          // the current page needs to know when modifier keys are pressed @@ -407,7 +407,7 @@ public abstract class AppWindow : PageWindow {      protected int pos_x = 0;      protected int pos_y = 0; -    public AppWindow() { +    protected AppWindow() {          base();          // although there are multiple AppWindow types, only one may exist per-process diff --git a/src/CheckerboardLayout.vala b/src/CheckerboardLayout.vala index c2d1a52..70e3b5c 100644 --- a/src/CheckerboardLayout.vala +++ b/src/CheckerboardLayout.vala @@ -138,7 +138,7 @@ public abstract class CheckerboardItem : ThumbnailView {      private int row = -1;      private int horizontal_trinket_offset = 0; -    public CheckerboardItem(ThumbnailSource source, Dimensions initial_pixbuf_dim, string title, string? comment, +    protected CheckerboardItem(ThumbnailSource source, Dimensions initial_pixbuf_dim, string title, string? comment,          bool marked_up = false, Pango.Alignment alignment = Pango.Alignment.LEFT) {          base(source); diff --git a/src/CollectionPage.vala b/src/CollectionPage.vala index 4206ec8..ac05f8b 100644 --- a/src/CollectionPage.vala +++ b/src/CollectionPage.vala @@ -29,7 +29,7 @@ public abstract class CollectionPage : MediaPage {      private ExporterUI exporter = null;      private CollectionSearchViewFilter search_filter = new CollectionSearchViewFilter(); -    public CollectionPage(string page_name) { +    protected CollectionPage(string page_name) {          base (page_name);          get_view().items_altered.connect(on_photos_altered); diff --git a/src/ColorTransformation.vala b/src/ColorTransformation.vala index 8595e96..6a1f822 100644 --- a/src/ColorTransformation.vala +++ b/src/ColorTransformation.vala @@ -268,8 +268,8 @@ public abstract class PixelTransformation {      private PixelTransformationType type;      private PixelFormat preferred_format; -    public PixelTransformation(PixelTransformationType type, -                               PixelFormat preferred_format) { +    protected PixelTransformation(PixelTransformationType type, +                                  PixelFormat preferred_format) {          this.type = type;          this.preferred_format = preferred_format;      } @@ -476,7 +476,7 @@ public class RGBTransformation : PixelTransformation {  public abstract class HSVTransformation : PixelTransformation {      protected float remap_table[256]; -    public HSVTransformation(PixelTransformationType type) { +    protected HSVTransformation(PixelTransformationType type) {          base(type, PixelFormat.HSV);      } diff --git a/src/CommandManager.vala b/src/CommandManager.vala index c7e40ab..398dc46 100644 --- a/src/CommandManager.vala +++ b/src/CommandManager.vala @@ -29,7 +29,7 @@ public abstract class Command : Object, CommandDescription {      private string explanation;      private weak CommandManager manager = null; -    public Command(string name, string explanation) { +    protected Command(string name, string explanation) {          this.name = name;          this.explanation = explanation;      } diff --git a/src/Commands.vala b/src/Commands.vala index 6924f82..2b9eac1 100644 --- a/src/Commands.vala +++ b/src/Commands.vala @@ -12,7 +12,7 @@ public abstract class PageCommand : Command {      private Photo library_photo = null;      private CollectionPage collection_page = null; -    public PageCommand(string name, string explanation) { +    protected PageCommand(string name, string explanation) {          base (name, explanation);          page = AppWindow.get_instance().get_current_page(); @@ -103,7 +103,7 @@ public abstract class PageCommand : Command {  public abstract class SingleDataSourceCommand : PageCommand {      protected DataSource source; -    public SingleDataSourceCommand(DataSource source, string name, string explanation) { +    protected SingleDataSourceCommand(DataSource source, string name, string explanation) {          base(name, explanation);          this.source = source; @@ -130,7 +130,7 @@ public abstract class SimpleProxyableCommand : PageCommand {      private SourceProxy proxy;      private Gee.HashSet<SourceProxy> proxies = new Gee.HashSet<SourceProxy>(); -    public SimpleProxyableCommand(Proxyable proxyable, string name, string explanation) { +    protected SimpleProxyableCommand(Proxyable proxyable, string name, string explanation) {          base (name, explanation);          proxy = proxyable.get_proxy(); @@ -183,7 +183,7 @@ public abstract class SimpleProxyableCommand : PageCommand {  public abstract class SinglePhotoTransformationCommand : SingleDataSourceCommand {      private PhotoTransformationState state; -    public SinglePhotoTransformationCommand(Photo photo, string name, string explanation) { +    protected SinglePhotoTransformationCommand(Photo photo, string name, string explanation) {          base(photo, name, explanation);          state = photo.save_transformation_state(); @@ -207,7 +207,7 @@ public abstract class GenericPhotoTransformationCommand : SingleDataSourceComman      private PhotoTransformationState original_state = null;      private PhotoTransformationState transformed_state = null; -    public GenericPhotoTransformationCommand(Photo photo, string name, string explanation) { +    protected GenericPhotoTransformationCommand(Photo photo, string name, string explanation) {          base(photo, name, explanation);      } @@ -282,7 +282,7 @@ public abstract class MultipleDataSourceCommand : PageCommand {      private Gee.ArrayList<DataSource> acted_upon = new Gee.ArrayList<DataSource>();      private Gee.HashSet<SourceCollection> hooked_collections = new Gee.HashSet<SourceCollection>(); -    public MultipleDataSourceCommand(Gee.Iterable<DataView> iter, string progress_text, +    protected MultipleDataSourceCommand(Gee.Iterable<DataView> iter, string progress_text,          string undo_progress_text, string name, string explanation) {          base(name, explanation); @@ -414,7 +414,7 @@ public abstract class MultipleDataSourceAtOnceCommand : PageCommand {      private Gee.HashSet<DataSource> sources = new Gee.HashSet<DataSource>();      private Gee.HashSet<SourceCollection> hooked_collections = new Gee.HashSet<SourceCollection>(); -    public MultipleDataSourceAtOnceCommand(Gee.Collection<DataSource> sources, string name, +    protected MultipleDataSourceAtOnceCommand(Gee.Collection<DataSource> sources, string name,          string explanation) {          base (name, explanation); @@ -490,7 +490,7 @@ public abstract class MultiplePhotoTransformationCommand : MultipleDataSourceCom      private Gee.HashMap<Photo, PhotoTransformationState> map = new Gee.HashMap<          Photo, PhotoTransformationState>(); -    public MultiplePhotoTransformationCommand(Gee.Iterable<DataView> iter, string progress_text, +    protected MultiplePhotoTransformationCommand(Gee.Iterable<DataView> iter, string progress_text,          string undo_progress_text, string name, string explanation) {          base(iter, progress_text, undo_progress_text, name, explanation); @@ -963,7 +963,7 @@ public abstract class MovePhotosCommand : Command {      protected RealMovePhotosCommand real_command; -    public MovePhotosCommand(string name, string explanation) { +    protected MovePhotosCommand(string name, string explanation) {          base(name, explanation);      } diff --git a/src/Dialogs.vala b/src/Dialogs.vala index d99ac9f..dc9f5a0 100644 --- a/src/Dialogs.vala +++ b/src/Dialogs.vala @@ -612,7 +612,7 @@ internal void save_import_results(Gtk.Window? chooser_dialog_parent, string resu  public abstract class TextEntryDialogMediator {      private TextEntryDialog dialog; -    public TextEntryDialogMediator(string title, string label, string? initial_text = null, +    protected TextEntryDialogMediator(string title, string label, string? initial_text = null,          Gee.Collection<string>? completion_list = null, string? completion_delimiter = null) {          dialog = new TextEntryDialog();          dialog.setup(on_modify_validate, title, label, initial_text, completion_list, completion_delimiter); @@ -630,7 +630,7 @@ public abstract class TextEntryDialogMediator {  public abstract class MultiTextEntryDialogMediator {      private MultiTextEntryDialog dialog; -    public MultiTextEntryDialogMediator(string title, string label, string? initial_text = null) { +    protected MultiTextEntryDialogMediator(string title, string label, string? initial_text = null) {          dialog = new MultiTextEntryDialog();          dialog.setup(on_modify_validate, title, label, initial_text);      } @@ -822,7 +822,7 @@ public void multiple_object_error_dialog(Gee.ArrayList<DataObject> objects, stri  }  public abstract class TagsDialog : TextEntryDialogMediator { -    public TagsDialog(string title, string label, string? initial_text = null) { +    protected TagsDialog(string title, string label, string? initial_text = null) {          base (title, label, initial_text, HierarchicalTagIndex.get_global_index().get_all_tags(),              ",");      } diff --git a/src/MediaDataRepresentation.vala b/src/MediaDataRepresentation.vala index f4b9f7d..6e6af00 100644 --- a/src/MediaDataRepresentation.vala +++ b/src/MediaDataRepresentation.vala @@ -36,7 +36,7 @@ public abstract class MediaSource : ThumbnailSource, Indexable {      private Event? event = null;      private string? indexable_keywords = null; -    public MediaSource(int64 object_id = INVALID_OBJECT_ID) { +    protected MediaSource(int64 object_id = INVALID_OBJECT_ID) {          base (object_id);      } @@ -381,7 +381,7 @@ public abstract class MediaSourceCollection : DatabaseSourceCollection {      public virtual signal void flagged_contents_altered() {      } -    public MediaSourceCollection(string name, GetSourceDatabaseKey source_key_func) { +    protected MediaSourceCollection(string name, GetSourceDatabaseKey source_key_func) {          base(name, source_key_func);          trashcan = create_trashcan(); diff --git a/src/MediaInterfaces.vala b/src/MediaInterfaces.vala index 37209cf..1a352a2 100644 --- a/src/MediaInterfaces.vala +++ b/src/MediaInterfaces.vala @@ -51,9 +51,6 @@  public abstract class TransactionController {      private int count = 0; -    public TransactionController() { -    } -          ~TransactionController() {          lock (count) {              assert(count == 0); diff --git a/src/MediaMetadata.vala b/src/MediaMetadata.vala index 68f7251..b2ba1b7 100644 --- a/src/MediaMetadata.vala +++ b/src/MediaMetadata.vala @@ -5,9 +5,6 @@   */  public abstract class MediaMetadata { -    public MediaMetadata() { -    } -          public abstract void read_from_file(File file) throws Error;      public abstract MetadataDateTime? get_creation_date_time(); diff --git a/src/MediaMonitor.vala b/src/MediaMonitor.vala index a36f689..9c9d62d 100644 --- a/src/MediaMonitor.vala +++ b/src/MediaMonitor.vala @@ -115,7 +115,7 @@ public abstract class MediaMonitor : Object {          MonitorableUpdates>();      private uint pending_updates_timer_id = 0; -    public MediaMonitor(MediaSourceCollection sources, Cancellable cancellable) { +    protected MediaMonitor(MediaSourceCollection sources, Cancellable cancellable) {          this.sources = sources;          this.cancellable = cancellable; diff --git a/src/MediaPage.vala b/src/MediaPage.vala index 8316906..f849ac3 100644 --- a/src/MediaPage.vala +++ b/src/MediaPage.vala @@ -161,7 +161,7 @@ public abstract class MediaPage : CheckerboardPage {      private DragAndDropHandler dnd_handler = null;      private MediaViewTracker tracker; -    public MediaPage(string page_name) { +    protected MediaPage(string page_name) {          base (page_name);          tracker = new MediaViewTracker(get_view()); diff --git a/src/Page.vala b/src/Page.vala index b92eaa0..65b263b 100644 --- a/src/Page.vala +++ b/src/Page.vala @@ -1243,7 +1243,7 @@ public abstract class CheckerboardPage : Page {          public bool super_pressed;      } -    public CheckerboardPage(string page_name) { +    protected CheckerboardPage(string page_name) {          base (page_name);          layout = new CheckerboardLayout(get_view()); @@ -1989,7 +1989,7 @@ public abstract class SinglePhotoPage : Page {      private bool has_saved_zoom_state = false;      private uint32 last_nav_key = 0; -    public SinglePhotoPage(string page_name, bool scale_up_to_viewport) { +    protected SinglePhotoPage(string page_name, bool scale_up_to_viewport) {          base(page_name);          this.scale_up_to_viewport = scale_up_to_viewport; diff --git a/src/Photo.vala b/src/Photo.vala index ae0f489..41b6f1d 100644 --- a/src/Photo.vala +++ b/src/Photo.vala @@ -69,9 +69,6 @@ public abstract class PhotoTransformationState : Object {          is_broke = true;      } -    protected PhotoTransformationState() { -    } -          public bool is_broken() {          return is_broke;      } diff --git a/src/PhotoPage.vala b/src/PhotoPage.vala index af1d50c..bced0ea 100644 --- a/src/PhotoPage.vala +++ b/src/PhotoPage.vala @@ -417,7 +417,7 @@ public abstract class EditingHostPage : SinglePhotoPage {      private ZoomBuffer? zoom_buffer = null;      private Gee.HashMap<string, int> last_locations = new Gee.HashMap<string, int>(); -    public EditingHostPage(SourceCollection sources, string name) { +    protected EditingHostPage(SourceCollection sources, string name) {          base(name, false);          this.sources = sources; diff --git a/src/PixbufCache.vala b/src/PixbufCache.vala index 6ab4426..6ff740e 100644 --- a/src/PixbufCache.vala +++ b/src/PixbufCache.vala @@ -25,7 +25,7 @@ public class PixbufCache : Object {          public Gdk.Pixbuf pixbuf = null;          public Error err = null; -        public FetchJob(PixbufCache owner, BackgroundJob.JobPriority priority, Photo photo,  +        protected FetchJob(PixbufCache owner, BackgroundJob.JobPriority priority, Photo photo,               Scaling scaling, CompletionCallback callback) {              base(owner, callback, new Cancellable(), null, new Semaphore()); diff --git a/src/Properties.vala b/src/Properties.vala index 2a07bb0..ad0a041 100644 --- a/src/Properties.vala +++ b/src/Properties.vala @@ -7,7 +7,7 @@  private abstract class Properties : Gtk.Grid {      uint line_count = 0; -    public Properties() { +    protected Properties() {          row_spacing = 6;          column_spacing = 12;      } diff --git a/src/VideoSupport.vala b/src/VideoSupport.vala index 857a901..533dfe6 100644 --- a/src/VideoSupport.vala +++ b/src/VideoSupport.vala @@ -232,7 +232,11 @@ public class VideoReader {          debug("Thumbnailer timer called");          if (thumbnailer_pid != 0) {              debug("Killing thumbnailer process: %d", thumbnailer_pid); +#if VALA_0_40 +            Posix.kill(thumbnailer_pid, Posix.Signal.KILL); +#else              Posix.kill(thumbnailer_pid, Posix.SIGKILL); +#endif          }          return false; // Don't call again.      } diff --git a/src/camera/ImportPage.vala b/src/camera/ImportPage.vala index 0839590..3f70f08 100644 --- a/src/camera/ImportPage.vala +++ b/src/camera/ImportPage.vala @@ -25,7 +25,7 @@ abstract class ImportSource : ThumbnailSource, Indexable {      private Gdk.Pixbuf? preview = null;      private string? indexable_keywords = null; -    public ImportSource(string camera_name, GPhoto.Camera camera, int fsid, string folder, +    protected ImportSource(string camera_name, GPhoto.Camera camera, int fsid, string folder,          string filename, ulong file_size, time_t modification_time) {          this.camera_name = camera_name;          this.camera = camera; diff --git a/src/core/ContainerSourceCollection.vala b/src/core/ContainerSourceCollection.vala index cf6218a..0b231dc 100644 --- a/src/core/ContainerSourceCollection.vala +++ b/src/core/ContainerSourceCollection.vala @@ -35,7 +35,7 @@ public abstract class ContainerSourceCollection : DatabaseSourceCollection {          Gee.Collection<DataSource> sources) {      } -    public ContainerSourceCollection(string backlink_name, string name, +    protected ContainerSourceCollection(string backlink_name, string name,          GetSourceDatabaseKey source_key_func) {          base (name, source_key_func); diff --git a/src/core/DataObject.vala b/src/core/DataObject.vala index 3c98e9e..62241b5 100644 --- a/src/core/DataObject.vala +++ b/src/core/DataObject.vala @@ -35,7 +35,7 @@ public abstract class DataObject : Object {      // NOTE: Supplying an object ID should *only* be used when reconstituting the object (generally      // only done by DataSources). -    public DataObject(int64 object_id = INVALID_OBJECT_ID) { +    protected DataObject(int64 object_id = INVALID_OBJECT_ID) {          this.object_id = (object_id == INVALID_OBJECT_ID) ? object_id_generator++ : object_id;      } diff --git a/src/core/DataSource.vala b/src/core/DataSource.vala index 352ac54..3f2eb22 100644 --- a/src/core/DataSource.vala +++ b/src/core/DataSource.vala @@ -60,7 +60,7 @@ public abstract class DataSource : DataObject {      public virtual signal void destroyed() {      } -    public DataSource(int64 object_id = INVALID_OBJECT_ID) { +    protected DataSource(int64 object_id = INVALID_OBJECT_ID) {          base (object_id);      } @@ -568,7 +568,7 @@ public abstract class SourceProxy {      public virtual signal void broken() {      } -    public SourceProxy(DataSource source) { +    protected SourceProxy(DataSource source) {          object_id = source.get_object_id();          source_string = source.to_string(); diff --git a/src/core/DataSourceTypes.vala b/src/core/DataSourceTypes.vala index 6d8479e..a79264f 100644 --- a/src/core/DataSourceTypes.vala +++ b/src/core/DataSourceTypes.vala @@ -12,7 +12,7 @@ public abstract class ThumbnailSource : DataSource {      public virtual signal void thumbnail_altered() {      } -    public ThumbnailSource(int64 object_id = INVALID_OBJECT_ID) { +    protected ThumbnailSource(int64 object_id = INVALID_OBJECT_ID) {          base (object_id);      } @@ -51,7 +51,7 @@ public abstract class ThumbnailSource : DataSource {  }  public abstract class PhotoSource : MediaSource { -    public PhotoSource(int64 object_id = INVALID_OBJECT_ID) { +    protected PhotoSource(int64 object_id = INVALID_OBJECT_ID) {          base (object_id);      } @@ -68,7 +68,7 @@ public abstract class VideoSource : MediaSource {  //  public abstract class EventSource : ThumbnailSource { -    public EventSource(int64 object_id = INVALID_OBJECT_ID) { +    protected EventSource(int64 object_id = INVALID_OBJECT_ID) {          base (object_id);      } diff --git a/src/core/DatabaseSourceCollection.vala b/src/core/DatabaseSourceCollection.vala index fec6825..2808307 100644 --- a/src/core/DatabaseSourceCollection.vala +++ b/src/core/DatabaseSourceCollection.vala @@ -17,7 +17,7 @@ public abstract class DatabaseSourceCollection : SourceCollection {      private Gee.HashMap<int64?, DataSource> map = new Gee.HashMap<int64?, DataSource>(int64_hash,           int64_equal); -    public DatabaseSourceCollection(string name, GetSourceDatabaseKey source_key_func) { +    protected DatabaseSourceCollection(string name, GetSourceDatabaseKey source_key_func) {          base (name);          this.source_key_func = source_key_func; diff --git a/src/core/SourceCollection.vala b/src/core/SourceCollection.vala index 066b813..6eaf86c 100644 --- a/src/core/SourceCollection.vala +++ b/src/core/SourceCollection.vala @@ -47,7 +47,7 @@ public abstract class SourceCollection : DataCollection {      private Gee.MultiMap<SourceBacklink, DataSource>? backlinks = null; -    public SourceCollection(string name) { +    protected SourceCollection(string name) {          base (name);      } diff --git a/src/editing_tools/EditingTools.vala b/src/editing_tools/EditingTools.vala index f92b4a2..02e366a 100644 --- a/src/editing_tools/EditingTools.vala +++ b/src/editing_tools/EditingTools.vala @@ -31,7 +31,7 @@ public abstract class EditingToolWindow : Gtk.Window {      private Gtk.Frame layout_frame = new Gtk.Frame(null);      private bool user_moved = false; -    public EditingToolWindow(Gtk.Window container) { +    protected EditingToolWindow(Gtk.Window container) {          set_decorated(false);          set_transient_for(container); @@ -110,7 +110,7 @@ public abstract class PhotoCanvas {      private Gdk.Pixbuf scaled_pixbuf;      private Gdk.Rectangle scaled_position; -    public PhotoCanvas(Gtk.Window container, Gdk.Window drawing_window, Photo photo, +    protected PhotoCanvas(Gtk.Window container, Gdk.Window drawing_window, Photo photo,          Cairo.Context default_ctx, Dimensions surface_dim, Gdk.Pixbuf scaled, Gdk.Rectangle scaled_position) {          this.container = container;          this.drawing_window = drawing_window; @@ -465,7 +465,7 @@ public abstract class EditingTool {      public signal void aborted(); -    public EditingTool(string name) { +    protected EditingTool(string name) {          this.name = name;      } @@ -2317,7 +2317,7 @@ public class AdjustTool : EditingTool {      private abstract class AdjustToolCommand : Command {          protected weak AdjustTool owner; -        public AdjustToolCommand(AdjustTool owner, string name, string explanation) { +        protected AdjustToolCommand(AdjustTool owner, string name, string explanation) {              base (name, explanation);              this.owner = owner; diff --git a/src/events/EventsBranch.vala b/src/events/EventsBranch.vala index 8980d60..097a664 100644 --- a/src/events/EventsBranch.vala +++ b/src/events/EventsBranch.vala @@ -372,9 +372,6 @@ public class Events.Branch : Sidebar.Branch {  }  public abstract class Events.DirectoryEntry : Sidebar.SimplePageEntry, Sidebar.ExpandableEntry { -    public DirectoryEntry() { -    } -          public override string? get_sidebar_icon() {          return Events.Branch.icon;      } diff --git a/src/events/EventsDirectoryPage.vala b/src/events/EventsDirectoryPage.vala index 2384a2b..e88b1a7 100644 --- a/src/events/EventsDirectoryPage.vala +++ b/src/events/EventsDirectoryPage.vala @@ -42,7 +42,7 @@ public abstract class EventsDirectoryPage : CheckerboardPage {      private EventsDirectorySearchViewFilter search_filter = new EventsDirectorySearchViewFilter(); -    public EventsDirectoryPage(string page_name, ViewManager view_manager, +    protected EventsDirectoryPage(string page_name, ViewManager view_manager,          Gee.Collection<Event>? initial_events) {          base (page_name); diff --git a/src/faces/FaceShape.vala b/src/faces/FaceShape.vala index c14b43b..21e85a9 100644 --- a/src/faces/FaceShape.vala +++ b/src/faces/FaceShape.vala @@ -27,7 +27,7 @@ public abstract class FaceShape : Object {      private weak FacesTool.FaceWidget face_widget = null; -    public FaceShape(EditingTools.PhotoCanvas canvas) { +    protected FaceShape(EditingTools.PhotoCanvas canvas) {          this.canvas = canvas;          this.canvas.new_surface.connect(prepare_ctx); diff --git a/src/library/LibraryBranch.vala b/src/library/LibraryBranch.vala index f9113f5..622162e 100644 --- a/src/library/LibraryBranch.vala +++ b/src/library/LibraryBranch.vala @@ -121,9 +121,6 @@ public abstract class Library.HideablePageEntry : Sidebar.SimplePageEntry {              visibility_changed(value);          }      } - -    public HideablePageEntry() { -    }  }  public class Library.MainPage : CollectionPage { diff --git a/src/meson.build b/src/meson.build index c452a98..e252a82 100644 --- a/src/meson.build +++ b/src/meson.build @@ -244,7 +244,6 @@ executable('shotwell',             vala_args : ['--pkg', 'libgphoto2',                          '--pkg', 'libraw',                          '--pkg', 'libexif', -                        '--pkg', 'misc',                          '--gresources',                          join_paths(meson.source_root(),                            'org.gnome.Shotwell.gresource.xml') diff --git a/src/photos/GdkSupport.vala b/src/photos/GdkSupport.vala index 2fd1926..f7e18d5 100644 --- a/src/photos/GdkSupport.vala +++ b/src/photos/GdkSupport.vala @@ -5,7 +5,7 @@   */  public abstract class GdkReader : PhotoFileReader { -    public GdkReader(string filepath, PhotoFileFormat file_format) { +    protected GdkReader(string filepath, PhotoFileFormat file_format) {          base (filepath, file_format);      } @@ -30,7 +30,7 @@ public abstract class GdkSniffer : PhotoFileSniffer {      private bool size_ready = false;      private bool area_prepared = false; -    public GdkSniffer(File file, PhotoFileSniffer.Options options) { +    protected GdkSniffer(File file, PhotoFileSniffer.Options options) {          base (file, options);      } diff --git a/src/photos/PhotoFileAdapter.vala b/src/photos/PhotoFileAdapter.vala index df49edb..ca7c662 100644 --- a/src/photos/PhotoFileAdapter.vala +++ b/src/photos/PhotoFileAdapter.vala @@ -22,7 +22,7 @@ public abstract class PhotoFileAdapter {      private PhotoFileFormat file_format;      private File file = null; -    public PhotoFileAdapter(string filepath, PhotoFileFormat file_format) { +    protected PhotoFileAdapter(string filepath, PhotoFileFormat file_format) {          this.filepath = filepath;          this.file_format = file_format;      } diff --git a/src/photos/PhotoFileSniffer.vala b/src/photos/PhotoFileSniffer.vala index 3ea1b9d..7442fde 100644 --- a/src/photos/PhotoFileSniffer.vala +++ b/src/photos/PhotoFileSniffer.vala @@ -39,7 +39,7 @@ public abstract class PhotoFileSniffer {      protected Options options;      protected bool calc_md5; -    public PhotoFileSniffer(File file, Options options) { +    protected PhotoFileSniffer(File file, Options options) {          this.file = file;          this.options = options; diff --git a/src/photos/PhotoMetadata.vala b/src/photos/PhotoMetadata.vala index 288a362..fdda0e6 100644 --- a/src/photos/PhotoMetadata.vala +++ b/src/photos/PhotoMetadata.vala @@ -96,11 +96,11 @@ public class ACDSeeKeywordTransformer : KeywordTransformer {              return;          } -        Workaround.markup_collect_attributes (name, -                                              attribute_names, -                                              attribute_values, -                                              Markup.CollectType.BOOLEAN, -                                              "Assigned", out assigned); +        Markup.collect_attributes (name, +                                   attribute_names, +                                   attribute_values, +                                   Markup.CollectType.BOOLEAN, +                                   "Assigned", out assigned);      }      private void on_end (MarkupParseContext ctx, string name) @@ -164,7 +164,7 @@ public abstract class PhotoPreview {      private string mime_type;      private string extension; -    public PhotoPreview(string name, Dimensions dimensions, uint32 size, string mime_type, string extension) { +    protected PhotoPreview(string name, Dimensions dimensions, uint32 size, string mime_type, string extension) {          this.name = name;          this.dimensions = dimensions;          this.size = size; diff --git a/src/sidebar/common.vala b/src/sidebar/common.vala index 0467ce3..ebdba51 100644 --- a/src/sidebar/common.vala +++ b/src/sidebar/common.vala @@ -55,9 +55,6 @@ public abstract class Sidebar.SimplePageEntry : Object, Sidebar.Entry, Sidebar.S      Sidebar.PageRepresentative, Sidebar.Contextable {      private Page? page = null; -    public SimplePageEntry() { -    } -          public abstract string get_sidebar_name();      public virtual string? get_sidebar_tooltip() { diff --git a/src/threads/BackgroundJob.vala b/src/threads/BackgroundJob.vala index 5d259e7..1c83ced 100644 --- a/src/threads/BackgroundJob.vala +++ b/src/threads/BackgroundJob.vala @@ -110,7 +110,7 @@ public abstract class BackgroundJob {      private int completion_priority = Priority.HIGH;      private int notification_priority = Priority.DEFAULT_IDLE; -    public BackgroundJob(Object? owner = null, CompletionCallback? callback = null, +    protected BackgroundJob(Object? owner = null, CompletionCallback? callback = null,          Cancellable? cancellable = null, CancellationCallback? cancellation = null,          AbstractSemaphore? completion_semaphore = null) {          this.owner = owner; diff --git a/src/threads/Semaphore.vala b/src/threads/Semaphore.vala index 05b1f13..dcb9e6e 100644 --- a/src/threads/Semaphore.vala +++ b/src/threads/Semaphore.vala @@ -27,7 +27,7 @@ public abstract class AbstractSemaphore {      private Mutex mutex = Mutex();      private Cond monitor = Cond(); -    public AbstractSemaphore(Type type) { +    protected AbstractSemaphore(Type type) {          assert(type == Type.SERIAL || type == Type.BROADCAST);          this.type = type; diff --git a/vapi/libgdata.vapi b/vapi/libgdata.vapi index 4141f6b..bd7c4fc 100644 --- a/vapi/libgdata.vapi +++ b/vapi/libgdata.vapi @@ -436,8 +436,6 @@ namespace GData {  		public void set_user_defined_field (string name, string? value);  		public string billing_information { get; set; }  		[NoAccessorMethod] -		public GLib.Date birthday { get; set; } -		[NoAccessorMethod]  		public bool birthday_has_year { get; set; }  		[NoAccessorMethod]  		public bool deleted { get; } @@ -1328,9 +1326,9 @@ namespace GData {  		[CCode (has_construct_function = false)]  		protected Parsable ();  		[CCode (has_construct_function = false)] -		public Parsable.from_json (GLib.Type parsable_type, string json, int length) throws GLib.Error; +		protected Parsable.from_json (GLib.Type parsable_type, string json, int length) throws GLib.Error;  		[CCode (has_construct_function = false)] -		public Parsable.from_xml (GLib.Type parsable_type, string xml, int length) throws GLib.Error; +		protected Parsable.from_xml (GLib.Type parsable_type, string xml, int length) throws GLib.Error;  		[NoWrapper]  		public virtual void get_json (Json.Builder builder);  		[CCode (cname = "gdata_parsable_get_json")] diff --git a/vapi/misc.vapi b/vapi/misc.vapi deleted file mode 100644 index 805f73e..0000000 --- a/vapi/misc.vapi +++ /dev/null @@ -1,8 +0,0 @@ -namespace Workaround { -[CCode (cheader_filename = "glib.h", cname = "g_markup_collect_attributes", sentinel = "G_MARKUP_COLLECT_INVALID")] -extern bool markup_collect_attributes(string element_name, -        [CCode (array_length = false, array_null_terminated = true)] -        string[] attribute_names, -        [CCode (array_length = false, array_null_terminated = true)] -        string[] attribute_values, ...) throws GLib.MarkupError; -} | 
