summaryrefslogtreecommitdiff
path: root/docs/grail-problems.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/grail-problems.txt')
-rw-r--r--docs/grail-problems.txt60
1 files changed, 60 insertions, 0 deletions
diff --git a/docs/grail-problems.txt b/docs/grail-problems.txt
new file mode 100644
index 0000000..0713288
--- /dev/null
+++ b/docs/grail-problems.txt
@@ -0,0 +1,60 @@
1Split gestures into recognition and application
2-----------------------------------------------
3
4Gesture detection is not an exact science, but the algorithms
5inevitably involve decisions influenced by what gestures are available
6to choose from. Therefore, the recognition should be considered an
7inherent property of the device itself, regardless of user interaction
8context. Just imagine having a keyboard that resized slightly
9everytime you switched from chrome to gimp.
10
11
12Tag events as being part of a gesture
13-------------------------------------
14
15One of the problems faced when replacing one set of events with
16another is where and how this filtering should take place. One window
17might listen for spiral gestures, whereas another window is a paint
18program where you actually want to draw a spiral. By introducing a
19relation between a gesture and an event, filtering becomes something
20simple that can be performed close to the window. The relation can be
21implemented as a bitmask representing what gestures the event is part
22of.
23
24
25Help the client to keep track of active gestures
26------------------------------------------------
27
28A gesture starts, continues, and either completes or aborts.
29A client that listens to a subset of gestures will have to keep track.
30Compatible to Qt approach.
31
32
33Allow clients to listen to different gestures
34---------------------------------------------
35
36Clients listening on certain gestures will get those gesture events that
37apply to the client, which makes it possible for different clients to
38listen to different types of gestures. For instance, having an MT drawing
39program next to a web browser, a two finger stroke in the drawing program
40will result in two lines, whereas in the web browser, it will scroll the
41text.
42
43
44Propagate gesture events based on the focus point
45-------------------------------------------------
46
47Like pointer events, a gesture applies to a window or a window manager,
48based on where it is performed on the screen. In order to route the gesture
49events to the right window, we propagate them through the window hierarchy
50based on the gesture focus points. Based on the target windows, their
51respective gesture type masks, and the active set of gestures, final
52gesture events are emitted to the right windows.
53
54
55Allow Window Manager to grab system-wide gestures
56-------------------------------------------------
57
58Even if clients are not listening to global window-manager gestures, it
59could well be that no other gestures should be displayed while the global
60gesture is taking place.