Hello community,
here is the log from the commit of package vimb for openSUSE:Factory checked in at 2019-03-27 16:22:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vimb (Old)
and /work/SRC/openSUSE:Factory/.vimb.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vimb"
Wed Mar 27 16:22:02 2019 rev:2 rq:689025 version:3.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/vimb/vimb.changes 2019-02-28 21:39:11.461625321 +0100
+++ /work/SRC/openSUSE:Factory/.vimb.new.25356/vimb.changes 2019-03-27 16:22:04.635521340 +0100
@@ -1,0 +2,22 @@
+Wed Mar 27 08:55:32 UTC 2019 - mvetter@suse.com
+
+- Update to 3.4.0:
+ Added:
+ * Allow to show video in fullscreen, without statusbar and inputbox, if requested.
+ * Added option --no-maximize to no start with maximized window #483.
+ * New setting prevent-newwindow to enforce opening links into same window
+ even if they are crafted by target="_blank" or using window.open(...)#544.
+ Changed:
+ * Increased min required webkit version to 2.20.x.
+ * Use man page date instead of build date to make reproducible builds.
+ * URLs shown on statusbar and title are now shown as punicode if they contain
+ homographs.
+ Fixed:
+ * Fix out-of-bounds buffer access in parse_command (Thanks to Sören Tempel) #529.
+ * Fixed none shown hint labels by Content-Security-Policy headers #531.
+ * Fixed segfault on JavaScript window.close() call #537.
+ * Fixed no char inserted in input mode after timeout and imap/inoremap
+ candidate #546.
+- Add vim-3.4.0-fixbuild.patch: fix non git build
+
+-------------------------------------------------------------------
Old:
----
3.3.0.tar.gz
New:
----
3.4.0.tar.gz
vim-3.4.0-fixbuild.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vimb.spec ++++++
--- /var/tmp/diff_new_pack.iQA3aG/_old 2019-03-27 16:22:05.543521150 +0100
+++ /var/tmp/diff_new_pack.iQA3aG/_new 2019-03-27 16:22:05.543521150 +0100
@@ -12,20 +12,22 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: vimb
-Version: 3.3.0
+Version: 3.4.0
Release: 0
Summary: The vim-like browser
License: GPL-3.0-or-later
Group: Productivity/Networking/Web/Browsers
URL: https://fanglingsu.github.io/vimb/
Source: https://github.com/fanglingsu/vimb/archive/%{version}.tar.gz
+# FIX-UPSTREAM - mvetter@suse.com - https://github.com/fanglingsu/vimb/pull/552
+Patch0: vim-3.4.0-fixbuild.patch
BuildRequires: gtk3-devel
-BuildRequires: webkit2gtk3-devel
+BuildRequires: webkit2gtk3-devel >= 2.20
%description
vimb is a WebKit-based web browser that behaves like the vimperator
@@ -33,6 +35,7 @@
%prep
%setup -q
+%patch0 -p1
%build
make %{?_smp_mflags}
++++++ 3.3.0.tar.gz -> 3.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/.gitignore new/vimb-3.4.0/.gitignore
--- old/vimb-3.3.0/.gitignore 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/.gitignore 2019-03-26 23:47:03.000000000 +0100
@@ -3,3 +3,4 @@
*.so
*.tar.gz
sandbox
+version.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/.travis.yml new/vimb-3.4.0/.travis.yml
--- old/vimb-3.3.0/.travis.yml 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/.travis.yml 2019-03-26 23:47:03.000000000 +0100
@@ -3,7 +3,7 @@
gh-pages
language: c
-dist: trusty
+dist: xenial
sudo: required
compiler:
@@ -11,7 +11,6 @@
- clang
before_install:
- - sudo add-apt-repository ppa:webkit-team/ppa -y
- sudo apt-get update -q
- sudo apt-get install -y --allow-unauthenticated --no-install-recommends libwebkit2gtk-4.0-dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/CHANGELOG.md new/vimb-3.4.0/CHANGELOG.md
--- old/vimb-3.3.0/CHANGELOG.md 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/CHANGELOG.md 2019-03-26 23:47:03.000000000 +0100
@@ -11,6 +11,24 @@
### Fixed
### Removed
+## [3.4.0] - 2019-03-26
+### Added
+* Allow to show video in fullscreen, without statusbar and inputbox, if requested.
+* Added option `--no-maximize` to no start with maximized window #483.
+* New setting `prevent-newwindow` to enforce opening links into same window
+ even if they are crafted by `target="_blank"` or using `window.open(...)` #544.
+### Changed
+* Increased min required webkit version to 2.20.x.
+* Use man page date instead of build date ot make reproducible builds.
+* URLs shown on statusbar and title are now shown as punicode if they contain
+ homographs.
+### Fixed
+* Fix out-of-bounds buffer access in parse_command (Thanks to Sören Tempel) #529.
+* Fixed none shown hint labels by Content-Security-Policy headers #531.
+* Fixed segfault on JavaScript `window.close()` call #537.
+* Fixed no char inserted in input mode after timeout and imap/inoremap
+ candidate #546.
+
## [3.3.0] - 2018-11-06
### Added
@@ -24,7 +42,7 @@
using names marks.
Set a marks by `m{a-z}` in normal mode. Jump to marks by `'{a-z}`.
* Re-Added `gf` to show page source (Thanks to Leonardo Taccari) #361.
- Webkit2 does not allow to show tha page in the source view mode so the `gf`
+ Webkit2 does not allow to show the page in the source view mode so the `gf`
writes the HTML to a temporary files and opens it in the editor configured
by `:set editor-command=...`
### Changed
@@ -45,8 +63,8 @@
### Added
* Allow basic motion commands for hinting too.
* Show the numbers of search matches in status bar.
-* Show dialog if the page makes a permission request e.g. gelocation to allow
- the user to make a decission.
+* Show dialog if the page makes a permission request e.g. geolocation to allow
+ the user to make a decision.
* new Setting `show-titlebar` to toggle window decorations.
### Changed
@@ -57,7 +75,7 @@
classes are not set anymore to the hints. So customized css for the hints have
to be adapted to this.
* Element ID is stored in case the editor was spawned. So it's now possible to
- start the editor, load another page, come back and paste the edotor contents
+ start the editor, load another page, come back and paste the editor contents
(thanks to Sven Speckmaier).
### Fixed
@@ -166,7 +184,7 @@
### Added
-* Queueing of key events - fixes swalled chars in case of some imap bindings
+* Queueing of key events - fixes swallowed chars in case of some imap bindings
#258 (thanks to Michael Mackus)
* Allow to disable xembed by `FEATURE_NO_XEMBED` to compile on wayland only
platforms (thanks to Patrick Steinhardt)
@@ -224,6 +242,7 @@
* Fixed none POSIX `echo -n` call
[Unreleased]: https://github.com/fanglingsu/vimb/compare/3.3.0...master
+[3.4.0]: https://github.com/fanglingsu/vimb/compare/3.3.0...3.4.0
[3.3.0]: https://github.com/fanglingsu/vimb/compare/3.2.0...3.3.0
[3.2.0]: https://github.com/fanglingsu/vimb/compare/3.1.0...3.2.0
[3.1.0]: https://github.com/fanglingsu/vimb/compare/3.0-alpha...3.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/Makefile new/vimb-3.4.0/Makefile
--- old/vimb-3.3.0/Makefile 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/Makefile 2019-03-26 23:47:03.000000000 +0100
@@ -1,6 +1,12 @@
+version = 3.4.0
include config.mk
-all: src.subdir-all
+all: version.h src.subdir-all
+
+version.h: Makefile .git/index
+ @echo "create $@"
+ $(Q)v="$$(git describe --tags 2>/dev/null)"; \
+ echo "#define VERSION \"$${v:-$(version)}\"" > $@
options:
@echo "vimb build options:"
@@ -10,7 +16,7 @@
@echo "EXTCFLAGS = $(EXTCFLAGS)"
@echo "CC = $(CC)"
-install: src.subdir-all
+install: all
@# binary
install -d $(BINPREFIX)
install -m 755 src/vimb $(BINPREFIX)/vimb
@@ -19,9 +25,9 @@
install -m 644 src/webextension/$(EXTTARGET) $(LIBDIR)/$(EXTTARGET)
@# man page
install -d $(MANPREFIX)/man1
- @sed -e "s!VERSION!$(VERSION)!g" \
+ @sed -e "s!VERSION!$(version)!g" \
-e "s!PREFIX!$(PREFIX)!g" \
- -e "s!DATE!`date +'%m %Y'`!g" $(DOCDIR)/vimb.1 > $(MANPREFIX)/man1/vimb.1
+ -e "s!DATE!`date -u -r $(DOCDIR)/vimb.1 +'%m %Y' 2>/dev/null || date +'%m %Y'`!g" $(DOCDIR)/vimb.1 > $(MANPREFIX)/man1/vimb.1
@# .desktop file
install -d $(DOTDESKTOPPREFIX)
install -m 644 vimb.desktop $(DOTDESKTOPPREFIX)/vimb.desktop
@@ -40,7 +46,7 @@
runsandbox: sandbox
sandbox/usr/bin/vimb
-test:
+test: version.h
$(MAKE) -C src vimb.so
$(MAKE) -C tests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/README.md new/vimb-3.4.0/README.md
--- old/vimb-3.3.0/README.md 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/README.md 2019-03-26 23:47:03.000000000 +0100
@@ -1,6 +1,8 @@
# Vimb - the Vim-like browser
[![Build Status](https://api.travis-ci.com/fanglingsu/vimb.svg?branch=master)](https://travis-ci.com/fanglingsu/vimb)
+[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
+[![Latest Release](https://img.shields.io/github/release/fanglingsu/vimb.svg?style=flat)](https://github.com/fanglingsu/vimb/releases/latest)
Vimb is a Vim-like web browser that is inspired by Pentadactyl and Vimprobable.
The goal of Vimb is to build a completely keyboard-driven, efficient and
@@ -29,12 +31,14 @@
- Arch Linux: [aur/vimb][], [aur/vimb-git][]
- Gentoo: [gentoo-git][], [gentoo][]
+- openSUSE: [network/vimb][]
+- pkgsrc: [pkgsrc/www/vimb][], [pkgsrc/wip/vimb-git][]
- Slackware: [slackbuild/vimb][]
## dependencies
- gtk+-3.0
-- webkit2gtk-4.0 >= 2.8.x
+- webkit2gtk-4.0 >= 2.20.x
## Install
@@ -61,7 +65,7 @@
## Mailing list
-- feature requests, issues and patches can be discussed on the [mailing list][mail]
+- feature requests, issues and patches can be discussed on the [mailing list][mail] ([list archive][mail-archive])
## Similar projects
@@ -80,10 +84,14 @@
- http://thedarnedestthing.com/vimb
- https://blog.jeaye.com/2015/08/23/vimb/
-[aur/vimb]: https://aur.archlinux.org/packages/vimb
-[aur/vimb-git]: https://aur.archlinux.org/packages/vimb-git
-[gentoo-git]: https://github.com/tharvik/overlay/tree/master/www-client/vimb
-[gentoo]: https://github.com/hsoft/portage-overlay/tree/master/www-client/vimb
-[vimb]: https://fanglingsu.github.io/vimb/ "Vimb - Vim like browser project page"
-[mail]: https://lists.sourceforge.net/lists/listinfo/vimb-users "vimb - mailing list"
-[slackbuild/vimb]: https://slackbuilds.org/repository/14.2/network/vimb/
+[aur/vimb-git]: https://aur.archlinux.org/packages/vimb-git
+[aur/vimb]: https://aur.archlinux.org/packages/vimb
+[gentoo-git]: https://github.com/tharvik/overlay/tree/master/www-client/vimb
+[gentoo]: https://github.com/hsoft/portage-overlay/tree/master/www-client/vimb
+[mail-archive]: https://sourceforge.net/p/vimb/vimb/vimb-users/ "vimb - mailing list archive"
+[mail]: https://lists.sourceforge.net/lists/listinfo/vimb-users "vimb - mailing list"
+[network/vimb]: https://build.opensuse.org/package/show/network/vimb
+[pkgsrc/wip/vimb-git]: http://pkgsrc.se/wip/vimb-git
+[pkgsrc/www/vimb]: http://pkgsrc.se/www/vimb
+[slackbuild/vimb]: https://slackbuilds.org/repository/14.2/network/vimb/
+[vimb]: https://fanglingsu.github.io/vimb/ "Vimb - Vim like browser project page"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/config.mk new/vimb-3.4.0/config.mk
--- old/vimb-3.3.0/config.mk 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/config.mk 2019-03-26 23:47:03.000000000 +0100
@@ -1,5 +1,3 @@
-VERSION = 3.2.0
-
ifneq ($(V),1)
Q := @
endif
@@ -12,26 +10,28 @@
LIBDIR := $(DESTDIR)$(PREFIX)/lib/vimb
RUNPREFIX := $(PREFIX)
EXTENSIONDIR := $(RUNPREFIX)/lib/vimb
+OS := $(shell uname -s)
# define some directories
SRCDIR = src
DOCDIR = doc
# used libs
-LIBS = gtk+-3.0 'webkit2gtk-4.0 >= 2.8.0'
-
-COMMIT := $(shell git describe --tags --always 2> /dev/null || echo "unknown")
+LIBS = gtk+-3.0 'webkit2gtk-4.0 >= 2.20.0'
# setup general used CFLAGS
CFLAGS += -std=c99 -pipe -Wall -fPIC
-CPPFLAGS += -DVERSION=\"${VERSION}\" -DEXTENSIONDIR=\"${EXTENSIONDIR}\" -DCOMMIT=\"$(COMMIT)\"
+CPPFLAGS += -DEXTENSIONDIR=\"${EXTENSIONDIR}\"
CPPFLAGS += -DPROJECT=\"vimb\" -DPROJECT_UCFIRST=\"Vimb\"
-CPPFLAGS += -D_XOPEN_SOURCE=500
-CPPFLAGS += -D__BSD_VISIBLE
CPPFLAGS += -DGSEAL_ENABLE
CPPFLAGS += -DGTK_DISABLE_SINGLE_INCLUDES
CPPFLAGS += -DGDK_DISABLE_DEPRECATED
+ifeq "$(findstring $(OS),FreeBSD DragonFly)" ""
+CPPFLAGS += -D_XOPEN_SOURCE=500
+CPPFLAGS += -D__BSD_VISIBLE
+endif
+
# flags used to build webextension
EXTTARGET = webext_main.so
EXTCFLAGS = ${CFLAGS} $(shell pkg-config --cflags webkit2gtk-web-extension-4.0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/doc/vimb.1 new/vimb-3.4.0/doc/vimb.1
--- old/vimb-3.3.0/doc/vimb.1 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/doc/vimb.1 2019-03-26 23:47:03.000000000 +0100
@@ -48,6 +48,9 @@
.B "\-v, \-\-version"
Print build and version information and then quit.
.TP
+.B "\-\-no-maximize"
+Do no attempt to maximize window.
+.TP
.B "\-\-bug-info"
Prints information about used libraries for bug reports and then quit.
.SH MODES
@@ -1231,6 +1234,11 @@
.B plugins (bool)
Determines whether or not plugins on the page are enabled.
.TP
+.B prevent-newwindow (bool)
+Whether to open links, that would normally open in a new window, in the
+current window.
+This option does not affect links fired by hinting.
+.TP
.B sans-serif-font (string)
The font family used as the default for content using sans-serif font.
.TP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/Makefile new/vimb-3.4.0/src/Makefile
--- old/vimb-3.3.0/src/Makefile 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/Makefile 2019-03-26 23:47:03.000000000 +0100
@@ -19,6 +19,8 @@
$(OBJ): config.h ../config.mk
+main.o: ../version.h
+
input.o: scripts/scripts.h
normal.o: scripts/scripts.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/ex.c new/vimb-3.4.0/src/ex.c
--- old/vimb-3.3.0/src/ex.c 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/ex.c 2019-03-26 23:47:03.000000000 +0100
@@ -657,7 +657,7 @@
/* read until next whitespace or end of input to get command name for
* error message - vim uses the whole rest of the input string - but
* the first word seems to bee enough for the error message */
- for (; len < LENGTH(cmd) && *input && !VB_IS_SPACE(**input); (*input)++) {
+ for (; len < (LENGTH(cmd) - 1) && *input && !VB_IS_SPACE(**input); (*input)++) {
cmd[len++] = **input;
}
cmd[len] = '\0';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/main.c new/vimb-3.4.0/src/main.c
--- old/vimb-3.3.0/src/main.c 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/main.c 2019-03-26 23:47:03.000000000 +0100
@@ -28,6 +28,7 @@
#include
#include
+#include "../version.h"
#include "ascii.h"
#include "command.h"
#include "completion.h"
@@ -72,6 +73,9 @@
WebKitNavigationAction *navact, Client *c);
static gboolean on_webview_decide_policy(WebKitWebView *webview,
WebKitPolicyDecision *dec, WebKitPolicyDecisionType type, Client *c);
+static void decide_navigation_action(Client *c, WebKitPolicyDecision *dec);
+static void decide_new_window_action(Client *c, WebKitPolicyDecision *dec);
+static void decide_response(Client *c, WebKitPolicyDecision *dec);
static void on_webview_load_changed(WebKitWebView *webview,
WebKitLoadEvent event, Client *c);
static void on_webview_mouse_target_changed(WebKitWebView *webview,
@@ -86,6 +90,8 @@
static gboolean on_webview_web_process_crashed(WebKitWebView *webview, Client *c);
static gboolean on_webview_authenticate(WebKitWebView *webview,
WebKitAuthenticationRequest *request, Client *c);
+static gboolean on_webview_enter_fullscreen(WebKitWebView *webview, Client *c);
+static gboolean on_webview_leave_fullscreen(WebKitWebView *webview, Client *c);
static gboolean on_window_delete_event(GtkWidget *window, GdkEvent *event, Client *c);
static void on_window_destroy(GtkWidget *window, Client *c);
static gboolean quit(Client *c);
@@ -801,7 +807,9 @@
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_role(GTK_WINDOW(window), PROJECT_UCFIRST);
gtk_window_set_default_size(GTK_WINDOW(window), WIN_WIDTH, WIN_HEIGHT);
- gtk_window_maximize(GTK_WINDOW(window));
+ if (!vb.no_maximize) {
+ gtk_window_maximize(GTK_WINDOW(window));
+ }
}
g_object_connect(
@@ -982,7 +990,8 @@
#ifndef FEATURE_NO_XEMBED
+ (vb.embed ? 2 : 0)
#endif
- + (vb.profile ? 2 : 0),
+ + (vb.profile ? 2 : 0)
+ + (vb.no_maximize ? 1 : 0),
sizeof(char *)
);
@@ -1004,6 +1013,9 @@
cmd[i++] = "-p";
cmd[i++] = vb.profile;
}
+ if (vb.no_maximize) {
+ cmd[i++] = "--no-maximize";
+ }
cmd[i++] = (char*)uri;
cmd[i++] = NULL;
@@ -1192,7 +1204,7 @@
*/
static void on_webview_close(WebKitWebView *webview, Client *c)
{
- client_destroy(c);
+ gtk_widget_destroy(c->window);
}
/**
@@ -1202,6 +1214,14 @@
static WebKitWebView *on_webview_create(WebKitWebView *webview,
WebKitNavigationAction *navact, Client *c)
{
+ WebKitURIRequest *req;
+ if (c->config.prevent_newwindow) {
+ req = webkit_navigation_action_get_request(navact);
+ vb_load_uri(c, &(Arg){TARGET_CURRENT, (char*)webkit_uri_request_get_uri(req)});
+
+ return NULL;
+ }
+
Client *new = client_new(webview);
return new->webview;
@@ -1215,75 +1235,111 @@
static gboolean on_webview_decide_policy(WebKitWebView *webview,
WebKitPolicyDecision *dec, WebKitPolicyDecisionType type, Client *c)
{
- guint status, button, mod;
- WebKitNavigationAction *a;
- WebKitURIRequest *req;
- WebKitURIResponse *res;
- const char *uri;
-
switch (type) {
case WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION:
- a = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(dec));
- req = webkit_navigation_action_get_request(a);
- button = webkit_navigation_action_get_mouse_button(a);
- mod = webkit_navigation_action_get_modifiers(a);
- uri = webkit_uri_request_get_uri(req);
-
- /* Try to handle with specific protocol handler. */
- if (handler_handle_uri(c->handler, uri)) {
- webkit_policy_decision_ignore(dec);
- return TRUE;
- }
- /* Spawn new instance if the new win flag is set on the mode, or
- * the navigation was triggered by CTRL-LeftMouse or MiddleMouse. */
- if ((c->mode->flags & FLAG_NEW_WIN)
- || (webkit_navigation_action_get_navigation_type(a) == WEBKIT_NAVIGATION_TYPE_LINK_CLICKED
- && (button == 2 || (button == 1 && mod & GDK_CONTROL_MASK)))) {
-
- /* Remove the FLAG_NEW_WIN after the first use. */
- c->mode->flags &= ~FLAG_NEW_WIN;
-
- webkit_policy_decision_ignore(dec);
- spawn_new_instance(uri);
- return TRUE;
- }
- return FALSE;
+ decide_navigation_action(c, dec);
+ break;
case WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION:
- a = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(dec));
+ decide_new_window_action(c, dec);
+ break;
- /* Ignore opening new window if this was started without user gesture. */
- if (!webkit_navigation_action_is_user_gesture(a)) {
- webkit_policy_decision_ignore(dec);
- return TRUE;
- }
+ case WEBKIT_POLICY_DECISION_TYPE_RESPONSE:
+ decide_response(c, dec);
+ break;
- if (webkit_navigation_action_get_navigation_type(a) == WEBKIT_NAVIGATION_TYPE_LINK_CLICKED) {
- webkit_policy_decision_ignore(dec);
- /* This is triggered on link click for links with
- * target="_blank". Maybe it should be configurable if the
- * page is opened as tab or a new instance. */
- req = webkit_navigation_action_get_request(a);
- spawn_new_instance(webkit_uri_request_get_uri(req));
- return TRUE;
- }
- return FALSE;
+ default:
+ webkit_policy_decision_ignore(dec);
+ break;
+ }
- case WEBKIT_POLICY_DECISION_TYPE_RESPONSE:
- res = webkit_response_policy_decision_get_response(WEBKIT_RESPONSE_POLICY_DECISION(dec));
- status = webkit_uri_response_get_status_code(res);
+ return TRUE;
+}
- if (!webkit_response_policy_decision_is_mime_type_supported(WEBKIT_RESPONSE_POLICY_DECISION(dec))
- && (SOUP_STATUS_IS_SUCCESSFUL(status) || status == SOUP_STATUS_NONE)) {
+static void decide_navigation_action(Client *c, WebKitPolicyDecision *dec)
+{
+ guint button, mod;
+ WebKitNavigationAction *a;
+ WebKitURIRequest *req;
+ const char *uri;
+
+ a = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(dec));
+ req = webkit_navigation_action_get_request(a);
+ uri = webkit_uri_request_get_uri(req);
+
+ /* Try to handle with specific protocol handler. */
+ if (handler_handle_uri(c->handler, uri)) {
+ webkit_policy_decision_ignore(dec);
+ return;
+ }
- webkit_policy_decision_download(dec);
+ button = webkit_navigation_action_get_mouse_button(a);
+ mod = webkit_navigation_action_get_modifiers(a);
+ /* Spawn new instance if the new win flag is set on the mode, or the
+ * navigation was triggered by CTRL-LeftMouse or MiddleMouse. */
+ if ((c->mode->flags & FLAG_NEW_WIN)
+ || (webkit_navigation_action_get_navigation_type(a) == WEBKIT_NAVIGATION_TYPE_LINK_CLICKED
+ && (button == 2 || (button == 1 && mod & GDK_CONTROL_MASK)))) {
- return TRUE;
+ /* Remove the FLAG_NEW_WIN after the first use. */
+ c->mode->flags &= ~FLAG_NEW_WIN;
+
+ webkit_policy_decision_ignore(dec);
+ spawn_new_instance(uri);
+ } else {
+ webkit_policy_decision_use(dec);
+ }
+}
+
+static void decide_new_window_action(Client *c, WebKitPolicyDecision *dec)
+{
+ WebKitNavigationAction *a;
+ WebKitURIRequest *req;
+
+ a = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(dec));
+
+ switch (webkit_navigation_action_get_navigation_type(a)) {
+ case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */
+ case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */
+ case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */
+ case WEBKIT_NAVIGATION_TYPE_RELOAD: /* fallthrough */
+ case WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED:
+ /* This is triggered on link click for links with target="_blank".
+ * Maybe it should be configurable if the page is opened as tab or
+ * a new instance. Ignore opening new window if this was started
+ * without user gesture. */
+ if (webkit_navigation_action_is_user_gesture(a)) {
+ req = webkit_navigation_action_get_request(a);
+ if (c->config.prevent_newwindow) {
+ /* Load the uri into the browser instance. */
+ vb_load_uri(c, &(Arg){TARGET_CURRENT, (char*)webkit_uri_request_get_uri(req)});
+ } else {
+ spawn_new_instance(webkit_uri_request_get_uri(req));
+ }
}
- return FALSE;
+ break;
+ case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */
default:
- return FALSE;
+ break;
+ }
+ webkit_policy_decision_ignore(dec);
+}
+
+static void decide_response(Client *c, WebKitPolicyDecision *dec)
+{
+ guint status;
+ WebKitURIResponse *res;
+
+ res = webkit_response_policy_decision_get_response(WEBKIT_RESPONSE_POLICY_DECISION(dec));
+ status = webkit_uri_response_get_status_code(res);
+
+ if (webkit_response_policy_decision_is_mime_type_supported(WEBKIT_RESPONSE_POLICY_DECISION(dec))) {
+ webkit_policy_decision_use(dec);
+ } else if (SOUP_STATUS_IS_SUCCESSFUL(status) || status == SOUP_STATUS_NONE) {
+ webkit_policy_decision_download(dec);
+ } else {
+ webkit_policy_decision_ignore(dec);
}
}
@@ -1295,13 +1351,13 @@
switch (event) {
case WEBKIT_LOAD_STARTED:
- uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
#ifdef FEATURE_AUTOCMD
- autocmd_run(c, AU_LOAD_STARTED, uri, NULL);
+ autocmd_run(c, AU_LOAD_STARTED, webkit_web_view_get_uri(webview), NULL);
#endif
/* update load progress in statusbar */
c->state.progress = 0;
vb_statusbar_update(c);
+ uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
set_title(c, uri);
/* Make sure hinting is cleared before the new page is loaded.
* Without that vimb would still be in hinting mode after hinting
@@ -1322,11 +1378,11 @@
* or aborted the load will be commited. So this seems to be the
* right place to remove the flag. */
c->mode->flags &= ~FLAG_IGNORE_FOCUS;
- uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
#ifdef FEATURE_AUTOCMD
- autocmd_run(c, AU_LOAD_COMMITTED, uri, NULL);
+ autocmd_run(c, AU_LOAD_COMMITTED, webkit_web_view_get_uri(webview), NULL);
#endif
/* save the current URI in register % */
+ uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
vb_register_add(c, '%', uri);
/* check if tls is on and the page is trusted */
if (g_str_has_prefix(uri, "https://")) {
@@ -1351,7 +1407,7 @@
case WEBKIT_LOAD_FINISHED:
uri = util_sanitize_uri(webkit_web_view_get_uri(webview));
#ifdef FEATURE_AUTOCMD
- autocmd_run(c, AU_LOAD_FINISHED, uri, NULL);
+ autocmd_run(c, AU_LOAD_FINISHED, webkit_web_view_get_uri(webview), NULL);
#endif
c->state.progress = 100;
if (strncmp(uri, "about:", 6)) {
@@ -1478,6 +1534,28 @@
}
/**
+ * Callback in case JS calls element.webkitRequestFullScreen.
+ */
+static gboolean on_webview_enter_fullscreen(WebKitWebView *webview, Client *c)
+{
+ c->state.is_fullscreen = TRUE;
+ gtk_widget_hide(GTK_WIDGET(c->statusbar.box));
+ gtk_widget_set_visible(GTK_WIDGET(c->input), FALSE);
+ return FALSE;
+}
+
+/**
+ * Callback to restore the window state after entering fullscreen.
+ */
+static gboolean on_webview_leave_fullscreen(WebKitWebView *webview, Client *c)
+{
+ c->state.is_fullscreen = FALSE;
+ gtk_widget_show(GTK_WIDGET(c->statusbar.box));
+ gtk_widget_set_visible(GTK_WIDGET(c->input), TRUE);
+ return FALSE;
+}
+
+/**
* Callback for window ::delete-event signal which is emitted if a user
* requests that a toplevel window is closed. The default handler for this
* signal destroys the window. Returns TRUE to stop other handlers from being
@@ -1677,7 +1755,7 @@
vb_mode_add('p', pass_enter, pass_leave, pass_keypress, NULL);
/* Prepare the style provider to be used for the clients and completion. */
- vb.style_provider = gtk_css_provider_get_default();
+ vb.style_provider = gtk_css_provider_new();
}
/**
@@ -1807,6 +1885,8 @@
"signal::ready-to-show", G_CALLBACK(on_webview_ready_to_show), c,
"signal::web-process-crashed", G_CALLBACK(on_webview_web_process_crashed), c,
"signal::authenticate", G_CALLBACK(on_webview_authenticate), c,
+ "signal::enter-fullscreen", G_CALLBACK(on_webview_enter_fullscreen), c,
+ "signal::leave-fullscreen", G_CALLBACK(on_webview_leave_fullscreen), c,
NULL
);
@@ -1906,10 +1986,11 @@
gboolean ver = FALSE, buginfo = FALSE;
GOptionEntry opts[] = {
- {"embed", 'e', 0, G_OPTION_ARG_STRING, &winid, "Reparents to window specified by xid", NULL},
{"config", 'c', 0, G_OPTION_ARG_FILENAME, &vb.configfile, "Custom configuration file", NULL},
+ {"embed", 'e', 0, G_OPTION_ARG_STRING, &winid, "Reparents to window specified by xid", NULL},
{"profile", 'p', 0, G_OPTION_ARG_CALLBACK, (GOptionArgFunc*)profileOptionArgFunc, "Profile name", NULL},
{"version", 'v', 0, G_OPTION_ARG_NONE, &ver, "Print version", NULL},
+ {"no-maximize", 0, 0, G_OPTION_ARG_NONE, &vb.no_maximize, "Do no attempt to maximize window", NULL},
{"bug-info", 0, 0, G_OPTION_ARG_NONE, &buginfo, "Print used library versions", NULL},
{NULL}
};
@@ -1923,12 +2004,12 @@
}
if (ver) {
- printf("%s, version %s\n\n", PROJECT, VERSION);
+ printf("%s, version %s\n", PROJECT, VERSION);
return EXIT_SUCCESS;
}
if (buginfo) {
- printf("Commit: %s\n", COMMIT);
+ printf("Version: %s\n", VERSION);
printf("WebKit compile: %d.%d.%d\n",
WEBKIT_MAJOR_VERSION,
WEBKIT_MINOR_VERSION,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/main.h new/vimb-3.4.0/src/main.h
--- old/vimb-3.3.0/src/main.h 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/main.h 2019-03-26 23:47:03.000000000 +0100
@@ -171,6 +171,7 @@
GList *downloads;
guint progress;
WebKitHitTestResult *hit_test_result;
+ gboolean is_fullscreen;
struct {
gboolean active; /* indicate if there is a active search */
@@ -234,6 +235,7 @@
guint scrollstep;
gboolean input_autohide;
gboolean incsearch;
+ gboolean prevent_newwindow;
guint default_zoom; /* default zoom level in percent */
Shortcut *shortcuts;
} config;
@@ -266,6 +268,7 @@
guint closed_max;
} config;
GtkCssProvider *style_provider;
+ gboolean no_maximize;
};
gboolean vb_download_set_destination(Client *c, WebKitDownload *download,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/map.c new/vimb-3.4.0/src/map.c
--- old/vimb-3.3.0/src/map.c 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/map.c 2019-03-26 23:47:03.000000000 +0100
@@ -1,7 +1,7 @@
/**
* vimb - a webkit based vim like browser.
*
- * Copyright (C) 2012-2018 Daniel Carl
+ * Copyright (C) 2012-2019 Daniel Carl
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -36,6 +36,10 @@
static void showcmd(Client *c, int ch);
static char *transchar(int c);
static int utf_char2bytes(guint c, guchar *buf);
+static void queue_event(GdkEventKey *e);
+static void process_events(void);
+static void free_events(void);
+static void process_event(GdkEventKey* event);
extern struct Vimb vb;
@@ -97,6 +101,12 @@
{"<F12>", 5, CSI_STR "F2", 3},
};
+/* this is only to queue GDK key events, in order to later send them if the map didn't match */
+static struct {
+ GSList *list; /* queue holding submitted events */
+ gboolean processing; /* whether or not events are processing */
+} events = {0};
+
void map_init(Client *c)
{
c->map.queue = g_string_sized_new(50);
@@ -324,6 +334,11 @@
*/
gboolean on_map_keypress(GtkWidget *widget, GdkEventKey* event, Client *c)
{
+ if (events.processing) {
+ /* events are processing, pass all keys unmodified */
+ return FALSE;
+ }
+
guint state = event->state;
guint keyval = event->keyval;
guchar string[32];
@@ -362,12 +377,25 @@
c->state.typed = TRUE;
c->state.processed_key = TRUE;
- map_handle_keys(c, string, len, TRUE);
+ queue_event(event);
+
+ MapState res = map_handle_keys(c, string, len, true);
+
+ if (res != MAP_AMBIGUOUS) {
+ if (!c->state.processed_key) {
+ /* events ready to be consumed */
+ process_events();
+ } else {
+ /* no ambiguous - key processed elsewhere */
+ free_events();
+ }
+ }
/* reset the typed flag */
c->state.typed = FALSE;
- return c->state.processed_key;
+ /* prevent input from going to GDK - input is sent via process_events(); */
+ return TRUE;
}
/**
@@ -476,6 +504,9 @@
/* signalize the timeout to the key handler */
map_handle_keys(c, (guchar*)"", 0, TRUE);
+ /* consume any unprocessed events */
+ process_events();
+
/* we return TRUE to not automatically remove the resource - this is
* required to prevent critical error when we remove the source in
* map_handle_keys where we don't know if the timeout was called or not */
@@ -657,3 +688,44 @@
buf[5] = 0x80 + (c & 0x3f);
return 6;
}
+
+/**
+ * Append an event into the queue.
+ */
+static void queue_event(GdkEventKey *e)
+{
+ events.list = g_slist_append(events.list, gdk_event_copy((GdkEvent*)e));
+}
+
+/**
+ * Process events in the queue, sending the key events to GDK.
+ */
+static void process_events(void)
+{
+ for (GSList *l = events.list; l != NULL; l = l->next) {
+ process_event((GdkEventKey*)l->data);
+ /* TODO take into account qk mapped key? */
+ }
+ free_events();
+}
+
+/**
+ * Clear the events list and free the allocated memory.
+ */
+static void free_events(void)
+{
+ if (events.list) {
+ g_slist_free_full(events.list, (GDestroyNotify)gdk_event_free);
+ events.list = NULL;
+ }
+}
+
+static void process_event(GdkEventKey* event)
+{
+ if (event) {
+ /* signal not to queue other events */
+ events.processing = TRUE;
+ gtk_main_do_event((GdkEvent*)event);
+ events.processing = FALSE;
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/normal.c new/vimb-3.4.0/src/normal.c
--- old/vimb-3.3.0/src/normal.c 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/normal.c 2019-03-26 23:47:03.000000000 +0100
@@ -339,6 +339,16 @@
static VbResult normal_clear_input(Client *c, const NormalCmdInfo *info)
{
+ /* If an element requested the fullscreen - the <esc> shoudl cause to
+ * leave this fullscreen mode. */
+ if (c->state.is_fullscreen) {
+ /* Unset the processed_key to indicate that the <esc> was not handled
+ * by us and letting the event bubble up. So that webkit handles the
+ * key for us to leave the fullscreen mode. */
+ c->state.processed_key = FALSE;
+ return RESULT_COMPLETE;
+ }
+
gtk_widget_grab_focus(GTK_WIDGET(c->webview));
/* Clear the inputbox and change the style to normal to reset also the
@@ -765,7 +775,7 @@
data = webkit_web_resource_get_data_finish(resource, res, &length, NULL);
if (data) {
- text = g_strndup(data, length);
+ text = g_strndup((gchar*)data, length);
command_spawn_editor(c, &((Arg){0, (char *)text}), NULL, NULL);
g_free(data);
g_free(text);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/scripts/hints.js new/vimb-3.4.0/src/scripts/hints.js
--- old/vimb-3.3.0/src/scripts/hints.js 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/scripts/hints.js 2019-03-26 23:47:03.000000000 +0100
@@ -173,13 +173,10 @@
/* create the hint label with number/letters */
rect = e.getClientRects()[0];
label = labelTmpl.cloneNode(false);
- label.setAttribute(
- "style", [
- "display:none;",
- "left:", rect.left, "px;",
- "top:", rect.top, "px;"
- ].join("")
- );
+
+ label.style.display = "none";
+ label.style.left = rect.left + "px";
+ label.style.top = rect.top + "px";
/* if hinted element is an image - show title or alt of the image in hint label */
/* this allows to see how to filter for the image */
@@ -226,7 +223,10 @@
/* append the fragment to the document */
var hDiv = doc.createElement("div");
hDiv.setAttribute(attr, "container");
- hDiv.setAttribute("style", "position:fixed;top:0;left:0;z-index:225000;");
+ hDiv.style.position = "fixed";
+ hDiv.style.top = "0";
+ hDiv.style.left = "0";
+ hDiv.style.zIndex = "225000";
hDiv.appendChild(fragment);
if (doc.body) {
doc.body.appendChild(hDiv);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/setting.c new/vimb-3.4.0/src/setting.c
--- old/vimb-3.3.0/src/setting.c 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/setting.c 2019-03-26 23:47:03.000000000 +0100
@@ -20,6 +20,7 @@
#include
#include
+#include "../version.h"
#include "completion.h"
#include "config.h"
#include "ext-proxy.h"
@@ -53,9 +54,7 @@
static int default_zoom(Client *c, const char *name, DataType type, void *value, void *data);
static int fullscreen(Client *c, const char *name, DataType type, void *value, void *data);
static int gui_style(Client *c, const char *name, DataType type, void *value, void *data);
-#if WEBKIT_CHECK_VERSION (2, 16, 0)
static int hardware_acceleration_policy(Client *c, const char *name, DataType type, void *value, void *data);
-#endif
static int input_autohide(Client *c, const char *name, DataType type, void *value, void *data);
static int internal(Client *c, const char *name, DataType type, void *value, void *data);
static int headers(Client *c, const char *name, DataType type, void *value, void *data);
@@ -77,16 +76,12 @@
gboolean on = TRUE, off = FALSE;
c->config.settings = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify)setting_free);
- setting_add(c, "user-agent", TYPE_CHAR, &"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/604.1 (KHTML, like Gecko) Version/11.0 Safari/604.1 " PROJECT "/" VERSION, webkit, 0, "user-agent");
+ setting_add(c, "user-agent", TYPE_CHAR, &"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Safari/605.1.15 " PROJECT "/" VERSION, webkit, 0, "user-agent");
/* TODO use the real names for webkit settings */
i = 14;
setting_add(c, "accelerated-2d-canvas", TYPE_BOOLEAN, &off, webkit, 0, "enable-accelerated-2d-canvas");
-#if WEBKIT_CHECK_VERSION (2, 10, 0)
setting_add(c, "allow-file-access-from-file-urls", TYPE_BOOLEAN, &off, webkit, 0, "allow-file-access-from-file-urls");
-#endif
-#if WEBKIT_CHECK_VERSION (2, 14, 0)
setting_add(c, "allow-universal-access-from-file-urls", TYPE_BOOLEAN, &off, webkit, 0, "allow-universal-access-from-file-urls");
-#endif
setting_add(c, "caret", TYPE_BOOLEAN, &off, webkit, 0, "enable-caret-browsing");
setting_add(c, "cursiv-font", TYPE_CHAR, &"serif", webkit, 0, "cursive-font-family");
setting_add(c, "default-charset", TYPE_CHAR, &"utf-8", webkit, 0, "default-charset");
@@ -95,9 +90,7 @@
i = SETTING_DEFAULT_FONT_SIZE;
setting_add(c, "font-size", TYPE_INTEGER, &i, webkit, 0, "default-font-size");
setting_add(c, "frame-flattening", TYPE_BOOLEAN, &off, webkit, 0, "enable-frame-flattening");
-#if WEBKIT_CHECK_VERSION (2, 16, 0)
setting_add(c, "hardware-acceleration-policy", TYPE_CHAR, &"ondemand", hardware_acceleration_policy, FLAG_NODUP, NULL);
-#endif
setting_add(c, "header", TYPE_CHAR, &"", headers, FLAG_LIST|FLAG_NODUP, "header");
i = 1000;
setting_add(c, "hint-timeout", TYPE_INTEGER, &i, NULL, 0, NULL);
@@ -121,6 +114,7 @@
setting_add(c, "monospace-font-size", TYPE_INTEGER, &i, webkit, 0, "default-monospace-font-size");
setting_add(c, "offline-cache", TYPE_BOOLEAN, &on, webkit, 0, "enable-offline-web-application-cache");
setting_add(c, "plugins", TYPE_BOOLEAN, &on, webkit, 0, "enable-plugins");
+ setting_add(c, "prevent-newwindow", TYPE_BOOLEAN, &off, internal, 0, &c->config.prevent_newwindow);
setting_add(c, "print-backgrounds", TYPE_BOOLEAN, &on, webkit, 0, "print-backgrounds");
setting_add(c, "private-browsing", TYPE_BOOLEAN, &off, webkit, 0, "enable-private-browsing");
setting_add(c, "sans-serif-font", TYPE_CHAR, &"sans-serif", webkit, 0, "sans-serif-font-family");
@@ -555,7 +549,6 @@
return CMD_SUCCESS;
}
-#if WEBKIT_CHECK_VERSION (2, 16, 0)
static int hardware_acceleration_policy(Client *c, const char *name, DataType type, void *value, void *data)
{
WebKitSettings *settings = webkit_web_view_get_settings(c->webview);
@@ -573,7 +566,6 @@
return CMD_SUCCESS;
}
-#endif
/**
* Allow to set user defined http headers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/src/util.c new/vimb-3.4.0/src/util.c
--- old/vimb-3.3.0/src/util.c 2018-11-06 23:27:25.000000000 +0100
+++ new/vimb-3.4.0/src/util.c 2019-03-26 23:47:03.000000000 +0100
@@ -827,16 +827,24 @@
{
SoupURI *uri;
char *sanitized_uri;
+ char *for_display;
+
+#if WEBKIT_CHECK_VERSION(2, 24, 0)
+ for_display = webkit_uri_for_display(uri_str);
+#else
+ for_display = g_strdup(uri_str);
+#endif
/* Sanitize the uri only in case there is a @ which might be the indicator
* for credentials used in uri. */
- if (!strchr(uri_str, '@')) {
- return g_strdup(uri_str);
+ if (!strchr(for_display, '@')) {
+ return for_display;
}
- uri = soup_uri_new(uri_str);
+ uri = soup_uri_new(for_display);
sanitized_uri = soup_uri_to_string(uri, FALSE);
soup_uri_free(uri);
+ g_free(for_display);
return sanitized_uri;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/tests/manual/dummy.html new/vimb-3.4.0/tests/manual/dummy.html
--- old/vimb-3.3.0/tests/manual/dummy.html 1970-01-01 01:00:00.000000000 +0100
+++ new/vimb-3.4.0/tests/manual/dummy.html 2019-03-26 23:47:03.000000000 +0100
@@ -0,0 +1,10 @@
+<html>
+<head>
+<title>Dummy Page</title>
+</head>
+<body>
+Dummy Page
+</body>
+</html>
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/tests/manual/js-window-close.html new/vimb-3.4.0/tests/manual/js-window-close.html
--- old/vimb-3.3.0/tests/manual/js-window-close.html 1970-01-01 01:00:00.000000000 +0100
+++ new/vimb-3.4.0/tests/manual/js-window-close.html 2019-03-26 23:47:03.000000000 +0100
@@ -0,0 +1,9 @@
+<html>
+<head>
+<title>JS Window Close</title>
+</head>
+<body>
+Click on following link should close the window without crashing.<br>
+<a href="#" onclick="window.close()">Close this window</a>
+</body>
+</html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vimb-3.3.0/tests/manual/window-open.html new/vimb-3.4.0/tests/manual/window-open.html
--- old/vimb-3.3.0/tests/manual/window-open.html 1970-01-01 01:00:00.000000000 +0100
+++ new/vimb-3.4.0/tests/manual/window-open.html 2019-03-26 23:47:03.000000000 +0100
@@ -0,0 +1,21 @@
+<html>
+<head>
+<title>Window open</title>
+</head>
+<body>
+ <p>
+ Enable <code>set prevent-newwindow=on</code><br/>
+ Following link should be opened into current window.<br/><br/>
+ <a href="./dummy.html" target="_new">target="_new"</a><br/>
+ <a href="./dummy.html" target="_blank">target="_blank"</a><br/>
+ <a href="javascript:window.open('./dummy.html', 'winname')">javascript:window-open</a><br/>
+ <a href="#" onclick="window.open('./dummy.html', 'winname')">onclick window-open</a><br/>
+ </p>
+ <p>
+ This <a href="./dummy.html" target="foo">target iframe link</a> should
+ load into the iframe.<br/>
+ <iframe src="" name="foo"></iframe>
+ </p>
+</body>
+</html>
+
++++++ vim-3.4.0-fixbuild.patch ++++++
From 0eda3ec2ac78577a08ace4c18cd9e912a56609e6 Mon Sep 17 00:00:00 2001
From: Patrick Steinhardt
Date: Wed, 27 Mar 2019 07:47:30 +0100
Subject: [PATCH] Makefile: fix compilation if source is not in a git repo
To make the version available, the Makefile creates a "version.h"
header. This file will either contain the output of `git describe
--tags` or a fallback value that is declared inside the Makefile
itself.
This logic is broken as there is a hard dependcy on the
".git/index" file. The intent here is to regenerate the header
file whenever there is any change to the git repo itself. But in
case where vimb is for example being compiled from a tarball,
there will be no git index at all, leading to an error "No rule
to make target '.git/index'".
Fix the issue by using `$(wildcard .git/index)`. In case the file
exists, we will pick it up as a dependency of "version.h" and
thus recompile it whenever the git repo changes. Otherwise, the
wildcard won't match and we will fall back to just using the
declared value of the "version" variable.
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index fa75f109..de5c4d5d 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ include config.mk
all: version.h src.subdir-all
-version.h: Makefile .git/index
+version.h: Makefile $(wildcard .git/index)
@echo "create $@"
$(Q)v="$$(git describe --tags 2>/dev/null)"; \
echo "#define VERSION \"$${v:-$(version)}\"" > $@