diff --git a/frame.js b/frame.js index 658c803c..0c2c3752 100644 --- a/frame.js +++ b/frame.js @@ -27,7 +27,7 @@ Volcanos("onengine", {help: "搜索引擎", list: [], _init: function(can, meta, }, target) }, function() { can.misc.Log(can.user.title(), ice.RUN, can) can.require([can.volcano], null, function(can, name, sub) { can[name] = sub }) - can.ondaemon._init(can), can.onmotion._init(can, target), can.onkeymap._init(can) + can.onmotion._init(can, target), can.onkeymap._init(can) can.onlayout.topic(can), can.onengine.signal(can, chat.ONMAIN, can.request()) can.onmotion.float.auto(can, target), can.base.isFunc(cb) && cb() }) @@ -861,7 +861,17 @@ Volcanos("onmotion", {help: "动态特效", list: [], _init: function(can, targe }, }) Volcanos("onkeymap", {help: "键盘交互", list: [], _focus: [], _init: function(can, target) { - can.onkeymap._build(can), document.body.onkeydown = function(event) { if (event.metaKey) { return } + can.onkeymap._build(can), document.body.onkeydown = function(event) { + if (event.metaKey) { if (window.webview) { + switch (event.key) { + case "q": window.terminate(); break + case "w": window.close(); break + case "r": location.reload(); break + case "f": can.onengine.signal(can, "onopensearch", can.request({}, {type: "*"})); break + case "[": history.back(); break + case "]": history.forward(); break + } + } return } if (can.page.tagis([html.SELECT, html.INPUT, html.TEXTAREA], event.target)) { return } var msg = can.request(event, {"model": "normal"}); if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } can.onengine.signal(can, chat.ONKEYDOWN, msg); if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } diff --git a/lib/user.js b/lib/user.js index ed0a8e3a..fd83ae93 100644 --- a/lib/user.js +++ b/lib/user.js @@ -49,7 +49,10 @@ Volcanos("user", {help: "用户操作", agent: { return can.base.Time(time, (fmt||"%y-%m-%d %H:%M:%S").replace("%w", list[now.getDay()])) }, - title: function(text) { return text && (document.title = Volcanos.meta.args.name||text), document.title }, + title: function(text) { + if (window.webview) { return title(text) } + return text && (document.title = Volcanos.meta.args.name||text), document.title + }, topic: function(can, name) { can.user.mod.isCmd && (name += " simple") can.Conf("display") && (name += " "+can.Conf("display")) diff --git a/panel/action.css b/panel/action.css index 465da7a3..8660ed4b 100644 --- a/panel/action.css +++ b/panel/action.css @@ -13,7 +13,7 @@ fieldset.Action.free>div.output fieldset.plugin.select { display:block; } fieldset.Action.flow>div.output fieldset.plugin { float:left; } fieldset.Action div.output fieldset.plugin.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:10; } -fieldset.Action div.output fieldset.plugin.Full>legend { float:left; } +fieldset.Action div.output fieldset.plugin.Full>legend { float:left; display:contents; } fieldset.Action div.output fieldset.story.Full { background-color:#073947f2; padding:0; margin:0; position:fixed; left:0; top:0; overflow:auto; z-index:10; } fieldset.Action div.output fieldset.story.Full>legend { float:left; } fieldset.Action>div.project.toggle { diff --git a/panel/footer.js b/panel/footer.js index 6e8c862d..0588b4f3 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -5,6 +5,15 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.onimport._toast(can, msg, target) can.onimport._cli(can, msg, target) can.base.isFunc(cb) && cb(msg) + + history.length > 2 && can.core.Timer(100, function() { + window.webview && can.setHeaderMenu(["后退"], function(event, button, list) { + switch (button) { + case "后退": history.back(); break + } + can.core.CallFunc([can.onaction, list[0]], [can, button]) + }) + }) }, _title: function(can, msg, target) { !can.user.isMobile && can.core.List(msg.result, function(item) { diff --git a/panel/header.js b/panel/header.js index 24231a07..3b4e453d 100644 --- a/panel/header.js +++ b/panel/header.js @@ -1,5 +1,6 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) { can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME)||can.Conf(aaa.USERNICK)) + can.ondaemon._init(can) can.onengine.plugin(can, "topic", shy("主题", { "demo": function(can, msg, cmds) { can.onlayout.topic(can, cmds[0]) }, diff --git a/panel/search.js b/panel/search.js index 1d157b81..2955233a 100644 --- a/panel/search.js +++ b/panel/search.js @@ -14,6 +14,9 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, can.page.Modify(can, can.ui.profile, kit.Dict(html.MAX_HEIGHT, height-(table&&table.offsetHeight||0))) }) msg.Length() == 1 && can.page.Select(can, table, html.TD)[0].click() + can.page.Select(can, can._output, "A", function(item) { + item.onclick = function(event) { can.user.open(item.href), can.onkeymap.prevent(event) } + }) }, _word: function(can, msg, cmds, fields) { can.type = cmds[0] var cb = can.onaction[cmds[1]]; if (cb) { cb({}, can); return } diff --git a/proto.js b/proto.js index db4f362c..eeac9d14 100644 --- a/proto.js +++ b/proto.js @@ -400,6 +400,9 @@ function can(tool) { {name: "Search", help: "搜索框", pos: chat.AUTO}, ]}) } +function _can(tool) { + Volcanos({name: "chat", panels: [{name: "Action", help: "工作台", pos: chat.MAIN, tool: tool}]}) +} try { if (typeof(global) == lang.OBJECT) { global.kit = kit, global.ice = ice