[vbox-dev] Drag-n-drop alive again
Michael.Thayer at Sun.COM
Wed Apr 15 12:48:30 PDT 2009
Sergiy Byelozyorov wrote:
> The idea about permanent shared folder sounds good. I have also been
> thinking about security and I think allowing virtual machine to edit
> external items is not a very good idea.
Do you mean as in letting the VM edit files on the host? I don't really
see a problem as long as the user has made the files available to the VM
(like by dropping them there). Normally we accept that using any host
service like shared folders or drag and drop will imply a certain
security risk, so we let users disable those features if needed.
> P.S. Can somebody please advice me free online guide/book about
> programming on Linux? I need basic concepts about GUI, system
> architecture, event system (e.g. how to handle drag-drop events) etc.
For the Guest Additions part, this will be a bit of a steep learning
curve if you are new to Linux programming. The problem is that we don't
want any unnecessary dependencies in the guest additions, as they should
work on more or less any Linux system, and this includes most GUI toolkits.
The basic GUI on Linux systems is provided by the X Window System or X11
(http://en.wikipedia.org/wiki/X_Window_System is a rather terse
description) which provides the basic functionality for creating windows
and drawing into them, but not much more (no widgets or controls for
example - these are normally provided by toolkit libraries which create
windows for the controls and draw them themselves). Things are further
complicated by the fact that X11 was intended to be used remotely, so
applications do all their graphics stuff by writing messages into a
network (or local) socket, while X11 itself is just a user space
application with access to the graphics device.
X11 is usually programmed on a low level using the Xlib library, which
takes care of the messaging for you. A copy of the official
documentation for Xlib can be found at http://tronche.com/gui/x/xlib/
and you can find a number of Xlib tutorials by googling.
Drag and drop was not originally part of the X protocol, and it was
added on later - see http://www.newplanetsoftware.com/xdnd/ . It is
implemented using the X selection mechanism (
http://en.wikipedia.org/wiki/X_Window_selection ), which *is* part of
the original X protocol.
As I said in a previous e-mail, on the host all this stuff is easier, as
we use Qt for all GUI stuff which lets us use (almost) the same code on
all systems we support.
More information about the vbox-dev