freenode/#clim - IRC Chatlog
Search
8:44:47
jackdaniel
nyef: in ideal world: analysis what spec calls for and what mcclim implements and after that protocol documentation taking that into account with short summary: does McCLIM the right thing? are there alternative interpretations? what are possible improvements?
12:40:40
loke
However, it turns out that it's quite limited. There is a lot of code, but most of it is maths related. There quite a bit of stuff there, but the CLIM stuff is acutally quite basic. It can render fractions, exponents etc, but nothing more advanced than that. A sum, for example, is completely out of scope fo rit.
13:40:51
jackdaniel
http://hellsgate.pl/files/a05232d3 (example pane hierarchy with intervening mirrored and unmirrored sheets for documentation and backend tests) - red is mirrored, cyan is unmirrored
13:41:36
jackdaniel
when I think about it it would be nice to write code for inspector which provides similar representation of "live" frames, but I don't think I'm up to it
14:26:06
jackdaniel
OK, so I have written this application which allows me to peek which pane is a mirror and which is not (I've skipped all the stream stuff and subclassed gadget - I need only repaint right now)
14:26:26
jackdaniel
I've also hacked frame-manager to let me decide interactively which panes I want to mirror
14:34:08
beach
The problem is that a sheet can be bigger than what X11 can express, which is 65535 I think.
14:34:25
jackdaniel
(we have also "standard-fully-mirrored-sheet-mixin and it has update-mirror-geometry a lot of messy code, I'd guess this is the coordinate swizzling)
14:34:36
beach
Coordinate swizzling takes advantage of the fact that only a small part of the sheet can be visible.
14:39:07
beach
This discussion makes me want to rewrite the entire sheet geometry code from scratch. I am pretty sure I took all situations into account when I wrote it the first time, but you are right, stuff was added and modified afterwards.
14:40:54
beach
And a rewrite should probably start off without the caches for regions and transformations.
14:41:07
jackdaniel
I often think that I thought about all situations, but simple visualisation makes it obvious that I made some mistakes (for instance with ellipsis code - that was invaluable to start with tests)
14:41:44
jackdaniel
because we assume that (setf sheet-transformation/region) is setter and request at the same time
14:42:06
jackdaniel
imo this must be untangled into (setf …) which is a request, and %update- which sets the actual slot
14:42:57
jackdaniel
well, right now when you do (setf (sheet-region foo) …) then you: a) set the slot, b) set the geometry, c) invalidate caches, b) send a note that region has changed
14:44:13
jackdaniel
that leads to configuation event which calls (setf (sheet-region foo) …) with exception, that you dont send the request to the port (but mirror-geometry is calculated again)
14:44:58
jackdaniel
configuration event: updates slot, invalidates caches, updates geometry and sends the note
14:46:07
jackdaniel
but I need to experiment with it a little, also first I need to work on mixed-mirrored sheets
14:47:33
jackdaniel
basically we use the same interfaces to: a) request sheet region and b) update our internal state