freenode/#clim - IRC Chatlog
Search
7:45:36
loke
https://github.com/mcclim/McCLIM/blob/clipboard2/Core/clim-core/presentation-defs.lisp#L557
7:46:51
jackdaniel
as I said in the pull request comment: if there is no need to make presentation-history-* generics please don't
7:47:08
jackdaniel
and if there is such a need, all functions in a group should be generic, not only the one which you need
7:48:12
loke
Also this: https://github.com/mcclim/McCLIM/blob/clipboard2/Core/clim/input-editing-drei.lisp#L167
7:48:34
loke
jackdaniel: Yes. I'm taking that to heart, and doing more research first before proposing anything.
7:49:22
loke
I'm experimenting with implementing an alternative presentation history class altogether. That should, at least in theiory, be possible as far as I can tell.
7:51:02
jackdaniel
they won't disappear if you close it. if you keep it please add tag [draft] so nobody will merge it by accident
7:52:22
loke
Hmm... Github has support for draft PR's, but it seems as though you can't downgrade a PR to draft. Only the other way around.
8:43:12
jackdaniel
I'm going to postpone page alignment feature for much later because I'll never get out of this rabbit hole
8:57:34
loke
After some more time looking at the presentation history stuff, I still argue that the original function should be generic. But also that you are right that _all_ of the presentation history functions should be generic.
8:58:01
loke
Nisar's suggestion is somewhat orthogonal, and I don't agree with him tthat that is a valid substitute.
8:58:09
jackdaniel
given it is an internal protocol they shouldn't be anything until internal mechanisms require them to be generic
8:59:00
jackdaniel
I think that Nisar is right, history is history and it should not be changed. if you want to skip some entries in yank, then yank is the place to do it
8:59:04
loke
That said, making them generic should be harmless,and allows us to experiment with the capabilituies before exposing the API
9:00:10
loke
jackdaniel: It's not just that. Look at the existing implementation. It checks if the new object is EQL to the old one, and if so, it odesn't add it. What if you _want_ to have duplicates? Or what if you want to skip duplicates if they are EQUAL, not just EQL?
9:00:15
jackdaniel
harmless-ish; each time I find a generic function with only one method I stop and think if this may be defun
9:02:12
loke
If not, I have to remap M-n and M-p and implement my own infrastructure on top of this, but that would just mean I replicate 95% of the existing functionality.
9:03:32
loke
The problem with me doing this is that I will end up modifying the _glboal_ definition of M-p and M-n, which stops history from working in CLIM-Listener, for example.
9:05:03
jackdaniel
imagine I change it in 2 weeks to defun (forgetting about all this), first thing happening: bug report that it doesn't work for you
9:05:42
jackdaniel
either way if it is not critical to climaxima I'd save it for another time. I've spending all my free time past few days on reviewing your code, so lets get done with it first
9:06:09
jackdaniel
nb: you've removed protocols from text-selection (like selection-bind), but you didn't remove them from Null backend
9:06:40
loke
jackdaniel: Well, it is kinda critical. Because right now, if you mix commands and maxima instrcutions in the command history, the application crashes when pressing M-p because “special commands” can be handled by the interactor (complicated long story)
9:13:02
jackdaniel
I think this is the only remaining place, but I didn't investigate. they are also mentioned in developer manual
9:17:05
jackdaniel
also please remove all new commands from builtin-commands and put them directly in the example
9:17:30
jackdaniel
we may change it later, but as I've said earlier, copy shouldn't be a command but rather action
9:17:59
jackdaniel
note, that it is possible (in principle, I'm not sure if it works on McCLIM), to have menu-button (which is a gadget, not command trigger)
9:34:26
TMA
loke: there is. I think it can be done by deleting the line specifying the commit during interactive rebase
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)))