dix: move focus handling into enterleave.c.

This commit moves the focus handling from events.c into enterleave.c and
implements a model similar to the core enter/leave model.
For a full description of the model, see:
http://lists.freedesktop.org/archives/xorg/2008-December/041740.html

This commit also gets rid of the focusinout array in the WindowRec, ditching
it in favour of a local array that keeps the current focus window for each
device.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer
2008-12-19 21:05:47 +10:00
parent 673eb23aac
commit eb2d7b3d70
6 changed files with 837 additions and 281 deletions

View File

@@ -38,6 +38,13 @@ extern void DoEnterLeaveEvents(
int mode
);
extern void DoFocusEvents(
DeviceIntPtr pDev,
WindowPtr fromWin,
WindowPtr toWin,
int mode
);
extern void EnterLeaveEvent(
DeviceIntPtr mouse,
int type,
@@ -67,4 +74,22 @@ extern void EnterWindow(DeviceIntPtr dev,
WindowPtr win,
int mode);
extern void CoreFocusEvent(DeviceIntPtr kbd,
int type,
int mode,
int detail,
WindowPtr pWin);
extern void DeviceFocusEvent(DeviceIntPtr kbd,
int type,
int mode,
int detail,
WindowPtr pWin);
extern void SetFocusIn(DeviceIntPtr kbd,
WindowPtr win);
extern void SetFocusOut(DeviceIntPtr dev,
WindowPtr win);
#endif /* _ENTERLEAVE_H_ */