libera/#clim - IRC Chatlog
Search
16:03:24
mrcom
That's quite a bibliography. Is there anything like it on Cliki or another common resource site?
16:09:44
mrcom
I'm looking through one of them right now. From 2008, "An implementation of CLIM Presentation Types," by Timoty Moore.
16:11:01
mrcom
Interesting sentence: "many presentation types do not have `standard-objects' as a supertype".
16:27:23
mrcom
And to get back to the "interesting sentence"... I think he's primarily referring to bultin types, such as REAL?
16:29:16
mrcom
It's a somewhat-common practice to create presentation types that aren't descendants of STANDARD-OBJECT?
16:29:17
jackdaniel
parametrizing standard classes is one, but another is assigning semantical roles to objects
16:29:28
jackdaniel
for example you want to display some arbitrary collection of data in a form of a graph
16:30:48
jackdaniel
you may look into Documentation/Notes/presentatin-types.org remarks if you are interested in more details
16:31:33
mrcom
But aren't they still descended from S-O? Or is there a whole 'nother object type tree?
16:33:07
jackdaniel
consider these two presentations: (define-presentaition-type foo () :inherit-from <my-class>)
16:34:55
mrcom
Ok, it clicked--the _presentation type_ isn't a subtype of S-O. We aren't talking about the underlying class it's wrapping for presentation.
16:43:36
mrcom
No search function on Moore's site, but what a lot of interesting links. Thanks jackdaniel, another time-eating rabbit-hole. :)
16:45:08
contrapunctus
mrcom: thanks, I hadn't received those messages for some reason. (Found them in the log.)
16:51:25
mrcom
"everyone is invited to join in if they can manage to get things running." Gotta love university projects :)
16:53:59
mrcom
jackdaniel: Any objections to posting the link to Moore's site on #lisp? I guess we don't really need to worry about thundering herds...
16:54:29
jackdaniel
afaik it is hosted by Rainer, and I think that this paper is also linked on mcclim website
16:54:46
jackdaniel
either way I don't mind, if they didn't want it to be seen, they would not put it on web
17:04:02
mrcom
Home page says "Don't try to copy the whole site." I think because it's resource-limited, but...
17:12:05
mrcom
Wayback machine has an " Access Forbidden" page for lispm.de, so I guess Rainer doesn't want it archived.
17:13:56
mrcom
Look like he just put that up... 2022-02-23 snapshot exists, 2022-02-28 and on have 403.
17:45:10
maxz
Is there some kind of callback for scrollbars? I could not find anything in the CLIM2 specification or the McCLIM documentation. I want to do some things when a scrollbar is moved.
17:52:29
cmack
I'm still working to get the code into a shareable, works-on-more-computers-than-just-mine state but I had a recent visual success with implementing very early wayland backend proof-of-concept https://i.imgur.com/kgoN86i.png
17:55:53
jackdaniel
cmack: small hint - if you want messages to always appear in the terminal (i.e not in the frame's standard output), then print to the stream *debug-io*
17:55:55
cmack
jackdaniel: I don't think I have the full protocol implemented yet. I do have a mirror for wayland+egl and it has REALIZE-MIRROR and DESTROY-MIRROR...
17:56:33
cmack
this project has been a learning experience in how all the sheets, mirror, ports are related. So I'm sure I have some things wrong
17:57:33
jackdaniel
when I'm home I can send you some incomplete notes about mirros if you are interested
17:57:44
maxz
jackdaniel: Thank you. I will take a look at that. I am using the scrollbar which is generated as part of the pane definition, so I will have to check how to properly attach the callback to that one.
17:59:31
maxz
jackdaniel: You did some great work in May. I did not quite appreciate the broken scrollbar which was there for a while, but after the refactoring you did, some long standing bugs I had to deal with disappeared.
17:59:47
jackdaniel
maxz: portably you can't modify the scroll bar callbacks at runtime, so I'd rather suggest creating scroll bars manually (i.e with the scrolling macro)
18:00:50
jackdaniel
oh, I'm glad that you like it; I've put a considerable amount of effort into that branch
18:03:29
cmack
I agree. Reading through some of your blog posts and recent commit history has helped me some in my backend writing quest
18:22:17
cmack`
I've had to switch computers for sick kid parenting. My latest hurdle is to get my test app painting using a very basic gadget. One so basic that it doesn't have any of the medium protocol implemented.
18:22:54
maxz
Is it actually intended that a scrollbar only maintains its position on a redraw of its pane when used on a pane with :incremental-redraw t or is that a bug? And how else would I be expected to maintain the position in such a case if not with a callback? Using incremental-redraw is too slow for my use case (the elements take like 5 seconds to be fully drawn) which I'm pretty sure is a bug and will submit a proper report with minimal
18:23:32
jackdaniel
cmack: I've mentioned in the SVG post that if you imlpement medium-draw-polygon, then you have all other drawing methods working (albeit slow)
18:24:34
jackdaniel
maxz: I didn't investigate that, but some people complained too about this behavior
18:25:46
jackdaniel
as of what is the expected behavior - I don't know; perhaps storing the position for the time of a redisplay to readjust it back makes sense; on the other hand :end-of-page-action :scroll (et al) would need to be disabled for that time as well
18:27:35
jackdaniel
(my point is that deciding what is the right thing is not a no-brainer and requires some thought which I did not pay to it yet)
18:28:08
maxz
Yes, that was how I somehow managed it up to now. But you have to remember to save the position on all actions and it breaks apart in some cases where you cant easily detect when such an action occurs before it is too late to save the position. So it is somewhat doable, but not a very pleasant experience.
18:28:25
cmack`
I did see that...but at the time I deferred so that I could just get /something/ on the screen first. I'll read again now that I've been in the trenches a little bit longer
18:34:40
cmack`
:) Slightly different context question: if I wanted to have a pane that was an opengl 3d view, would I still need to implement the medium protocol?
18:49:07
maxz
The scroll bar created with scrolling actually keeps it's position and works properly ...
18:49:32
maxz
I want to bang my head against my keyboard for putting up so long with the broken scrollbar and never trying scrolling in this way.
18:50:02
jackdaniel
if you are interested why they can (and often do) behave differently, then I will tell you
18:51:16
jackdaniel
by default panes created with make-clim-stream-pane (i.e if you put :application, then this operator is used), then the pane will have a) viewport, b) border (1px wide), c) stream pane
18:51:46
jackdaniel
scrolling changes the sheet-transformation between border and a viewport, while the transformation between the border and the stream pane remain the same
18:52:31
jackdaniel
on the other hand, if there is no border in between, then the code takes a slightly different path, because it is the stream pane transformation that changes
18:52:48
jackdaniel
of course they should behave the same for scrolling; my point is that this disrapency is the source of various inconsistencies
18:53:11
maxz
I think that 1px border might still be a problem btw. Not entirely sure whether it's that. But when setting the viewport to (0 0) by using scroll extent, the scrollbar can still be used to scroll further to the left.
18:53:45
jackdaniel
well, then perhaps that's something different. I'm leaving the office now, see you \o
18:53:51
maxz
And I think it might be exactly that 1px border. Since a black 1px border is then revealed.
19:00:45
maxz
Actually it does not keep the position. Well, it did. But I can't keep it that way, because I had nested scrollbars. And when having those it properly kept the position of both bars. When having only one, it does not.
19:29:53
jackdaniel
cmack: http://turtleware.eu/static/paste/76e181abf4ee0d6af68b4779493304be12d925f7-README.org; skip straight to "implementing the port", things earlier are explicitly about sdl2 (the rest is sdl2 specific, but descriptions should apply to any backend)
19:46:12
cmack`
ok, I'll probably have more questions :) It's already interesting to see the PROCESS-NEXT-EVENT isn't distributing the event. Still reading
19:53:41
maxz
When using SCROLLING, how would I pass initialization arguments to the scroll-bar? Just specifying the keywords as part of the options does not work. I guess using a gadget-value-changed-callback might be preferable in my case but it does not seem to be changeable after instantiation.
19:56:10
jackdaniel
maxz: probably (scrolling (:hscrollbar (make-pane …) :vscrollbar (make-pane …)))
19:57:56
maxz
Is there any easy way to look that up in similar cases? DESCRIBE did not offer any insight into those arguments.
20:20:11
maxz
Is there a similar way to specify the value-changed-callback for scroll-bar through scrolling?
20:24:21
maxz
Ah ... actually I will have to check whether the scroller-pane takes that directly as argument.
21:45:26
maxz
jackdaniel: I can't get it to work with scrolling in that way. First of all, the standard scroll bars remain unless I explicitly set :scroll-bars to nil. But then I can't get it to display a scoll-bar when specifying a panel with :hscrollbar (make-pane 'scroll-bar) (or also scroll-bar-pane), I'm not sure which one would be correct in this context.
21:57:39
maxz
I took a look at composition.lisp and the pane should be correct and passed to (make-pane 'scroller-pane) within scrolling. So I can't see what I'm doing wrong.