freenode/#clim - IRC Chatlog
Search
13:50:50
scymtym
jackdaniel: could you have a look at #1099? it is a small fix for an annoying regression
13:52:52
jackdaniel
random idea: when we realize a mirror on a sheet that is not grafted, should the mirror be a pixmap? (assuming that pixmaps /are/ off-screen mirrors)
14:19:22
scymtym
didn't you also want to set the port "late", that is when grafting the sheet? without a port, making the right kind of pixmap seems impossible
14:22:07
jackdaniel
mcclim core wont' call realize-mirror on its own either (it is prompted by note-sheet-grafted) -- I can imagine, that a programmer sets the port manually and calls realize-mirror
14:23:51
scymtym
maybe i'm not understanding the first proposal properly. how would the port normally be set?
14:31:22
loke
OK, I have a really weird problem... I will try to explain it here in the hope that make I make enough sense that someone may be able to give me a suggestion
14:49:08
jackdaniel
the proposal in #1103 is to call (setf (port sheet) (port graft)) when the sheet is grafted
14:53:09
jackdaniel
loke: adding the output record to a pane does not necessarily mean drawing it, you should call replay on that output record
14:54:33
scymtym
jackdaniel: ok, that confused me because setting the port, realizing the mirror (possibly as a pixmap) and (de)grafting would interact in more complicated ways than in the "normal" case where everything is tied to (de)grafting and the port doesn't change
14:54:49
loke
so when the outer record gets drawn (in REPLAY-OUTPUT-RECORD I guess), shouldn't it then call the child record recursively?
14:55:36
loke
And why does it work the first time but not the second time (after typing a command in the interactor)
14:55:37
jackdaniel
scymtym: when you realize the mirror manually (without grafting it first), then you also call destory-mirror manually (and you are not degrafting it)
14:56:44
jackdaniel
loke: if I understand you correctly, you add the output record from the replay function?
14:57:22
jackdaniel
as of why it is drawn during the first time - I don't know, but adding output records interwened with replying them sounds like an undefined behavior
14:57:37
scymtym
jackdaniel: sure, but the state space is more complicated. for example, if you set the port, then realize the mirror, then graft, will the port be changed and will pixmap mirror be destroyed? or will an error be signaled?
14:58:27
loke
The record is there. It works the first time, but the inner record doesn't get displayed the second time the REPAINT-ALL is called.
14:59:02
loke
However, the record is there, because if I call REPAINT-SHEET on the pane, all gets displayed.
14:59:04
jackdaniel
scymtym: I'd opt for signalling an error, i.e "sheet can't be grafted, it already has a mirror"
15:03:22
loke
It's really odd, because this principle of creating an output record and adding it is something Climaxima does everywhere, and I've never had this problem in other places.
15:04:01
jackdaniel
loke: you would have better chances if you had constructed a minimal example of code, that may be run
15:04:37
loke
jackdaniel: Yes, I will do that. It's a bit of a hassle though so I'm going to try some things first.
15:06:12
scymtym
loke: one option would be, after executing the command, run (clouseau:inspect climi::*all-ports*), the click through port » frame manager » frame » panes » output history and see whether the output record hierarchy looks correct
15:08:05
jackdaniel
scymtym: what should the backend do when realize-mirror is called on a sheet, that is not grafted?
15:10:26
loke
Interesting... I have two versions. One works, the other don't. As best as I can tell, they should be equivalent, no?
15:11:22
jackdaniel
acting only on the information you have provided (that one version works and one doesn't), I'd say that they are not equivalent ,-)
15:11:41
scymtym
jackdaniel: i thought that case didn't arise currently since grafting and REALIZE-MIRROR are tied together
15:12:36
jackdaniel
functions are exported from the clim package, so everything goes. you are right, that doesn't happen for frames unless someone deliberely calls realize-mirror
15:13:35
jackdaniel
simply say: when the sheet is grafted, create (and map, if enabled) a window; or maybe suggest that creating a pixmap
15:15:41
jackdaniel
loke: the first one adds directly to the stream history, the second one adds to the current output record as a child
15:16:37
scymtym
but STREAM-ADD-OUTPUT-RECORD also says "Adds the output record /record/ to the current output record on the output recording stream stream"
15:17:41
jackdaniel
while output-to-output-record does, because it is not granted that you'll want to draw the record eagerly
15:18:18
scymtym
my impression is also that the first solution must replay the output record after adding it
15:20:08
jackdaniel
(I've misread a code regarding parent, with-new-output-record /allows/ specyfing different parent record than the current record
15:20:48
scymtym
i think the relevant difference is that WITH-OUTPUT-TO-OUTPUT-RECORD disables drawing on the stream
15:22:37
scymtym
the outer output record goes through WITH-NEW-OUTPUT-RECORD (via WITH-OUTPUT-AS-PRESENTATION) so it makes sense that it is always drawn