summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-12 12:53:49 +0100
committerwm4 <wm4@nowhere>2015-01-12 12:53:49 +0100
commit3459130e5c5873f3db794a98d63d261e483e23dc (patch)
tree0b910f72f8bcdca4d599513277fc3e9d261ef976
parenta8df0bbf22ab05eb5ebd92f6dbb30abd7428120e (diff)
downloadmpv-3459130e5c5873f3db794a98d63d261e483e23dc.tar.bz2
mpv-3459130e5c5873f3db794a98d63d261e483e23dc.tar.xz
client API: reasonable behavior if window is closed
Closing the video window sends CLOSE_WIN, which is normally mapped to the "quit" command. The client API normally disables all key bindings, and closing the window does nothing. It's simply left to the application to handle this. This is fine - an embedded window can not be destroyed by user interaction. But sometimes, the window might be destroyed anyway, for example because the containing window is destroyed. If this happens, CLOSE_WIN should better not be ignored. We can't expect client API users to handle this specially (by providing their own input.conf), so provide some fallback for this pseudo key binding. The "quit" command might be too intrusive (not every client necessarily handles "unexpected" MPV_EVENT_SHUTDOWN), but I think it's still reasonable.
-rw-r--r--input/input.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/input/input.c b/input/input.c
index 96d99e94f9..79197e5a62 100644
--- a/input/input.c
+++ b/input/input.c
@@ -460,6 +460,8 @@ static mp_cmd_t *get_cmd_from_keys(struct input_ctx *ictx, char *force_section,
struct cmd_bind *cmd = find_any_bind_for_key(ictx, force_section, code);
if (cmd == NULL) {
+ if (code == MP_KEY_CLOSE_WIN)
+ return mp_input_parse_cmd_strv(ictx->log, (const char*[]){"quit", 0});
int msgl = MSGL_WARN;
if (code == MP_KEY_MOUSE_MOVE || code == MP_KEY_MOUSE_LEAVE)
msgl = MSGL_DEBUG;