[vbox-dev] Fwd: [VirtualBox] #81: [feature-request] GuestVM addition: file drag-n-drop

Sergiy Byelozyorov rryk.ua at gmail.com
Sat Feb 28 02:10:12 PST 2009


Thank you for the introduction. No, you didn't scared me, since I was
expecting something like that. I think it will take me quite some time
to study all I need about VBox components you described before I will
be able to start working. Since I moved to my home country and I don't
have my laptop here I will start with installing required development
software first. When I will have more questions - I will ask you.

Sincerely yours,
Byelozyorov Sergiy.

On Fri, Feb 27, 2009 at 10:40 PM, Michael Thayer <Michael.Thayer at sun.com> wrote:
> Hello Sergiy,
> Sergiy Byelozyorov wrote:
>> Ticket #81 [feature-request] GuestVM addition: file drag-n-drop
> [snip]
>> I was directed here (see forwarded email or last comment). So what do
>> I do first?
> Great that you responded so fast, and thanks very much for your
> interest!  I will start by giving you a quick overview of how we
> envisaged the feature (at least in a first version which keeps things as
> simple as possible) and pointing you to the bits in the code that would
> be of interest to you.  I hope that my quick overview doesn't get too
> long :)  There are two things to implement here: dragging from host to
> guest, and from guest to host.  They will probably need to be
> implemented more or less separately.  I will start with the host to
> guest, which is probably the easiest.
> The first version of the feature should probably only support file DnD.
>  The actual file transfer from host to guest will go via a shared
> folder.  Basically, the VirtualBox application, or rather the main
> widget in it, will have to act as a drop target.  When a drag action is
> started and the cursor enters this widget, the widget should notify an
> application running in the guest.  The widget and the guest application
> will exchange any information needed about the drag and drop process,
> and the guest application will initiate a drag action of its own in the
> guest to match the host drag action.  Communication between host and
> guest should probably use the Guest Property feature of VirtualBox, at
> least in the first version of the DnD feature.
> The guest to host direction is more complicated, as the guest is not
> aware of anything "outside its window".  We thought that it could be
> implemented as follows.  When the GUI notices that the mouse cursor has
> been dragged from inside the main widget to outside, it tells the guest
> that the mouse cursor has been moved over a special drop area created by
> the guest application.  This enables the guest application to get
> information about the drag process.  Guest and host must exchange
> necessary information as they did for the other direction.
> The host part would be done in our Qt4 GUI code
> (http://www.virtualbox.org/browser/trunk/src/VBox/Frontends/VirtualBox
> in our public subversion repository).  As Qt4 is cross platform, the
> same code would work for all supported hosts (Windows, Linux, Solaris
> and Mac OS).  Unfortunately, the guest work must be done separately for
> each guest that we (or rather you) wish to support.  I'm not sure which
> systems you are familiar with (Windows, Linux/Solaris, ... OS/2 :) )
> The same code will probably work on Linux and Solaris though.  There we
> have the difficulty that since we try to use a single binary for all
> Linux systems, we can't really rely on any but the most standard guest
> libraries, like the C library and the basic X11 ones.  In our shared
> clipboard code, we used the Xt library as it is slightly (!) higher
> level than basic libx11 (see
> http://www.virtualbox.org/browser/trunk/src/VBox/Additions/x11/VBoxClient)
> and you might want to use that as a basis if you are interested in Linux
> guest stuff and if you can bear to look at that code :)  (I *will*
> rewrite it when I have a bit of free time...)  For basic examples of
> using the guest property code, you might want to look at VBoxManage
> (host side,
> http://www.virtualbox.org/browser/trunk/src/VBox/Frontends/VBoxManage)
> and VBoxControl (guest side,
> http://www.virtualbox.org/browser/trunk/src/VBox/Additions/common/VBoxControl).
>  The VBoxControl code is cross platform, at least the basic code and the
> bits that deal with guest properties.  VBoxManage is bit hard going
> because of all the COM stuff in there, but that is all over our host
> code I'm afraid...
> OK, that ended up being rather long after all...  I hope that I haven't
> scared you off with that!  I would be interested to hear what you have
> to say about this.  Unfortunately our GUI programmer has already left
> for the weekend, so he will probably not be able to comment until
> Monday.  I really hope that you will have fun with this!
> Look forward to your answer...
> Regards,
> Michael
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> http://vbox.innotek.de/mailman/listinfo/vbox-dev

More information about the vbox-dev mailing list