aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2017-10-19 21:46:51 +0900
committerGitHub <noreply@github.com>2017-10-19 21:46:51 +0900
commitc47a2075bcada9dbb1ab1076a92238d6ce48d347 (patch)
tree27308ee55c2b25a0609c8277909a6aff6b45021f /src
parent86431e82f75af48f1a8b98c95257714ff75261fc (diff)
parent71d35005b4b33e90a85dc50964cb96a8b462b748 (diff)
Merge pull request #84 from ueokande/14-lose-console-focus
Fix close focus
Diffstat (limited to 'src')
-rw-r--r--src/console/components/console.js2
-rw-r--r--src/content/components/common/follow.js2
-rw-r--r--src/content/components/common/index.js5
-rw-r--r--src/content/components/common/input.js3
-rw-r--r--src/content/components/common/keymapper.js3
-rw-r--r--src/content/components/top-content/follow-controller.js2
-rw-r--r--src/content/components/top-content/index.js5
-rw-r--r--src/content/index.js12
-rw-r--r--src/shared/messages.js27
9 files changed, 39 insertions, 22 deletions
diff --git a/src/console/components/console.js b/src/console/components/console.js
index 82ec467..dcd4041 100644
--- a/src/console/components/console.js
+++ b/src/console/components/console.js
@@ -107,6 +107,8 @@ export default class ConsoleComponent {
command.style.display = 'block';
input.value = text;
input.focus();
+
+ window.focus();
this.prevValue = '';
}
diff --git a/src/content/components/common/follow.js b/src/content/components/common/follow.js
index 92d8822..5688da3 100644
--- a/src/content/components/common/follow.js
+++ b/src/content/components/common/follow.js
@@ -34,6 +34,8 @@ export default class Follow {
this.newTab = false;
this.hints = {};
this.targets = [];
+
+ messages.onMessage(this.onMessage.bind(this));
}
update() {
diff --git a/src/content/components/common/index.js b/src/content/components/common/index.js
index 5e977ae..98a2337 100644
--- a/src/content/components/common/index.js
+++ b/src/content/components/common/index.js
@@ -21,18 +21,19 @@ export default class Common {
];
this.reloadSettings();
+
+ messages.onMessage(this.onMessage.bind(this));
}
update() {
this.children.forEach(c => c.update());
}
- onMessage(message, sender) {
+ onMessage(message) {
switch (message.type) {
case messages.SETTINGS_CHANGED:
this.reloadSettings();
}
- this.children.forEach(c => c.onMessage(message, sender));
}
reloadSettings() {
diff --git a/src/content/components/common/input.js b/src/content/components/common/input.js
index 8a7f82a..df09894 100644
--- a/src/content/components/common/input.js
+++ b/src/content/components/common/input.js
@@ -69,7 +69,4 @@ export default class InputComponent {
e.target.getAttribute('contenteditable').toLowerCase() === 'true' ||
e.target.getAttribute('contenteditable').toLowerCase() === '');
}
-
- onMessage() {
- }
}
diff --git a/src/content/components/common/keymapper.js b/src/content/components/common/keymapper.js
index 2a57b28..655c3f2 100644
--- a/src/content/components/common/keymapper.js
+++ b/src/content/components/common/keymapper.js
@@ -28,7 +28,4 @@ export default class KeymapperComponent {
this.store.dispatch(inputActions.clearKeys());
return true;
}
-
- onMessage() {
- }
}
diff --git a/src/content/components/top-content/follow-controller.js b/src/content/components/top-content/follow-controller.js
index 29f40b3..7570cf8 100644
--- a/src/content/components/top-content/follow-controller.js
+++ b/src/content/components/top-content/follow-controller.js
@@ -17,6 +17,8 @@ export default class FollowController {
this.state = {};
this.keys = [];
this.producer = null;
+
+ messages.onMessage(this.onMessage.bind(this));
}
onMessage(message, sender) {
diff --git a/src/content/components/top-content/index.js b/src/content/components/top-content/index.js
index a2179da..c318901 100644
--- a/src/content/components/top-content/index.js
+++ b/src/content/components/top-content/index.js
@@ -14,19 +14,20 @@ export default class TopContent {
// TODO make component
consoleFrames.initialize(window.document);
+
+ messages.onMessage(this.onMessage.bind(this));
}
update() {
this.children.forEach(c => c.update());
}
- onMessage(message, sender) {
+ onMessage(message) {
switch (message.type) {
case messages.CONSOLE_HIDE_COMMAND:
this.win.focus();
consoleFrames.blur(window.document);
return Promise.resolve();
}
- this.children.forEach(c => c.onMessage(message, sender));
}
}
diff --git a/src/content/index.js b/src/content/index.js
index e01172d..77249f8 100644
--- a/src/content/index.js
+++ b/src/content/index.js
@@ -14,16 +14,4 @@ store.subscribe(() => {
rootComponent.update();
});
-browser.runtime.onMessage.addListener(msg => rootComponent.onMessage(msg));
rootComponent.update();
-
-window.addEventListener('message', (event) => {
- let message = null;
- try {
- message = JSON.parse(event.data);
- } catch (e) {
- // ignore unexpected message
- return;
- }
- rootComponent.onMessage(message, event.source);
-});
diff --git a/src/shared/messages.js b/src/shared/messages.js
index 134d71c..dc497b6 100644
--- a/src/shared/messages.js
+++ b/src/shared/messages.js
@@ -1,3 +1,26 @@
+const onWebMessage = (listener) => {
+ window.addEventListener('message', (event) => {
+ let sender = event.source;
+ let message = null;
+ try {
+ message = JSON.parse(event.data);
+ } catch (e) {
+ // ignore unexpected message
+ return;
+ }
+ listener(message, sender);
+ });
+};
+
+const onBackgroundMessage = (listener) => {
+ browser.runtime.onMessage.addListener(listener);
+};
+
+const onMessage = (listener) => {
+ onWebMessage(listener);
+ onBackgroundMessage(listener);
+};
+
export default {
BACKGROUND_OPERATION: 'background.operation',
@@ -23,4 +46,8 @@ export default {
SETTINGS_RELOAD: 'settings.reload',
SETTINGS_CHANGED: 'settings.changed',
SETTINGS_QUERY: 'settings.query',
+
+ onWebMessage,
+ onBackgroundMessage,
+ onMessage,
};