freenode/#clim - IRC Chatlog
Search
14:53:37
jackdaniel
the problem with this approach is that it makes sheet-native-transformation useless (and incorrect) when we leave the x11 land, yet it is baked in the core
14:56:57
jackdaniel
well, maybe usless is not a good word. it still has some use for unmirrored sheets
15:12:39
jackdaniel
I'm not saying that sheet-native-transformation is useless as a concept, I'm saying that it is always identity-transformation for a mirrored sheet (and comment in the file mirrors.lisp confirms that), because how swizzling is implemented
15:15:39
beach
Clipping has to be implemented anyway if mirroring is not used, and you told me that single-mirror frame managers work.
15:16:25
jackdaniel
it does work, I'm saying that relation between mirrors is also enforced in that file
15:17:09
beach
So what are your conclusions from that? It sounded to me like your phrase would continue with something like "so your idea won't work".
15:18:01
jackdaniel
that was observation related to coordinate swizzling implementation, not that your idea won't work
15:18:44
beach
With my idea, coordinate swizzling won't be necessary even when some non-top-level windows are mirrored.
15:19:30
beach
But without the restrictions of the single-mirror frame manager (that often makes foreign gadgets impossible).
15:20:24
jackdaniel
the problem I have encountered regarding swizzling is more mundane than that: when I adopt a mirrored sheet to a graft and move it, it is not reflected in the sheet region nor the sheet native region, only in the "mirror" properties
15:20:56
jackdaniel
so from a backend writing perspective, they have to reach outside the clim specification and use interfaces that are tied to the imlementation of coordinate swizzling
15:21:39
beach
That's not good. I myself have encountered bugs with scrolling, but I have mentioned that before, and they have probably been fixed a long time ago.
15:22:01
jackdaniel
right, I'm looking at the whole thing now from a perspective of the manual for backend writers
15:22:30
jackdaniel
(and some things I'm saying may be incorrect - I'm just expressing my current thought how this works)
15:23:23
beach
Well, if the problem can go away by just not mirroring the viewport pane (or some other child of the scroller pane) then that would simplify your manual too.
15:23:59
jackdaniel
I'm reasoning on a lower level right now - mirrored and unmirrored sheets (and sheet protocols), no panes and viewports
15:26:15
beach
Perhaps REALIZE-MIRROR should do nothing for most sheets if the port does not support nested windows.
15:27:30
beach
I don't think you have to worry about that. They layout protocol will change the position anyway.
15:27:52
jackdaniel
(usually, when the port does not support nested windows, the sheet won't be a subclass of the mirrored-sheet-mixin, so realize-mirror won't be called on it)
15:29:07
beach
As I recall, we concluded that it was not reasonable to have two sets of each pane type, one that is a subclass of mirrored-sheet and one that is not.
15:29:36
beach
So then, it is not up to the sheet class to determine whether a mirror should be created or not.
15:30:24
jackdaniel
it is the frame manager that mixes in the mirrored-sheet-mixin to appropriate panes (creates new classes), so that's how we currently realize the port mirroring strategy
15:30:32
beach
Yes, but the existence of the layout protocol means you don't have to care about the position of the mirror when it is created.
15:31:00
jackdaniel
unless we want to allow building non-clim toolkits on top of the silica part of the specification
15:31:55
jackdaniel
adding a mirror to each class was already part of clx backend when I have joined the project
15:32:58
jackdaniel
that mechanism was already there when I have joined the project, I don't know how introduced it
15:34:03
beach
I still suspect that all that complication would have been avoidable if we had let the port decide whether a mirror should be created for mirrored sheets.
15:34:09
jackdaniel
either way, ignoring mirrored-sheet-mixin completely seems to be at odds with the specification
15:40:57
jackdaniel
looking at the clim-tos source code, top-level-sheet is mirrored and its children are not - and it is decided on the class hierarchy level
15:41:31
jackdaniel
silica provides a set of other classes that are usable without using frames (i.e standard-mirrored-sheet that incorporates all necessary mixins)
15:42:01
jackdaniel
in other words, they do not put a burden of deciding what is mirrored on the frame manager
15:42:30
jackdaniel
individual gadgets from backends are explicitly mirrored, because they use "native" widgets
15:43:03
jackdaniel
that sounds very similar to what you have mentioned (and is much of course much cleaner)
15:45:19
jackdaniel
from things used in a frame yes (unless you create your own pane that is mirrored - mirrored sheets may be adopted like others)