freenode/#clim - IRC Chatlog
Search
10:05:05
jdz
jackdaniel: I've managed to get rid of my problem with https://github.com/jdz/McCLIM/commit/cfdfd0aa5d4886c7425edd7824995715b18a83c1
11:00:53
jackdaniel
handle-repaint is called with an output record (which is a bounding-rectangle, but it is not a region) - that is one issue
11:01:09
jackdaniel
if it were a region, then 0width/0height rectangle would be +nowhere+ and it would be caught by around method
11:01:35
jackdaniel
second issue is that indeed xserver is called with too great coordinate (still investigating that)
11:02:26
jackdaniel
here comes an interesting observation why it works when the issue is ignored: during replay coordinate swizzling works just fine, but during initial draw for this particular occasion it does not (because of the former bug which doesn't trigger +nowhere+ execution path)
11:05:08
jackdaniel
nb: bounding-rectangle / region dychotomy is problematic and mcclim does a poor job with distinction (preasumbly due to some inconsistencies in cilm spec)
11:08:32
jackdaniel
(clim:make-bounding-rectangle 0 0 0 0) ; -> #<CLIM:STANDARD-BOUNDING-RECTANGLE X 0:0 Y 0:0>
11:08:35
jackdaniel
(clim:make-rectangle* 0 0 0 0) ; -> #<CLIM-INTERNALS::NOWHERE-REGION {1003455C93}>
11:10:34
jackdaniel
note, that bounding rectangle can't be a nowhere region, because it is meant to preserve the position
11:35:34
jackdaniel
question: what should return: (region-equal +nowhere+ (make-bounding-rectangle 10 10 10 10)) ;?
11:39:06
jackdaniel
answering myself: nil, bounding-rectangles arguably are not a subject of dimensionality rule and nowhere is not a point
12:14:15
jackdaniel
jdz: I've submitted a pull request: https://github.com/McCLIM/McCLIM/pull/741 based on your analysis (and some of mine)
13:10:49
jdz
jackdaniel: Nice! The way I worked in my investigation was inserting a break in render-composite-glyphs (xrender.lisp extension in CLX) when DEST-Y was negative; then I looked at the backtrace to see where the negative value originated. That's how I ended up at REPAINT-SHEET.
13:12:07
jdz
So I suspect that EFFECTIVE-NATIVE-REGION local function, or UNTRANSFORM-REGION was the culprit, but to test my suspicion I added a test for empty region.
13:13:01
jdz
Right, that was my idea too. I was just trying to check if I'm on the right track (and it seems I was).
13:14:04
loke
I think with the freetype renderer, that error wouldn't be seen, since it always filters out illegal coordinates.
13:15:25
jdz
loke: I don't quite agree, because I triggered the error first was when I was trying (successfully) to render glyphs from icon fonts.
13:16:40
loke
I think it was only needed during a brief period of time when the coordinate swizzling was broken.
13:16:48
jdz
I have some changes to make everything nice on my normal (i.e., not low) resolution screens :)
13:18:36
jdz
Everything is working just fine for me with this change: (defmethod freetype-font/size ((font freetype-font)) (* 2 (slot-value font 'size)))
13:52:35
jackdaniel
as you can see at the bottom, there is some interpretation conflict associated with it. I'd appreciate comments which either support or debunk my opinion.
14:00:21
loke
the spec (formatting-table) says :PIXEL, not :PIXELS. But am I checking the wrong url?
14:53:42
loke
jackdaniel: I've been trying to add a custom command-table so that I can override M-p and M-n for climaxima's interactor only... I can't figure out a good way to do that.
14:54:08
loke
The problem _seems_ to be that the command table used by the interactor is hardcoded. At least I can't see a way to override it.
14:54:56
jackdaniel
how could it be hardcoded given adding commands to frame make it have more commands?
14:58:14
loke
It happens here: https://github.com/mcclim/McCLIM/blob/clipboard2/Core/clim/input-editing-drei.lisp#L137
14:58:37
jackdaniel
I'm looking at input-editing-drei right now (in context of what jdz said) and I conclude it is a mess
14:59:08
loke
As you can see, there is a 'drei-command-table in the :initform, and there is no way to pass an alternative initarg.
14:59:49
loke
Yes. But as you can see from the previous link I sent, it's called in a context where it's impossible to pass assidtional arguments.
15:00:33
loke
The make-instance is called deep inside the bowels of ACCEPT-1, so it's not viable to override it as best as I can tell
15:02:42
loke
No, it doesn't seem possible. The call comes from WITH-INPUT-EDITING, which is called by ACCEPT-1.
15:05:50
loke
The reason I started working on this now is that I integrated CLIM-Listener in Climaxima. If I mess with the history stuff in any way, the CLIM-Listener history gets screwed up.
15:06:50
loke
Yeah. Right now I just observe the need for some improvement, and some rough requirements.
15:06:55
jackdaniel
they are like frameworks, you need to have a deep understanding of such components to use them efficiently (and what was not planned by said framework designer is usually close to impossible)
15:08:04
jackdaniel
or you need to hack more general abstraction (as you propose) to have a workaround for such components
15:08:07
loke
Now, I could completely override the existing history stuff and just build my own, if there was a way to have a custom command table for the interactor. Being able to specify a command table as an argument to ACCEPT would do that.
15:40:37
jackdaniel
my perspective on mcclim is that it already accumulated unbearable number of hacks and its only way to become maintainable is to remove them (not add new); I'm 100% positive that each of these hacks resolved someone's problem at some point of time, but right now we have a spaghetti code due to that
15:41:32
jackdaniel
so for instance locally correct temporal stream position change in table-formatting causes accepting-values breakage
17:07:40
jackdaniel
jdz: so here is what's going on: when we have typeout and "things are read" we clean it. that means in particular, that we we try to repaint cleaned sequence-output-record which, when there are no children, is 0:0,0:0
17:08:18
jackdaniel
that means in particular, that when coordinate swizzling took action, then 0:0,0:0 in mirror coordinates is way *before* current mirror