Hi,
while looking for the reason of the rare selection related crashes I
found something that seems like a severe bunch of bugs in the
iterator code.
It might be related to the crash, but I'm not 100% sure yet.
There is this innocent comment in front of the DeepIterator
constructor in iterator.cc:
If you want to continue using \em it, pass it->cloneIterator().
This means, that the DeepIterator constructor eats up the Iterator it
get's passed a pointer to!
The evil thing is that every …
[View More]method that passes one of it's
arguments to the DeepIterator constructor inherits this property,
e.g:
DeepIterator::createVariant() and as a consequence also:
SelectionState::switchLinkToSelection() and
SelectionState::adjustSelection()
In Iterator::scrollTo() Iterators that are used after being
passed to the DeepIterator constructor.
In SelectionState::buttonRelease() an iterator that has been passed
to switchLinkToSelection() might be used afterwards as argument to
adjustSelection().
I would propose to change the behaviour of the DeepIterator
constructor and always clone its input Iterator.
Better be safe than sorry and the fact that there is already several
bugs related to this shows, that the current behaviour - even if
it's documented - is really dangerous.
What do you think?
Cheers,
Johannes
[View Less]
Hi Enrico,
Hi Everybody,
It took some time to get back to you, but the topics raised are
non trivial. Let's start with the simpler one:
> [Keyboard shortcuts]
> > I believe one of the important things that we could support is
> > custom keyboard shortcuts in dillorc.
>
> ACK. Maybe would should go the way Mutt does: it internally
> works with commands, and keystrokes are mapped to commands.
Perfect for me.
If you can patch dillo to do that, it'd be …
[View More]great.
> [C++]
> > i. - Increase the development team by adding 6+ new developers.
> > ii.- Getting more involved with other projects.
>
> you can add me, as long as no C++ stuff is involved.
> (don't like it's overhead).
I also don't like C++ and its complexity!
FLTK2 is in C++ so we had to interface with it. The idea was to
keep C++ to a minimum set of features.
OTOH, windowing systems and widgets are quite well suited for
the object oriented approach, and in some places it gets simpler
than dealing directly with inheritance in C (as with GTK1).
> [Translations]
> I'm already working on German translation.
Are you working on a generic approach to translations or just German?
> [CSS]
> > * Planning for CSS, floating objects and TABS.
> > (this are important features to a nice browsing experience)
>
> Missing CSS is really bad.
> I'm planning to write an universal but small CSS parser
> (as an separate library).
You may give a look to RCSS by Raph Levien.
> [Dillo as a help system]
> I'd like to use Dillo for an help system and control center on an
> end-user desktop appliance. Therefore I need it to execute certain
> commands. But Dillo itself should not fork/exec itself, instead
> send the commands to some special daemon via an 9P channel.
I'd like to have Dillo as a help system in Debian!
> An simple approach could be coding an dpi which just parses the
> requested URL and sends the actual command to the exec server
> through 9P. But I have to make absolutely sure that commands
> can only be sent when coming from certain pages.
>
> How can I achieve this ?
A simple way is to isolate those "certain pages" into a fixed URL scheme
(e.g. localhost:8081/admin file:/etc/read_only_directory/) and to check that
signature from the dpi. For this to work, you have to send the "requesting URL"
to the dpi by using dpip.
> [9P]
> You might like have a look at Plan9 and how things are done there.
> We can learn really much from it :)
I gave a read to some docs. and it looks quite interesting.
> [...]
> I'd prefer a more generic approach: making everything available
> via 9P and let separate programs work on that filesystem.
> This also allows lot's other funny things, eg. an HTML external
> editor which directly operates on an document within an dillo
> viewer ;-)
The 9P way of interaction is powerful.
I like the idea of interfacing to a Javascript VM with 9P,
and reusing a proved protocol instead of having to extend/debug
dpip.
Now, being a 9P newbie, how much (in LOC or KB) does it add
to become a 9P server or client? This is my main concern.
I'd like to see a sketch of a Dillo help system design using 9P.
Currently dpid would provide a Unix socket to command Dillo, and 9P
does something quite similar but more generic. The idea of being able
to remote-control Dillo from a simple application/script with a 9P
interface is more than interesting.
For instance: Load URL, Reload, Stop, Open New window, Back, Forward,
images on/off, etc.
AFAIS, we'd need to make dillo work internally with commands, and
then exposing that interface for the external world. If the dillo help
system design looks interesting we can start from there. Obviously you
have given it some thought in your project so please share your ideas
with us.
Obviously using 9P to remote-control dillo seems like an overkill,
but when it comes to Javascript, or interfacing to external apps. as
an HTML viewer, or serving as a GUI, it looks reasonable.
Comments are welcomed.
--
Cheers
Jorge.-
[View Less]