From 4e28078384bc7502c84d39343056282c147c466a Mon Sep 17 00:00:00 2001
From: DarkGod <darkgod@net-core.org>
Date: Tue, 10 Jun 2014 13:35:44 +0200
Subject: [PATCH] Added an icon to webviews to copy the current URL to
 clipboard

---
 game/engines/default/data/gfx/copy-icon.png | Bin 0 -> 907 bytes
 game/engines/default/engine/ui/Dialog.lua   |  13 ++++++++++++-
 game/engines/default/engine/ui/WebView.lua  |   1 +
 3 files changed, 13 insertions(+), 1 deletion(-)
 create mode 100644 game/engines/default/data/gfx/copy-icon.png

diff --git a/game/engines/default/data/gfx/copy-icon.png b/game/engines/default/data/gfx/copy-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..05e105b8b5c61fd0c211e1fed6111beafe8b44ac
GIT binary patch
literal 907
zcmV;619bd}P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-UbQ_A`3VuvT^_b0~kp}
zK~zY`omER{Q&A8-_q{Z!O$D(?wIYh3re8ymf{0*oX>lPa{-B~#P*D+Af{Kf}6u%&d
z;&<VyE5$_>{2+>8H6}v+wPLFxHH}G4e4jfrE}GcJytGXR?&dOY&OK-5%u^^5+Z(Ge
zG@K5CWRC(Wy>bNj4O3m5Gdq~R6^(n=QR55Vi^k0ra|1gSFrQi6HLDgMI=Fvzl`<8e
z)PL0lLV~mBpTr+N?K`auB`k8k`-k&ldt()HfGStK?@OX)?~azfwsm!Z;LLLPW|X1x
z=pC#K&x2A5B9i~I?A^21-*L3F4fbyveIJH!>FSGfXC4n6%;ot2;8rw_6YH0Dx2;_k
z`1w7FG*zQA7)D*IAKhJ7z)YU>4Z}pshTTXwOYrOS1I#G%VcUk~2R`)2yY3ET9_1xp
z+|?|fZfumH=a)r`NGg?*WHKeTOJeIH$0bRoQj*F15ppu}@%knixV=T%76y;yG017^
z{z;>vaWhhh#J}tGND`9;6M@-}z@k?0;6nf~3jmk}qzMlDU>F*vX`+;{Z3|+SgEV3M
zIQ#<;W@xP;B6!u)gGeMY<>Ewyj*bp6F|?+<i5p`e0_`$H7~yaj&CSgvGO$6!&~6b1
zOaiS5%mUFG(+T1n11|t(Xjemo0ifg_xULH($};ehhy~guhzQ<9B8bIeQ!dWTXm4)^
zX@=`)ZwA7n`Y|&a8XC~l)Kn4!%d$W@23}1j5;)E%1116ymEHqlxNiP;1wCNq>>4m8
zlq8pz2cQYs)p>g{e~Pj_cpHnMx3{+_KqwSKC=~K$;1uzJjGLm`+FI1t*H6g6OTtkf
z=psJgF(1%0eK4_;dCbXP`cAdU#hok+(xb)y|G7*hlu{tl1x_}`dLUq!NcO*(9za<D
z!|z{ax2Y-w(8LVoL-g7aj10bm^7&x|DkeQ<paR;l@V@I5e)UITIT`?l3ncm)w~sHF
z9q9D)2wq;;2i8sr&o^ND%i%Lk^nS}&#B!+s;AS*_5`a@P%YWEss%k-L%MN1elts@5
h6ZY21a?{FP{{;o37;Qgt+o%8l002ovPDHLkV1nG<k3IkZ

literal 0
HcmV?d00001

diff --git a/game/engines/default/engine/ui/Dialog.lua b/game/engines/default/engine/ui/Dialog.lua
index a0bb93c475..585cbdd93e 100644
--- a/game/engines/default/engine/ui/Dialog.lua
+++ b/game/engines/default/engine/ui/Dialog.lua
@@ -195,8 +195,19 @@ function _M:webPopup(url)
 	local d = new(url, game.w * 0.9, game.h * 0.9)
 	local w = require("engine.ui.WebView").new{width=d.iw, height=d.ih, url=url, allow_downloads={addons=true, modules=true}}
 	if w.unusable then return nil end
+	local b = require("engine.ui.ButtonImage").new{no_decoration=true, alpha_unfocus=0.5, file="copy-icon.png", fct=function()
+		if w.cur_url then
+			local url = w.cur_url:gsub("%?_te4&", "?"):gsub("%?_te4", ""):gsub("&_te4", "")
+			core.key.setClipboard(url)
+			print("[WEBVIEW] url copy", url)
+			self:simplePopup("Copy URL", "URL copied to your clipboard.")
+		end
+	end}
 	w.on_title = function(title) d:updateTitle(title) end
-	d:loadUI{{left=0, top=0, ui=w}}
+	d:loadUI{
+		{left=0, top=-b.h / 2, ui=b},
+		{left=0, top=0, ui=w},
+	}
 	d:setupUI()
 	d.key:addBind("EXIT", function() game:unregisterDialog(d) end)
 	game:registerDialog(d)
diff --git a/game/engines/default/engine/ui/WebView.lua b/game/engines/default/engine/ui/WebView.lua
index fbf9e81f62..876d2c0efc 100644
--- a/game/engines/default/engine/ui/WebView.lua
+++ b/game/engines/default/engine/ui/WebView.lua
@@ -69,6 +69,7 @@ function _M:generate()
 			Dialog:webPopup(url, w, h)
 		end end,
 		on_loading = function(url, status)
+			self.cur_url = url
 			self.loading = status
 		end,
 		on_crash = function()
-- 
GitLab