Age | Commit message (Collapse) | Author |
|
Using Typeables as the only constraint on layout messages is a bit
scary, as a user can send arbitrary values to layoutMsg, whether they
make sense or not: there's basically no type feedback on the values you
supply to layoutMsg.
Folloing Simon Marlow's dynamically extensible exceptions paper, we use
an existential type, and a Message type class, to constrain valid
arguments to layoutMsg to be valid members of Message.
That is, a user writes some data type for messages their layout
algorithm accepts:
data MyLayoutEvent = Zoom
| Explode
| Flaming3DGlassEffect
deriving (Typeable)
and they then add this to the set of valid message types:
instance Message MyLayoutEvent
Done. We also reimplement the dynamic type check while we're here, to
just directly use 'cast', rather than expose a raw fromDynamic/toDyn.
With this, I'm much happier about out dynamically extensible layout
event subsystem.
darcs-hash:20070504081649-9c5c1-954b406e8c21c2ca4428960e4fc1f9ffb17fb296
|
|
darcs-hash:20070504045644-a5988-68a6d650bacab936f893b96bf866696da3f73436
|
|
darcs-hash:20070504023618-9c5c1-4b5a4021212b08fedff7f8ec3d8b4234431aada3
|
|
darcs-hash:20070504015043-b9aa7-a9e8a52b54a21ba00fba0b13a3ec1cc150b1aae5
|
|
darcs-hash:20070504014653-b9aa7-1709cb0b718a7a058021c76fb95f9654c43f54b1
|
|
darcs-hash:20070503235632-a5988-98863d7067876591bd9da2b33d062bfe2c5b42fd
|
|
darcs-hash:20070503234607-a5988-3f9f46071263093707fdaba677899edc1a85edc1
|
|
darcs-hash:20070503233148-a5988-628ec9194db704513dd804fc7c72bb478689526e
|
|
darcs-hash:20070503214221-a5988-c596e80afe12a486f08901e853071d42dd2d9123
|
|
darcs-hash:20070503214007-a5988-f427a9747f76859219abf029c2f550e7dbec258f
|
|
darcs-hash:20070503144750-72aca-f44bca4573837e12fc1f89333b55e04abd52787c
|
|
darcs-hash:20070503075821-9c5c1-d5bc043872adb9f95c23e0fde87ae11f16108785
|
|
darcs-hash:20070503074937-9c5c1-769ff9e521726032973c5712940c8c671746153e
|
|
darcs-hash:20070503074843-9c5c1-52a96686d7d6a1e260790db263c03799116b1202
|
|
darcs-hash:20070503032040-a5988-f30dac176a6db3139e07c8b29bbc31d27c67d410
|
|
darcs-hash:20070503002252-a5988-751a9563c3a2574a423367cdcba11e3e661f9d92
|
|
darcs-hash:20070502201622-a5988-ac80f011c59276c52314ea128c07a54487c9bee9
|
|
darcs-hash:20070502195917-a5988-6831029fae89604c06ae962aaffdf81bfdad3297
|
|
darcs-hash:20070502061859-9c5c1-e6e6c50c174610f5ff7a0438f849fde86ee23739
|
|
darcs-hash:20070501204249-a5988-c692509d697dd8fa3c47b478e9cc6626c6a57d7a
|
|
darcs-hash:20070501204121-a5988-788f9ff940b4d9de34801588c1420b60d038d97d
|
|
darcs-hash:20070501035414-9c5c1-cd566efa85f7ea09d5e252fabe485a46f5bd3eb2
|
|
darcs-hash:20070501031220-9c5c1-9354f63ca805ac82d5edb814eb56f46e73afa8d4
|
|
darcs-hash:20070430065946-9c5c1-a63c2fa904ff1b915da40dfef6289ee935991992
|
|
darcs-hash:20070430163515-a5988-9dea5188c30830fd8b3135f7cb5beffd7b90dcb9
|
|
darcs-hash:20070430162647-a5988-70420c2db283eb1585c96d977e5ac5ca3d0d1532
|
|
darcs-hash:20070430161635-a5988-ee0abcdeff2aa92df2d593de488797015c0fc7e7
|
|
darcs-hash:20070430161511-a5988-2196c16d0c2d0d5207b68a6b27d66b11b4fe0014
|
|
darcs-hash:20070430062901-9c5c1-dd591516cb05072be929aa68d42be3b27476bd5a
|
|
darcs-hash:20070430055751-9c5c1-da5da09a5c2ff160fb7b243794d5fd3d7f954cb1
|
|
darcs-hash:20070430054345-9c5c1-98af87adafacc002e4df6e22ea42ac97f40b4399
|
|
darcs-hash:20070430051016-9c5c1-ec4c5d4ed5353026b45a769570d53cf299b31ec2
|
|
darcs-hash:20070430050133-9c5c1-32823e4a47119867b1425a8bbe81af44dc8b7f1e
|
|
darcs-hash:20070430054715-a5988-a74f5e2868f47443a69b0cd821fa690e43a4a7e1
|
|
darcs-hash:20070430053623-a5988-b7fd0de8376993fdab9ce99bf3c525105b597b33
|
|
This also fixes a bug where xmonad was assuming a 24-bit display, and just
using, eg, 0xff0000 as an index into a colormap without querying the X server
to determine the proper pixel value for "red".
darcs-hash:20070430043859-b9aa7-9467ff583ec95144e5baa088e4b1536a725e7bc6
|
|
darcs-hash:20070430035729-9c5c1-90b4f4b1e0db1884704e3a1d8fc246734220b603
|
|
darcs-hash:20070430031151-9c5c1-7d66b13bc36af0e33af655f33ef287c8d4a379e7
|
|
darcs-hash:20070430025319-9c5c1-e9f7308996d1400c1abd42d2d5f6ef30b8f01c06
|
|
darcs-hash:20070430024813-9c5c1-28d697989294c4c5ce03e44553b75a8d7bc6c03e
|
|
darcs-hash:20070430024525-9c5c1-fd54666b06e2d896e023e7ae1c8f2b32fdb7a815
|
|
darcs-hash:20070430021758-9c5c1-f1ae3d5c2639b9c3ee91ccdebaefe0cf4a2c6df5
|
|
darcs-hash:20070430015927-9c5c1-9fdb237b91b517b77ab4a63c6675afa1ca759fe6
|
|
darcs-hash:20070429041011-9c5c1-d77c7c4a7954d42c7b67cf73ee222d0d684ae962
|
|
darcs-hash:20070429035823-9c5c1-37dc9df3086bb7672eeea83e4add3aeb4ffa0bd4
|
|
darcs-hash:20070429035804-9c5c1-6e23a1c166235085f34bda111b332b2ef7b50e01
|
|
XKeysymToKeycode() returns zero if the keysym is undefined. Zero also happens
to be the value of AnyKey.
darcs-hash:20070428180046-b9aa7-79b768917b225267fa13fffda0738b53504aa722
|
|
darcs-hash:20070426212257-a5988-dc5cc91918a152728de05a7f6c39d209d81c5b04
|
|
darcs-hash:20070426211407-a5988-e08784e64270523d8dac44d8249c335f029272fd
|
|
darcs-hash:20070426014105-a5988-87c092ecd1c8fa40a18db1a82654b9d1b325eb7a
|