freenode/#clim - IRC Chatlog
Search
8:55:38
scymtym
jackdaniel: we didn't finish the discussion about drag and drop translators. i would like ask about one particular thing if you have time
8:57:47
scymtym
the pointer is over a presentation and two drag and drop translators ca translate from this presentation. one is associated with the :select gesture and the other one with a button press gesture that includes a modifier
8:58:35
scymtym
when i press the modifier and start dragging, the appropriate translator is selected and used when running the :test, generating feedback, etc.
9:00:20
scymtym
but when i drag the pointer over a presentation that is valid as the "to" presentation type of both translator, it appears to be unclear the translation function of which translator is run in the end
9:01:19
scymtym
from a user perspective, this feels like explicitly initiating one command (by pressing the modifier) but then having a different command run
9:02:41
jackdaniel
I don't think that this behavior is new (but I've worked on it too long ago to claim that with certainity)
9:02:46
scymtym
this is easy to mitigate by preferring the already "active" translator when choosing the translator whose translation function should be run, but now i'm curious what the rules are
9:03:43
scymtym
i.e. why can the target presentation effectively cancel the current translator and replace it with a different one?
9:04:59
jackdaniel
when you look for translator matching the context type, then they are sorted by priority
9:05:59
jackdaniel
another is to return NIL from the test-drag-and-drop-translator, then search continues
9:07:03
jackdaniel
if no destination translator is found (or all fail on a test), the "original translator's which got us here" feedback/highlight etc are used
9:07:30
jackdaniel
(also, when there is no applicable translator we do not highlight the presentation)
9:11:38
scymtym
say all presentations are of the same type FILE. and all commands (move, copy, symlink) can be initiated by dragging a FILE onto another FILE
9:13:30
scymtym
we can use different gestures to select the initial translator, but since "from" and "to" presentation types are the same in all cases, we get a random destination translator (the static priority doesn't help either)
9:27:05
jackdaniel
I think that code is mostly fine, but we should compute translators in invoke-drag-and-drop external let*; my first thought is that we should map-applicable-translators
9:29:15
jackdaniel
as an addendum: maybe we should use *current* modifier state in find-dest-translator; but I'm not sure how that would behave. I start dragging file with a shift, then I release shift.
9:30:35
scymtym
in the example i gave, the current modifier would dictate the final translator choice
9:31:08
scymtym
i.e. while hovering over the destination you could press modifiers to select the action
9:32:08
scymtym
that sounds reasonable to me but don't understand this subsystem deeply enough to really have an opinion
9:32:41
jackdaniel
but this seems to be orthogonal with the destination-tester you mentioned you had problems with(?)
9:33:36
scymtym
only related in that it stopped me from investigating the destination-tester issue further
9:47:44
scymtym
jackdaniel: thanks. i'm making the file manager example, so i will be able to test it soon
9:47:47
jackdaniel
I may drop any minute now (and will be back around 2pm), if you could elaborate on the destination-translator issue in a meantime then I could think about it
9:48:43
scymtym
i can probably integrate that into the example - disallowing dropping file onto another (non-directory) file or something
9:49:09
jackdaniel
do you think you'll find time to look into refactor regions PR? I'm almost finished with a next batch of changes (region-intersects-region-p)
9:49:28
jackdaniel
you could make a file named "lizard.lisp" and that file can't be dropped over a trash icon ;-)
9:50:55
jackdaniel
unfortunately region refactor is an ungrateful work because there are no visible effects to it at the first glance, many places for misstep and plenty to do
9:52:23
jackdaniel
right now we *almost always* do a roundtrip to region-difference for most of things
9:53:11
jackdaniel
I got to go now, please write here in a meantime if you can recall problems with a destination-translator
11:27:58
scymtym
in this example, using the current modifier state would give the usual behavior, i.e. you would be able to choose between copy and move while already dragging
12:21:04
ralt
Hi. I'm sorry if that's a bit rude of myself to ask this, but I've been following this channel (and development of clim) for a while, and I can't bring myself to understand what I'd use McCLIM for. Could anyone shed some light on the usages you have of it?