freenode/#clim - IRC Chatlog
Search
6:15:45
beach
loke: (or someone else) so EXECUTE-FRAME-COMMAND doesn't make McCLIM execute an iteration of the command loop. Is there a way, like sending an event, that will make that happen?
7:44:52
beach
I am calling EXECUTE-FRAME-COMMAND from a different thread, and I need to wake up the McCLIM thread so that it will process the command.
9:14:37
jackdaniel
if I was eager to make it work I'd hack the default-frame-top-level call to read-frame-command to have there handler-case to handle a (new) condition command-executed which would set needs-redisplay variable to t (and to signal this condition from handle-event defined on execute-command-event)
9:18:11
jackdaniel
I have a suspicion I yet need to verify whenever code wouldn't be more readable to me with less colors
9:19:28
no-defun-allowed
At some point last month or the one before, I must have changed something by accident that changed the colour of function names in DEFUN, class names in DEFCLASS, etc, in Emacs. That's really the only highlighting I think is any good.
9:19:39
jackdaniel
speaking of cute things: lines with a round cap shape: https://files.mastodon.social/media_attachments/files/018/592/253/original/5e402b25c32183cc.png
11:59:34
scymtym
ck_: if you have other cases, please add them here: https://github.com/McCLIM/McCLIM/issues/835
13:26:09
scymtym
jackdaniel: what are the implications of the "FIXME clx …" comment? i don't get that from the comment
16:02:12
jackdaniel
scymtym: consequences are that sheet may receive "enter" event twice without "leave" event in between (and vice versa)
16:04:24
jackdaniel
it is visible in hierarchy tool demo (update is in the other PR), where balance should stay at all times at either one or zero
16:04:52
jackdaniel
while it doesn't affect anything in our codebase I can imagine someone creating a gadget, which allocates some resource when pointer enters it
16:05:41
scymtym
jackdaniel: so the clx port produces spurious enter events for sheets that have a direct mirror?
16:05:44
jackdaniel
it doesn't seem to be a serious issue but is certainly bogus: if you enter a sheet you can't "enter" it from inside unless you leave it first
16:06:34
jackdaniel
if you run hierarchy-tool demo from the second pr (where it is updated) you may reproduce the issue by pressing a button over one sheet and releasing it over another
16:06:58
jackdaniel
that said previous implementation had generated much more spurious events, so our netto balance is in plus ayway
16:09:53
scymtym
to reproduce, i rebase ieh-2 onto ieh-1 and then use the hierarchy tool in the way you described?
16:10:03
jackdaniel
clx generates :enter-notify event which may represent ungrab-enter-event or simply enter-event
16:10:48
jackdaniel
we can't simply get rid of ungrab leave/enter events because menu implementation seems to use it
16:12:10
jackdaniel
I'll let myself answer one of PR questions here (I'll look at the review on Monday): we can't just setf event-sheet because events are immutable
16:12:31
jackdaniel
so handle-event may store event somewhere for future reference for whatever reason
16:12:56
jackdaniel
sure, I just don't see how this could be avoided (I've investigated the issue at the time for about an hour or two)
16:15:25
jackdaniel
hm, I don't know, I've seen your comments in email but I can't find the comment right now
16:20:51
jackdaniel
ah, right. so we may imagine a port which is aware of unmirrored sheets on its own or that all sheets are mirrored in it (and then we should not try to look for the innermost sheet)
16:23:39
scymtym
yeah, maybe, i was wondering who is responsible for what, given that ports might put different things in the event sheet slot. or we could make rule that all ports would have to follow
16:24:22
jackdaniel
that's exactly the point of this comment, to show that there are a few sane strategies what is the right thing to do and it is not specified who is responsible for that
16:24:46
jackdaniel
my take is that basic-port should assume, that port works only with mirrored sheets and we need to fix that up
16:25:02
jackdaniel
and if someone wants to implement something different, they should subclass clim:port and not clim:basic-port
16:35:02
scymtym
how (and whether) different kinds of port behaviors can be supported seems to need more thought but i'm out of time for today
16:38:03
scymtym
jackdaniel: sorry for agonizing over every little detail, but i feel this is at the very core of McCLIM and getting it right is very important
16:44:57
jackdaniel
scymtym: one important thing: classes are implemented in pairs (some are not but imo it is an amission in the spec); clim:whatever is a protocol class and may be subclassed if someone is willing to implement the protocol from scratch
16:45:32
jackdaniel
so the easy way is to subclass basic-whatever while the hard way (yet more customizable) is to implement the whole protocol
16:46:15
jackdaniel
(and parts which work with i.e "any" whatever should not know about basic-whatever implementation details like slots)
16:47:31
jackdaniel
medium in fact is a very good example: basic-medium is specified to transform coordinates eagerly before passing them to medium-draw-*, but custom medium may leave the transformation to the actual drawing hardware, then coordinates should not be transformed eagerly