changeset: 147:f9e98b8960a6
tag: tip
user: Connor Lane Smith <cls_AT_lubutu.com>
date: Mon Sep 26 22:39:59 2011 +0100
files: tabbed.c
description:
fix focus handling (thanks roman)
diff -r 83dfab8f4285 -r f9e98b8960a6 tabbed.c
--- a/tabbed.c Mon Sep 26 22:37:22 2011 +0100
+++ b/tabbed.c Mon Sep 26 22:39:59 2011 +0100
@@ -94,7 +94,6 @@
static void drawbar();
static void drawtext(const char *text, unsigned long col[ColLast]);
static void *emallocz(size_t size);
-static void enternotify(const XEvent *e);
static void expose(const XEvent *e);
static void focus(Client *c);
static void focusin(const XEvent *e);
@@ -134,7 +133,6 @@
[ConfigureRequest] = configurerequest,
[CreateNotify] = createnotify,
[DestroyNotify] = destroynotify,
- [EnterNotify] = enternotify,
[Expose] = expose,
[FocusIn] = focusin,
[KeyPress] = keypress,
@@ -368,11 +366,6 @@
}
void
-enternotify(const XEvent *e) {
- focus(sel);
-}
-
-void
expose(const XEvent *e) {
const XExposeEvent *ev = &e->xexpose;
@@ -390,6 +383,7 @@
}
resize(c, ww, wh - bh);
XRaiseWindow(dpy, c->win);
+ XSetInputFocus(dpy, c->win, RevertToParent, CurrentTime);
sendxembed(c, XEMBED_FOCUS_IN, XEMBED_FOCUS_CURRENT, 0, 0);
sendxembed(c, XEMBED_WINDOW_ACTIVATE, 0, 0, 0);
XStoreName(dpy, win, c->name);
@@ -402,7 +396,15 @@
void
focusin(const XEvent *e) {
- focus(sel);
+ const XFocusChangeEvent *ev = &e->xfocus;
+ int dummy;
+ Window focused;
+
+ if(ev->mode != NotifyUngrab) {
+ XGetInputFocus(dpy, &focused, &dummy);
+ if(focused == win)
+ focus(sel);
+ }
}
void
Received on Mon Sep 26 2011 - 23:40:14 CEST
This archive was generated by hypermail 2.2.0 : Mon Sep 26 2011 - 23:48:05 CEST