VirtualBox

Changeset 42261 in vbox


Ignore:
Timestamp:
Jul 20, 2012 1:27:47 PM (12 years ago)
Author:
vboxsync
Message:

enabled shared clipboard support for Linux hosts (guest=>host only)

Location:
trunk
Files:
10 added
50 edited

Legend:

Unmodified
Added
Removed
  • trunk/Config.kmk

    r42259 r42261  
    571571# Enable S3 support (requires libcurl)
    572572VBOX_WITH_S3 = 1
     573# Enable Host=>Guest Drag'n'Drop
     574if1of ($(KBUILD_TARGET), linux)
     575 VBOX_WITH_DRAG_AND_DROP = 1
     576 # Guest=>Host drag'n'drop doesn't work
     577 #VBOX_WITH_DRAG_AND_DROP_GH = 1
     578endif
    573579## @}
    574580
  • trunk/include/VBox/VBoxGuestLib.h

    r41852 r42261  
    685685VBGLR3DECL(int)     VbglR3DnDHGAcknowledgeOperation(uint32_t uAction);
    686686VBGLR3DECL(int)     VbglR3DnDHGRequestData(const char* pcszFormat);
     687#  ifdef VBOX_WITH_DRAG_AND_DROP_GH
    687688VBGLR3DECL(int)     VbglR3DnDGHAcknowledgePending(uint32_t uDefAction, uint32_t uAllActions, const char* pcszFormat);
    688689VBGLR3DECL(int)     VbglR3DnDGHSendData(void *pvData, uint32_t cbData);
    689690VBGLR3DECL(int)     VbglR3DnDGHErrorEvent(int rcOp);
     691#  endif /* VBOX_WITH_DRAG_AND_DROP_GH */
    690692/** @} */
    691693# endif /* VBOX_WITH_DRAG_AND_DROP */
  • trunk/include/VBox/settings.h

    r42179 r42261  
    799799    SharedFoldersList   llSharedFolders;
    800800    ClipboardMode_T     clipboardMode;
     801    DragAndDropMode_T   dragAndDropMode;
    801802
    802803    uint32_t            ulMemoryBalloonSize;
  • trunk/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk

    r41852 r42261  
    5353VBoxGuestR0Lib_TEMPLATE     = VBOXGUESTR0LIB
    5454VBoxGuestR0Lib_DEFS         = VBOX_WITH_HGCM \
    55         $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,)
     55        $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
     56        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
    5657VBoxGuestR0Lib_INCS         = \
    5758        $(VBoxGuestR0Lib_0_OUTDIR)
     
    7374VBoxGuestR0LibBase_TEMPLATE = VBOXGUESTR0LIB
    7475VBoxGuestR0LibBase_DEFS     = VBOX_WITH_HGCM VBGL_VBOXGUEST \
    75         $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,)
     76        $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
     77        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
    7678VBoxGuestR0LibBase_INCS     = $(VBoxGuestR0Lib_INCS)
    7779VBoxGuestR0LibBase_INCS.win = $(VBoxGuestR0Lib_INCS.win)
     
    132134ifdef VBOX_WITH_DRAG_AND_DROP
    133135 VBoxGuestR3Lib_DEFS      += \
    134     VBOX_WITH_DRAG_AND_DROP
     136    VBOX_WITH_DRAG_AND_DROP \
     137    $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
    135138 VBoxGuestR3Lib_SOURCES   += \
    136139        VBoxGuestR3LibDragAndDrop.cpp
     
    173176        RTMEM_NO_WRAP_TO_EF_APIS \
    174177        $(if $(VBOX_WITH_GUEST_PROPS),VBOX_WITH_GUEST_PROPS,) \
    175         $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,)
     178        $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
     179        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
    176180VBoxGuestR3LibXFree86_SOURCES  = \
    177181        VBoxGuestR3Lib.cpp \
  • trunk/src/VBox/Additions/x11/Installer/98vboxadd-xclient

    r38194 r42261  
    55
    66#
    7 # Copyright (C) 2007-2011 Oracle Corporation
     7# Copyright (C) 2007-2012 Oracle Corporation
    88#
    99# This file is part of VirtualBox Open Source Edition (OSE), as
     
    4949test -z "$no_display" &&
    5050    /usr/bin/VBoxClient --seamless
     51test -z "$no_display" &&
     52    /usr/bin/VBoxClient --draganddrop
  • trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk

    r42239 r42261  
    6969endif
    7070ifdef VBOX_WITH_DRAG_AND_DROP
    71  VBoxClient_DEFS += VBOX_WITH_DRAG_AND_DROP
     71 VBoxClient_DEFS += \
     72        VBOX_WITH_DRAG_AND_DROP \
     73        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,)
    7274 VBoxClient_SOURCES += \
    7375        draganddrop.cpp
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r42248 r42261  
    55
    66/*
    7  * Copyright (C) 2006-2011 Oracle Corporation
     7 * Copyright (C) 2006-2012 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    189189            {
    190190                CHECK_ERROR_BREAK(sessionMachine, COMSETTER(ClipboardMode)(mode));
     191            }
     192        }
     193        else if (!strcmp(a->argv[1], "draganddrop"))
     194        {
     195            if (a->argc <= 1 + 1)
     196            {
     197                errorArgument("Missing argument to '%s'. Expected drag'n'drop mode.", a->argv[1]);
     198                rc = E_FAIL;
     199                break;
     200            }
     201
     202            DragAndDropMode_T mode;
     203            if (!strcmp(a->argv[2], "disabled"))
     204                mode = DragAndDropMode_Disabled;
     205            else if (!strcmp(a->argv[2], "hosttoguest"))
     206                mode = DragAndDropMode_HostToGuest;
     207            else if (!strcmp(a->argv[2], "guesttohost"))
     208                mode = DragAndDropMode_GuestToHost;
     209            else if (!strcmp(a->argv[2], "bidirectional"))
     210                mode = DragAndDropMode_Bidirectional;
     211            else
     212            {
     213                errorArgument("Invalid '%s' argument '%s'.", a->argv[1], a->argv[2]);
     214                rc = E_FAIL;
     215            }
     216            if (SUCCEEDED(rc))
     217            {
     218                CHECK_ERROR_BREAK(sessionMachine, COMSETTER(DragAndDropMode)(mode));
    191219            }
    192220        }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r42248 r42261  
    305305                     "                            [--audiocontroller ac97|hda|sb16]\n"
    306306                     "                            [--clipboard disabled|hosttoguest|guesttohost|\n"
    307                      "                                         bidirectional]\n");
     307                     "                                         bidirectional]\n"
     308                     "                            [--draganddrop disabled|hosttoguest\n");
    308309        RTStrmPrintf(pStrm,
    309310                     "                            [--vrde on|off]\n"
     
    429430                     "                            clipboard disabled|hosttoguest|guesttohost|\n"
    430431                     "                                         bidirectional]\n"
     432                     "                            draganddrop disabled|hosttoguest]\n"
    431433                     "                            vrde on|off |\n"
    432434                     "                            vrdeport <port> |\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp

    r42129 r42261  
    15131513    }
    15141514
     1515    /* Drag'n'drop */
     1516    {
     1517        const char *psz = "Unknown";
     1518        DragAndDropMode_T enmMode;
     1519        rc = machine->COMGETTER(DragAndDropMode)(&enmMode);
     1520        switch (enmMode)
     1521        {
     1522            case DragAndDropMode_Disabled:
     1523                if (details == VMINFO_MACHINEREADABLE)
     1524                    psz = "disabled";
     1525                else
     1526                    psz = "disabled";
     1527                break;
     1528            case DragAndDropMode_HostToGuest:
     1529                if (details == VMINFO_MACHINEREADABLE)
     1530                    psz = "hosttoguest";
     1531                else
     1532                    psz = "HostToGuest";
     1533                break;
     1534            case DragAndDropMode_GuestToHost:
     1535                if (details == VMINFO_MACHINEREADABLE)
     1536                    psz = "guesttohost";
     1537                else
     1538                    psz = "GuestToHost";
     1539                break;
     1540            case DragAndDropMode_Bidirectional:
     1541                if (details == VMINFO_MACHINEREADABLE)
     1542                    psz = "bidirectional";
     1543                else
     1544                    psz = "Bidirectional";
     1545                break;
     1546            default:
     1547                if (details == VMINFO_MACHINEREADABLE)
     1548                    psz = "unknown";
     1549                break;
     1550        }
     1551        if (details == VMINFO_MACHINEREADABLE)
     1552            RTPrintf("draganddrop=\"%s\"\n", psz);
     1553        else
     1554            RTPrintf("Drag'n'drop Mode:  %s\n", psz);
     1555    }
     1556
    15151557    if (console)
    15161558    {
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r42176 r42261  
    140140    MODIFYVM_AUDIO,
    141141    MODIFYVM_CLIPBOARD,
     142    MODIFYVM_DRAGANDDROP,
    142143    MODIFYVM_VRDPPORT,                /* VRDE: deprecated */
    143144    MODIFYVM_VRDPADDRESS,             /* VRDE: deprecated */
     
    286287    { "--audio",                    MODIFYVM_AUDIO,                     RTGETOPT_REQ_STRING },
    287288    { "--clipboard",                MODIFYVM_CLIPBOARD,                 RTGETOPT_REQ_STRING },
     289    { "--draganddrop",              MODIFYVM_DRAGANDDROP,               RTGETOPT_REQ_STRING },
    288290    { "--vrdpport",                 MODIFYVM_VRDPPORT,                  RTGETOPT_REQ_STRING },     /* deprecated */
    289291    { "--vrdpaddress",              MODIFYVM_VRDPADDRESS,               RTGETOPT_REQ_STRING },     /* deprecated */
     
    20022004            }
    20032005
     2006            case MODIFYVM_DRAGANDDROP:
     2007            {
     2008                DragAndDropMode_T mode;
     2009                if (!strcmp(ValueUnion.psz, "disabled"))
     2010                    mode = DragAndDropMode_Disabled;
     2011                else if (!strcmp(ValueUnion.psz, "hosttoguest"))
     2012                    mode = DragAndDropMode_HostToGuest;
     2013                else if (!strcmp(ValueUnion.psz, "guesttohost"))
     2014                    mode = DragAndDropMode_GuestToHost;
     2015                else if (!strcmp(ValueUnion.psz, "bidirectional"))
     2016                    mode = DragAndDropMode_Bidirectional;
     2017                else
     2018                {
     2019                    errorArgument("Invalid --draganddrop argument '%s'", ValueUnion.psz);
     2020                    rc = E_FAIL;
     2021                }
     2022                if (SUCCEEDED(rc))
     2023                {
     2024                    CHECK_ERROR(machine, COMSETTER(DragAndDropMode)(mode));
     2025                }
     2026                break;
     2027            }
     2028
    20042029            case MODIFYVM_VRDE_EXTPACK:
    20052030            {
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r42220 r42261  
    112112        $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI) \
    113113        $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP) \
     114        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH) \
    114115        $(if $(VBOX_WITH_CRHGSMI),VBOX_WITH_CRHGSMI) \
    115116        $(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO) \
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMInformationDlg.cpp

    r41927 r42261  
    476476            resolution += QString ("x%1").arg (bpp);
    477477
    478         QString mode = gpConverter->toString(m.GetClipboardMode());
    479 
     478        QString clipboardMode = gpConverter->toString(m.GetClipboardMode());
     479        QString dragAndDropMode = gpConverter->toString(m.GetDragAndDropMode());
    480480
    481481        CMachineDebugger debugger = console.GetDebugger();
     
    518518        result += hdrRow.arg (":/state_running_16px.png").arg (tr ("Runtime Attributes"));
    519519        result += formatValue (tr ("Screen Resolution"), resolution, maxLength);
    520         result += formatValue (tr ("Clipboard Mode"), mode, maxLength);
     520        result += formatValue (tr ("Clipboard Mode"), clipboardMode, maxLength);
     521        result += formatValue (tr ("Drag'n'Drop Mode"), dragAndDropMode, maxLength);
    521522        result += formatValue (VBoxGlobal::tr ("VT-x/AMD-V", "details report"), virtualization, maxLength);
    522523        result += formatValue (VBoxGlobal::tr ("Nested Paging", "details report"), nested, maxLength);
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h

    r41850 r42261  
    5555template<> bool canConvert<KDeviceType>();
    5656template<> bool canConvert<KClipboardMode>();
     57template<> bool canConvert<KDragAndDropMode>();
    5758template<> bool canConvert<KMediumType>();
    5859template<> bool canConvert<KMediumVariant>();
     
    8283template<> QString toString(const KDeviceType &type);
    8384template<> QString toString(const KClipboardMode &mode);
     85template<> QString toString(const KDragAndDropMode &mode);
    8486template<> QString toString(const KMediumType &type);
    8587template<> QString toString(const KMediumVariant &variant);
  • trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp

    r41888 r42261  
    3434template<> bool canConvert<KDeviceType>() { return true; }
    3535template<> bool canConvert<KClipboardMode>() { return true; }
     36template<> bool canConvert<KDragAndDropMode>() { return true; }
    3637template<> bool canConvert<KMediumType>() { return true; }
    3738template<> bool canConvert<KMediumVariant>() { return true; }
     
    200201}
    201202
     203/* QString <= KDragAndDropMode: */
     204template<> QString toString(const KDragAndDropMode &mode)
     205{
     206    switch (mode)
     207    {
     208        case KDragAndDropMode_Disabled:      return QApplication::translate("VBoxGlobal", "Disabled", "DragAndDropType");
     209        case KDragAndDropMode_HostToGuest:   return QApplication::translate("VBoxGlobal", "Host To Guest", "DragAndDropType");
     210        case KDragAndDropMode_GuestToHost:   return QApplication::translate("VBoxGlobal", "Guest To Host", "DragAndDropType");
     211        case KDragAndDropMode_Bidirectional: return QApplication::translate("VBoxGlobal", "Bidirectional", "DragAndDropType");
     212        default: AssertMsgFailed(("No text for %d", mode)); break;
     213    }
     214    return QString();
     215}
     216
    202217/* QString <= KMediumType: */
    203218template<> QString toString(const KMediumType &type)
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIListView.cpp

    r41689 r42261  
    77
    88/*
    9  * Copyright (C) 2006-2008 Oracle Corporation
     9 * Copyright (C) 2006-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    9999        aPainter->drawLine (r.left(), r.top() - 1, r.right(), r.top() - 1);
    100100        aPainter->fillRect (r, linearGrad);
    101     }else
     101    }
     102    else
    102103    {
    103104        /* Color for items and no focus on the application at all */
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMessageBox.cpp

    r41689 r42261  
    77
    88/*
    9  * Copyright (C) 2006-2009 Oracle Corporation
     9 * Copyright (C) 2006-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    350350        int size = style()->pixelMetric (QStyle::PM_MessageBoxIconSize, 0, this);
    351351        return icon.pixmap (size, size);
    352     }else
     352    }
     353    else
    353354        return QPixmap();
    354355}
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QISplitter.cpp

    r30868 r42261  
    77
    88/*
    9  * Copyright (C) 2009-2010 Oracle Corporation
     9 * Copyright (C) 2009-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    101101            linearGrad.setColorAt(1, gradientStop);
    102102            painter.fillRect(QRect(QPoint(0,1), size() - QSize(0, 2)), QBrush(linearGrad));
    103         }else
     103        }
     104        else
    104105        {
    105106            painter.setPen(topColor);
     
    248249        return new QSplitterHandle(orientation(), this);
    249250#endif /* RT_OS_DARWIN */
    250     }else
     251    }
     252    else
    251253        return new QIShadeSplitterHandle(orientation(), this);
    252254}
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIStateIndicator.cpp

    r33540 r42261  
    77
    88/*
    9  * Copyright (C) 2006-2007 Oracle Corporation
     9 * Copyright (C) 2006-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    137137        else
    138138            QFrame::mousePressEvent (aEv);
    139     }else
     139    }
     140    else
    140141        QFrame::mousePressEvent (aEv);
    141142}
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp

    r41833 r42261  
    77
    88/*
    9  * Copyright (C) 2006-2011 Oracle Corporation
     9 * Copyright (C) 2006-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    23652365                Error,
    23662366                tr("Failed to open appliance."));
    2367     }else
     2367    }
     2368    else
    23682369    {
    23692370        /* Preserve the current error info before calling the object again */
     
    24402441                Error,
    24412442                tr("Failed to create appliance."));
    2442     }else
     2443    }
     2444    else
    24432445    {
    24442446        /* Preserve the current error info before calling the object again */
     
    24622464                Error,
    24632465                tr("Failed to create an appliance."));
    2464     }else
     2466    }
     2467    else
    24652468    {
    24662469        message(pParent ? pParent : mainWindowShown(),
  • trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/UIWindowMenuManager.cpp

    r34401 r42261  
    77
    88/*
    9  * Copyright (C) 2010 Oracle Corporation
     9 * Copyright (C) 2010-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    108108            if (m_regWindows.contains(pActive->windowTitle()))
    109109                m_regWindows[pActive->windowTitle()]->setChecked(true);
    110         }else
     110        }
     111        else
    111112        {
    112113            if (QAction *pChecked = m_pGroup->checkedAction())
  • trunk/src/VBox/Frontends/VirtualBox/src/platform/darwin/VBoxUtils-darwin.cpp

    r36534 r42261  
    55
    66/*
    7  * Copyright (C) 2006-2010 Oracle Corporation
     7 * Copyright (C) 2006-2012 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    531531                break;
    532532            strTarget = QString::fromUtf8(pszPath);
    533         }else
     533        }
     534        else
    534535            strTarget = strFile;
    535536    }while(0);
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp

    r41689 r42261  
    824824
    825825#ifdef VBOX_WITH_DRAG_AND_DROP
     826# ifdef VBOX_WITH_DRAG_AND_DROP_GH
    826827            if (   cpnt.x() < 0
    827828                || cpnt.x() > iCw - 1
     
    836837                }
    837838            }
     839# endif
    838840#endif /* VBOX_WITH_DRAG_AND_DROP */
    839841
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMListView.cpp

    r41689 r42261  
    529529                pEvent->accept();
    530530            }
    531         }else if (   VBoxGlobal::hasAllowedExtension(file, OVFFileExts)
     531        }
     532        else if (   VBoxGlobal::hasAllowedExtension(file, OVFFileExts)
    532533                  && pEvent->possibleActions().testFlag(Qt::CopyAction))
    533534        {
    534535            pEvent->setDropAction(Qt::CopyAction);
    535536            pEvent->accept();
    536         }else if (   VBoxGlobal::hasAllowedExtension(file, VBoxExtPackFileExts)
     537        }
     538        else if (   VBoxGlobal::hasAllowedExtension(file, VBoxExtPackFileExts)
    537539                  && pEvent->possibleActions().testFlag(Qt::CopyAction))
    538540        {
     
    934936                QFontMetrics fm(fontMetric(aIndex, UIVMItemModel::SnapShotFontRole));
    935937                return QRect(QPoint(0, 0), fm.size(0, QString("(%1)").arg(text)));
    936             }else
     938            }
     939            else
    937940                return QRect();
    938941            break;
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/VBoxSettingsSelector.cpp

    r37610 r42261  
    77
    88/*
    9  * Copyright (C) 2008 Oracle Corporation
     9 * Copyright (C) 2008-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    438438        item->setTabWidget (tabWidget);
    439439        result = tabWidget;
    440     }else
     440    }
     441    else
    441442    {
    442443        SelectorActionItem *parent = findActionItem (aParentId);
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp

    r41819 r42261  
    77
    88/*
    9  * Copyright (C) 2006-2011 Oracle Corporation
     9 * Copyright (C) 2006-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    4343    mCbClipboard->addItem (""); /* KClipboardMode_GuestToHost */
    4444    mCbClipboard->addItem (""); /* KClipboardMode_Bidirectional */
     45
     46    /* Drag'n'drop mode */
     47    mCbDragAndDrop->addItem (""); /* KDragAndDropMode_Disabled */
     48    mCbDragAndDrop->addItem (""); /* KDragAndDropMode_HostToGuest */
     49    mCbDragAndDrop->addItem (""); /* KDragAndDropMode_GuestToHost */
     50    mCbDragAndDrop->addItem (""); /* KDragAndDropMode_Bidirectional */
    4551
    4652#ifdef Q_WS_MAC
     
    99105    generalData.m_strSnapshotsHomeDir = QFileInfo(m_machine.GetSettingsFilePath()).absolutePath();
    100106    generalData.m_clipboardMode = m_machine.GetClipboardMode();
     107    generalData.m_dragAndDropMode = m_machine.GetDragAndDropMode();
    101108    generalData.m_strDescription = m_machine.GetDescription();
    102109
     
    124131    mPsSnapshot->setHomeDir(generalData.m_strSnapshotsHomeDir);
    125132    mCbClipboard->setCurrentIndex(generalData.m_clipboardMode);
     133    mCbDragAndDrop->setCurrentIndex(generalData.m_dragAndDropMode);
    126134    mTeDescription->setPlainText(generalData.m_strDescription);
    127135
     
    149157    generalData.m_strSnapshotsFolder = mPsSnapshot->path();
    150158    generalData.m_clipboardMode = (KClipboardMode)mCbClipboard->currentIndex();
     159    generalData.m_dragAndDropMode = (KDragAndDropMode)mCbDragAndDrop->currentIndex();
    151160    generalData.m_strDescription = mTeDescription->toPlainText().isEmpty() ?
    152161                                   QString::null : mTeDescription->toPlainText();
     
    174183            /* Advanced tab: */
    175184            m_machine.SetClipboardMode(generalData.m_clipboardMode);
     185            m_machine.SetDragAndDropMode(generalData.m_dragAndDropMode);
    176186            m_machine.SetExtraData(GUI_SaveMountedAtRuntime, generalData.m_fSaveMountedAtRuntime ? "yes" : "no");
    177187            m_machine.SetExtraData(GUI_ShowMiniToolBar, generalData.m_fShowMiniToolBar ? "yes" : "no");
     
    221231    setTabOrder (m_pNameAndSystemEditor, mPsSnapshot);
    222232    setTabOrder (mPsSnapshot, mCbClipboard);
    223     setTabOrder (mCbClipboard, mCbSaveMounted);
     233    setTabOrder (mCbClipboard, mCbDragAndDrop);
     234    setTabOrder (mCbDragAndDrop, mCbSaveMounted);
    224235    setTabOrder (mCbSaveMounted, mCbShowToolBar);
    225236    setTabOrder (mCbShowToolBar, mCbToolBarAlignment);
     
    245256    mCbClipboard->setItemText (2, gpConverter->toString (KClipboardMode_GuestToHost));
    246257    mCbClipboard->setItemText (3, gpConverter->toString (KClipboardMode_Bidirectional));
     258
     259    /* Drag'n'drop mode */
     260    mCbDragAndDrop->setItemText (0, gpConverter->toString (KDragAndDropMode_Disabled));
     261    mCbDragAndDrop->setItemText (1, gpConverter->toString (KDragAndDropMode_HostToGuest));
     262    mCbDragAndDrop->setItemText (2, gpConverter->toString (KDragAndDropMode_GuestToHost));
     263    mCbDragAndDrop->setItemText (3, gpConverter->toString (KDragAndDropMode_Bidirectional));
    247264}
    248265
     
    256273    mLbClipboard->setEnabled(isMachineInValidMode());
    257274    mCbClipboard->setEnabled(isMachineInValidMode());
     275    mLbDragAndDrop->setEnabled(isMachineInValidMode());
     276    mCbDragAndDrop->setEnabled(isMachineInValidMode());
    258277    mLbMedia->setEnabled(isMachineInValidMode());
    259278    mCbSaveMounted->setEnabled(isMachineInValidMode());
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.h

    r41587 r42261  
    66
    77/*
    8  * Copyright (C) 2006-2011 Oracle Corporation
     8 * Copyright (C) 2006-2012 Oracle Corporation
    99 *
    1010 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    3737        , m_strSnapshotsHomeDir(QString())
    3838        , m_clipboardMode(KClipboardMode_Disabled)
     39        , m_dragAndDropMode(KDragAndDropMode_Disabled)
    3940        , m_strDescription(QString()) {}
    4041    /* Functions: */
     
    4950               (m_strSnapshotsHomeDir == other.m_strSnapshotsHomeDir) &&
    5051               (m_clipboardMode == other.m_clipboardMode) &&
     52               (m_dragAndDropMode == other.m_dragAndDropMode) &&
    5153               (m_strDescription == other.m_strDescription);
    5254    }
     
    6365    QString m_strSnapshotsHomeDir;
    6466    KClipboardMode m_clipboardMode;
     67    KDragAndDropMode m_dragAndDropMode;
    6568    QString m_strDescription;
    6669};
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.ui

    r41387 r42261  
    33 VBox frontends: Qt4 GUI ("VirtualBox"):
    44
    5      Copyright (C) 2008 Oracle Corporation
     5     Copyright (C) 2008-2012 Oracle Corporation
    66
    77     This file is part of VirtualBox Open Source Edition (OSE), as
     
    132132          </item>
    133133          <item row="2" column="0" >
     134           <widget class="QLabel" name="mLbDragAndDrop" >
     135            <property name="text" >
     136             <string>&amp;Drag'n'Drop:</string>
     137            </property>
     138            <property name="alignment" >
     139             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     140            </property>
     141            <property name="buddy" >
     142             <cstring>mCbDragAndDrop</cstring>
     143            </property>
     144           </widget>
     145          </item>
     146          <item row="2" column="1" >
     147           <widget class="QComboBox" name="mCbDragAndDrop" >
     148            <property name="sizePolicy" >
     149             <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
     150              <horstretch>0</horstretch>
     151              <verstretch>0</verstretch>
     152             </sizepolicy>
     153            </property>
     154            <property name="whatsThis" >
     155                <string>Selects which data will be copied between the guest and the host OS by drag'n'drop. This feature requires Guest Additions to be installed in the guest OS.</string>
     156            </property>
     157           </widget>
     158          </item>
     159          <item row="2" column="2" >
     160           <spacer name="mSpHor2" >
     161            <property name="orientation" >
     162             <enum>Qt::Horizontal</enum>
     163            </property>
     164            <property name="sizeHint" stdset="0" >
     165             <size>
     166              <width>0</width>
     167              <height>0</height>
     168             </size>
     169            </property>
     170           </spacer>
     171          </item>
     172          <item row="3" column="0" >
    134173           <widget class="QLabel" name="mLbMedia" >
    135174            <property name="text" >
     
    141180           </widget>
    142181          </item>
    143           <item row="2" column="1" >
     182          <item row="3" column="1" >
    144183           <widget class="QCheckBox" name="mCbSaveMounted" >
    145184            <property name="sizePolicy" >
     
    160199           </widget>
    161200          </item>
    162           <item row="3" column="0" >
     201          <item row="4" column="0" >
    163202           <widget class="QLabel" name="mLbToolBar" >
    164203            <property name="text" >
     
    170209           </widget>
    171210          </item>
    172           <item row="3" column="1" >
     211          <item row="4" column="1" >
    173212           <widget class="QCheckBox" name="mCbShowToolBar" >
    174213            <property name="sizePolicy" >
     
    189228           </widget>
    190229          </item>
    191           <item row="4" column="1" >
     230          <item row="5" column="1" >
    192231           <widget class="QCheckBox" name="mCbToolBarAlignment" >
    193232            <property name="sizePolicy" >
     
    212251       </item>
    213252       <item>
    214         <spacer name="mSpVer2" >
     253        <spacer name="mSpVer3" >
    215254         <property name="orientation" >
    216255          <enum>Qt::Vertical</enum>
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIProgressDialog.cpp

    r41587 r42261  
    77
    88/*
    9  * Copyright (C) 2006-2010 Oracle Corporation
     9 * Copyright (C) 2006-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    277277        }
    278278        m_progressBar->setValue(m_progress.GetPercent());
    279     }else
     279    }
     280    else
    280281        m_pEtaLbl->setText(m_strCancel);
    281282}
  • trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxFilePathSelectorWidget.cpp

    r41370 r42261  
    77
    88/*
    9  * Copyright (C) 2008 Oracle Corporation
     9 * Copyright (C) 2008-2012 Oracle Corporation
    1010 *
    1111 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    131131        /* Installing necessary event filters */
    132132        lineEdit()->installEventFilter (this);
    133     }else
     133    }
     134    else
    134135    {
    135136        if (lineEdit())
  • trunk/src/VBox/Installer/linux/Makefile.kmk

    r42121 r42261  
    125125        $(if $(VBOX_WITH_GUEST_PROPS),VBoxGuestPropSvc.so,) \
    126126        $(if $(VBOX_WITH_GUEST_CONTROL),VBoxGuestControlSvc.so,) \
     127        $(if $(VBOX_WITH_DRAG_AND_DROP),VBoxDragAndDropSvc.so,) \
    127128        $(if $(VBOX_WITH_MAIN), \
    128129                VBoxAutostart \
  • trunk/src/VBox/Installer/linux/debian/lintian-override.in

    r36914 r42261  
    1313%VERPKG%: shlib-with-non-pic-code usr/lib/virtualbox/VBoxGuestPropSvc.so
    1414%VERPKG%: shlib-with-non-pic-code usr/lib/virtualbox/VBoxGuestControlSvc.so
     15%VERPKG%: shlib-with-non-pic-code usr/lib/virtualbox/VBoxDragAndDropSvc.so
    1516%VERPKG%: shlib-with-non-pic-code usr/lib/virtualbox/VBoxNetDHCP.so
    1617%VERPKG%: shlib-with-non-pic-code usr/lib/virtualbox/VBoxVRDP.so
     
    6364%VERPKG%: no-shlibs-control-file usr/lib/virtualbox/VBoxGuestPropSvc.so
    6465%VERPKG%: no-shlibs-control-file usr/lib/virtualbox/VBoxGuestControlSvc.so
     66%VERPKG%: no-shlibs-control-file usr/lib/virtualbox/VBoxDragAndDropSvc.so
    6567%VERPKG%: no-shlibs-control-file usr/lib/virtualbox/VBoxVRDP.so
    6668%VERPKG%: no-shlibs-control-file usr/lib/virtualbox/VBoxAuth.so
     
    9193%VERPKG%: binary-or-shlib-defines-rpath ./usr/lib/virtualbox/VBoxSharedCrOpenGL.so /usr/lib/virtualbox
    9294%VERPKG%: binary-or-shlib-defines-rpath ./usr/lib/virtualbox/VBoxSharedFolders.so /usr/lib/virtualbox
     95%VERPKG%: binary-or-shlib-defines-rpath ./usr/lib/virtualbox/VBoxDragAndDropSvc.so /usr/lib/virtualbox
    9396%VERPKG%: binary-or-shlib-defines-rpath ./usr/lib/virtualbox/VBoxTestOGL /usr/lib/virtualbox
    9497%VERPKG%: binary-or-shlib-defines-rpath ./usr/lib/virtualbox/VBoxVMM.so /usr/lib/virtualbox
  • trunk/src/VBox/Installer/linux/deffiles

    r41586 r42261  
    55
    66#
    7 # Copyright (C) 2007-2010 Oracle Corporation
     7# Copyright (C) 2007-2012 Oracle Corporation
    88#
    99# This file is part of VirtualBox Open Source Edition (OSE), as
     
    5050    VBoxGuestPropSvc.so \
    5151    VBoxGuestControlSvc.so \
     52    VBoxDragAndDropSvc.so \
    5253    VBoxAuth.so \
    5354    VBoxAuthSimple.so \
  • trunk/src/VBox/Main/Makefile.kmk

    r42160 r42261  
    5959        $(if $(VBOX_WITH_COPYTOGUEST),VBOX_WITH_COPYTOGUEST,) \
    6060        $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
     61        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
    6162        $(if $(VBOX_WITH_CROGL),VBOX_WITH_CROGL,) \
    6263        $(if $(VBOX_WITH_GUEST_PROPS),VBOX_WITH_GUEST_PROPS,) \
     
    537538        $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \
    538539        $(if $(VBOX_WITH_DRAG_AND_DROP),VBOX_WITH_DRAG_AND_DROP,) \
     540        $(if $(VBOX_WITH_DRAG_AND_DROP_GH),VBOX_WITH_DRAG_AND_DROP_GH,) \
    539541        $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \
    540542        $(if-expr defined(VBOX_WITH_EHCI) && defined(VBOX_WITH_USB),VBOX_WITH_EHCI,) \
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r42248 r42261  
    10591059    <desc>
    10601060      Host-Guest clipboard interchange mode.
     1061    </desc>
     1062
     1063    <const name="Disabled"          value="0"/>
     1064    <const name="HostToGuest"       value="1"/>
     1065    <const name="GuestToHost"       value="2"/>
     1066    <const name="Bidirectional"     value="3"/>
     1067  </enum>
     1068
     1069  <enum
     1070    name="DragAndDropMode"
     1071    uuid="b618ea0e-b6fb-4f8d-97f7-5e237e49b547"
     1072    >
     1073    <desc>
     1074      Drag'n'Drop interchange mode.
    10611075    </desc>
    10621076
     
    37393753  <interface
    37403754    name="IMachine" extends="$unknown"
    3741     uuid="1d03031a-ce63-4641-9d67-3a16e03778d5"
     3755    uuid="0e84a036-73bf-49c8-b587-c558d4daa788"
    37423756    wsmap="managed"
    37433757    >
     
    42424256        Synchronization mode between the host OS clipboard
    42434257        and the guest OS clipboard.
     4258      </desc>
     4259    </attribute>
     4260
     4261    <attribute name="dragAndDropMode" type="DragAndDropMode">
     4262      <desc>
     4263        Which mode is allowed for drag'n'drop.
    42444264      </desc>
    42454265    </attribute>
     
    1633316353  <interface
    1633416354    name="IInternalSessionControl" extends="$unknown"
    16335     uuid="9ddb5449-f463-47cb-a717-d6f22da3b3a2"
     16355    uuid="3e83963a-1c3b-400d-8c5f-f2d077b0a597"
    1633616356    internal="yes"
    1633716357    wsmap="suppress"
     
    1653316553      <param name="clipboardMode" type="ClipboardMode" dir="in">
    1653416554        <desc>The new shared clipboard mode.</desc>
     16555      </param>
     16556    </method>
     16557
     16558    <method name="onDragAndDropModeChange">
     16559      <desc>
     16560        Notification when the drag'n'drop mode changes.
     16561      </desc>
     16562      <param name="dragAndDropMode" type="DragAndDropMode" dir="in">
     16563        <desc>The new mode for drag'n'drop.</desc>
    1653516564      </param>
    1653616565    </method>
     
    1828518314  <enum
    1828618315    name="VBoxEventType"
    18287     uuid="100cf5c8-7dd4-4600-8d75-636d211479c9"
     18316    uuid="b627520a-6b1a-4a9a-914d-f31434d3d10f"
    1828818317    >
    1828918318
     
    1854818577      </desc>
    1854918578    </const>
     18579    <const name="OnDragAndDropModeChanged" value="73">
     18580      <desc>
     18581        See <link to="IDragAndDropModeChangedEvent">IDragAndDropModeChangedEvent</link>.
     18582      </desc>
     18583    </const>
    1855018584
    1855118585    <!-- Last event marker -->
    18552     <const name="Last" value="73">
     18586    <const name="Last" value="74">
    1855318587      <desc>
    1855418588        Must be last event, used for iterations and structures relying on numerical event values.
     
    1930619340      <desc>
    1930719341        The new clipboard mode.
     19342      </desc>
     19343    </attribute>
     19344  </interface>
     19345
     19346  <interface
     19347    name="IDragAndDropModeChangedEvent" extends="IEvent"
     19348    uuid="e90b8850-ac8e-4dff-8059-4100ae2c3c3d"
     19349    wsmap="managed" autogen="VBoxEvent" id="OnDragAndDropModeChanged"
     19350    >
     19351    <desc>
     19352      Notification when the drag'n'drop mode changes.
     19353    </desc>
     19354    <attribute name="dragAndDropMode" type="DragAndDropMode" readonly="yes">
     19355      <desc>
     19356        The new drag'n'drop mode.
    1930819357      </desc>
    1930919358    </attribute>
  • trunk/src/VBox/Main/include/ConsoleImpl.h

    r41925 r42261  
    198198    HRESULT onCPUExecutionCapChange(ULONG aExecutionCap);
    199199    HRESULT onClipboardModeChange(ClipboardMode_T aClipboardMode);
     200    HRESULT onDragAndDropModeChange(DragAndDropMode_T aDragAndDropMode);
    200201    HRESULT onVRDEServerChange(BOOL aRestart);
    201202    HRESULT onUSBControllerChange();
     
    602603
    603604    void changeClipboardMode(ClipboardMode_T aClipboardMode);
     605    void changeDragAndDropMode(DragAndDropMode_T aDragAndDropMode);
    604606
    605607#ifdef VBOX_WITH_USB
  • trunk/src/VBox/Main/include/MachineImpl.h

    r42129 r42261  
    282282
    283283        ClipboardMode_T      mClipboardMode;
     284        DragAndDropMode_T    mDragAndDropMode;
    284285
    285286        typedef std::list<GuestProperty> GuestPropertyList;
     
    438439    STDMETHOD(COMGETTER(ClipboardMode))(ClipboardMode_T *aClipboardMode);
    439440    STDMETHOD(COMSETTER(ClipboardMode))(ClipboardMode_T aClipboardMode);
     441    STDMETHOD(COMGETTER(DragAndDropMode))(DragAndDropMode_T *aDragAndDropMode);
     442    STDMETHOD(COMSETTER(DragAndDropMode))(DragAndDropMode_T aDragAndDropMode);
    440443    STDMETHOD(COMGETTER(GuestPropertyNotificationPatterns))(BSTR *aPattern);
    441444    STDMETHOD(COMSETTER(GuestPropertyNotificationPatterns))(IN_BSTR aPattern);
     
    691694    virtual HRESULT onSharedFolderChange() { return S_OK; }
    692695    virtual HRESULT onClipboardModeChange(ClipboardMode_T /* aClipboardMode */) { return S_OK; }
     696    virtual HRESULT onDragAndDropModeChange(DragAndDropMode_T /* aDragAndDropMode */) { return S_OK; }
    693697    virtual HRESULT onBandwidthGroupChange(IBandwidthGroup * /* aBandwidthGroup */) { return S_OK; }
    694698    virtual HRESULT onStorageDeviceChange(IMediumAttachment * /* mediumAttachment */, BOOL /* remove */) { return S_OK; }
     
    10771081    HRESULT onSharedFolderChange();
    10781082    HRESULT onClipboardModeChange(ClipboardMode_T aClipboardMode);
     1083    HRESULT onDragAndDropModeChange(DragAndDropMode_T aDragAndDropMode);
    10791084    HRESULT onBandwidthGroupChange(IBandwidthGroup *aBandwidthGroup);
    10801085    HRESULT onStorageDeviceChange(IMediumAttachment *aMediumAttachment, BOOL aRemove);
  • trunk/src/VBox/Main/include/SessionImpl.h

    r41925 r42261  
    55
    66/*
    7  * Copyright (C) 2006-2010 Oracle Corporation
     7 * Copyright (C) 2006-2012 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    9696    STDMETHOD(OnSharedFolderChange)(BOOL aGlobal);
    9797    STDMETHOD(OnClipboardModeChange)(ClipboardMode_T aClipboardMode);
     98    STDMETHOD(OnDragAndDropModeChange)(DragAndDropMode_T aDragAndDropMode);
    9899    STDMETHOD(OnUSBDeviceAttach)(IUSBDevice *aDevice, IVirtualBoxErrorInfo *aError, ULONG aMaskedIfs);
    99100    STDMETHOD(OnUSBDeviceDetach)(IN_BSTR aId, IVirtualBoxErrorInfo *aError);
  • trunk/src/VBox/Main/src-all/VirtualBoxErrorInfoImpl.cpp

    r41184 r42261  
    5757        if (FAILED(rc)) return rc;
    5858        mNext = nextEI;
    59     }else
     59    }
     60    else
    6061        mNext = aNext;
    6162
  • trunk/src/VBox/Main/src-client/ConsoleImpl.cpp

    r42238 r42261  
    111111
    112112#include <VBox/HostServices/VBoxClipboardSvc.h>
     113#include <VBox/HostServices/DragAndDropSvc.h>
    113114#ifdef VBOX_WITH_GUEST_PROPS
    114115# include <VBox/HostServices/GuestPropertySvc.h>
     
    48874888        alock.release();
    48884889        fireClipboardModeChangedEvent(mEventSource, aClipboardMode);
     4890    }
     4891
     4892    LogFlowThisFunc(("Leaving rc=%#x\n", rc));
     4893    return rc;
     4894}
     4895
     4896/**
     4897 * Called by IInternalSessionControl::OnDragAndDropModeChange().
     4898 *
     4899 * @note Locks this object for writing.
     4900 */
     4901HRESULT Console::onDragAndDropModeChange(DragAndDropMode_T aDragAndDropMode)
     4902{
     4903    LogFlowThisFunc(("\n"));
     4904
     4905    AutoCaller autoCaller(this);
     4906    AssertComRCReturnRC(autoCaller.rc());
     4907
     4908    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     4909
     4910    HRESULT rc = S_OK;
     4911
     4912    /* don't trigger the Drag'n'drop mode change if the VM isn't running */
     4913    SafeVMPtrQuiet ptrVM(this);
     4914    if (ptrVM.isOk())
     4915    {
     4916        if (   mMachineState == MachineState_Running
     4917            || mMachineState == MachineState_Teleporting
     4918            || mMachineState == MachineState_LiveSnapshotting)
     4919            changeDragAndDropMode(aDragAndDropMode);
     4920        else
     4921            rc = setInvalidMachineStateError();
     4922        ptrVM.release();
     4923    }
     4924
     4925    /* notify console callbacks on success */
     4926    if (SUCCEEDED(rc))
     4927    {
     4928        alock.release();
     4929        fireDragAndDropModeChangedEvent(mEventSource, aDragAndDropMode);
    48894930    }
    48904931
     
    76867727        default:
    76877728        case ClipboardMode_Disabled:
    7688             LogRel(("VBoxSharedClipboard mode: Off\n"));
     7729            LogRel(("Shared cipboard mode: Off\n"));
    76897730            parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_OFF;
    76907731            break;
    76917732        case ClipboardMode_GuestToHost:
    7692             LogRel(("VBoxSharedClipboard mode: Guest to Host\n"));
     7733            LogRel(("Shared clipboard mode: Guest to Host\n"));
    76937734            parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_GUEST_TO_HOST;
    76947735            break;
    76957736        case ClipboardMode_HostToGuest:
    7696             LogRel(("VBoxSharedClipboard mode: Host to Guest\n"));
     7737            LogRel(("Shared clipboard mode: Host to Guest\n"));
    76977738            parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_HOST_TO_GUEST;
    76987739            break;
    76997740        case ClipboardMode_Bidirectional:
    7700             LogRel(("VBoxSharedClipboard mode: Bidirectional\n"));
     7741            LogRel(("Shared clipboard mode: Bidirectional\n"));
    77017742            parm.u.uint32 = VBOX_SHARED_CLIPBOARD_MODE_BIDIRECTIONAL;
    77027743            break;
     
    77047745
    77057746    pVMMDev->hgcmHostCall("VBoxSharedClipboard", VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE, 1, &parm);
     7747}
     7748
     7749/**
     7750 * Changes the drag'n_drop mode.
     7751 *
     7752 * @param aDragAndDropMode  new drag'n'drop mode.
     7753 */
     7754void Console::changeDragAndDropMode(DragAndDropMode_T aDragAndDropMode)
     7755{
     7756    VMMDev *pVMMDev = m_pVMMDev;
     7757    Assert(pVMMDev);
     7758
     7759    VBOXHGCMSVCPARM parm;
     7760    parm.type = VBOX_HGCM_SVC_PARM_32BIT;
     7761
     7762    switch (aDragAndDropMode)
     7763    {
     7764        default:
     7765        case DragAndDropMode_Disabled:
     7766            LogRel(("Drag'n'drop mode: Off\n"));
     7767            parm.u.uint32 = VBOX_DRAG_AND_DROP_MODE_OFF;
     7768            break;
     7769        case ClipboardMode_GuestToHost:
     7770            LogRel(("Drag'n'drop mode: Guest to Host\n"));
     7771            parm.u.uint32 = VBOX_DRAG_AND_DROP_MODE_GUEST_TO_HOST;
     7772            break;
     7773        case ClipboardMode_HostToGuest:
     7774            LogRel(("Drag'n'drop mode: Host to Guest\n"));
     7775            parm.u.uint32 = VBOX_DRAG_AND_DROP_MODE_HOST_TO_GUEST;
     7776            break;
     7777        case ClipboardMode_Bidirectional:
     7778            LogRel(("Drag'n'drop mode: Bidirectional\n"));
     7779            parm.u.uint32 = VBOX_DRAG_AND_DROP_MODE_BIDIRECTIONAL;
     7780            break;
     7781    }
     7782
     7783    pVMMDev->hgcmHostCall("VBoxDragAndDropSvc", DragAndDropSvc::HOST_DND_SET_MODE, 1, &parm);
    77067784}
    77077785
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r41925 r42261  
    24692469         */
    24702470        {
     2471            DragAndDropMode_T mode = DragAndDropMode_Disabled;
     2472            hrc = pMachine->COMGETTER(DragAndDropMode)(&mode);                              H();
     2473
    24712474            /* Load the service */
    24722475            rc = pVMMDev->hgcmLoadService("VBoxDragAndDropSvc", "VBoxDragAndDropSvc");
     
    24872490                    Log(("Cannot register VBoxDragAndDropSvc extension!\n"));
    24882491                else
     2492                {
     2493                    changeDragAndDropMode(mode);
    24892494                    Log(("VBoxDragAndDropSvc loaded\n"));
     2495                }
    24902496            }
    24912497        }
  • trunk/src/VBox/Main/src-client/GuestImpl.cpp

    r42084 r42261  
    845845    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    846846
    847 #ifdef VBOX_WITH_DRAG_AND_DROP
     847#if defined(VBOX_WITH_DRAG_AND_DROP) && defined(VBOX_WITH_DRAG_AND_DROP_GH)
    848848    return m_pGuestDnD->dragGHPending(uScreenId, ComSafeArrayOutArg(formats), ComSafeArrayOutArg(allowedActions), pDefaultAction);
    849849#else /* VBOX_WITH_DRAG_AND_DROP */
     
    861861    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    862862
    863 #ifdef VBOX_WITH_DRAG_AND_DROP
     863#if defined(VBOX_WITH_DRAG_AND_DROP) && defined(VBOX_WITH_DRAG_AND_DROP_GH)
    864864    return m_pGuestDnD->dragGHDropped(bstrFormat, action, ppProgress);
    865865#else /* VBOX_WITH_DRAG_AND_DROP */
     
    876876    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    877877
    878 #ifdef VBOX_WITH_DRAG_AND_DROP
     878#if defined(VBOX_WITH_DRAG_AND_DROP) && defined(VBOX_WITH_DRAG_AND_DROP_GH)
    879879    return m_pGuestDnD->dragGHGetData(ComSafeArrayOutArg(data));
    880880#else /* VBOX_WITH_DRAG_AND_DROP */
  • trunk/src/VBox/Main/src-client/SessionImpl.cpp

    r42084 r42261  
    673673
    674674    return mConsole->onClipboardModeChange(aClipboardMode);
     675}
     676
     677STDMETHODIMP Session::OnDragAndDropModeChange(DragAndDropMode_T aDragAndDropMode)
     678{
     679    LogFlowThisFunc(("\n"));
     680
     681    AutoCaller autoCaller(this);
     682    AssertComRCReturn(autoCaller.rc(), autoCaller.rc());
     683
     684    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     685    AssertReturn(mState == SessionState_Locked, VBOX_E_INVALID_VM_STATE);
     686    AssertReturn(mType == SessionType_WriteLock, VBOX_E_INVALID_OBJECT_STATE);
     687
     688    return mConsole->onDragAndDropModeChange(aDragAndDropMode);
    675689}
    676690
  • trunk/src/VBox/Main/src-server/ApplianceImpl.cpp

    r41232 r42261  
    66
    77/*
    8  * Copyright (C) 2008-2011 Oracle Corporation
     8 * Copyright (C) 2008-2012 Oracle Corporation
    99 *
    1010 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    799799                if (FAILED(rc)) throw rc;
    800800                ++cOp;
    801             }else
     801            }
     802            else
    802803                break;
    803804        }
  • trunk/src/VBox/Main/src-server/ApplianceImplIO.cpp

    r40329 r42261  
    66
    77/*
    8  * Copyright (C) 2010 Oracle Corporation
     8 * Copyright (C) 2010-2012 Oracle Corporation
    99 *
    1010 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    298298         */
    299299        bool fFound = false;
    300         for(;;)
     300        for (;;)
    301301        {
    302302            char *pszFilename = 0;
     
    314314                        break;
    315315                }
    316             }else
     316            }
     317            else
    317318                break;
    318319        }
     
    500501                /* First loop over all the free memory in the circular
    501502                 * memory buffer (could be turn around at the end). */
    502                 for(;;)
     503                for (;;)
    503504                {
    504505                    if (   cbMemAllRead == cbAvail
     
    514515                     * method could also split the writes up into to smaller
    515516                     * parts. */
    516                     for(;;)
     517                    for (;;)
    517518                    {
    518519                        if (cbAllWritten == cbMemRead)
     
    557558                /* First loop over all the available memory in the circular
    558559                 * memory buffer (could be turn around at the end). */
    559                 for(;;)
     560                for (;;)
    560561                {
    561562                    if (   cbMemAllWrite == cbAvail
     
    571572                     * smaller parts. */
    572573                    size_t cbAllRead = 0;
    573                     for(;;)
     574                    for (;;)
    574575                    {
    575576                        if (cbAllRead == cbMemWrite)
     
    638639//    RTPrintf("start\n");
    639640    int rc = VINF_SUCCESS;
    640     for(;;)
     641    for (;;)
    641642    {
    642643//        RTPrintf(" wait\n");
     
    981982        size_t cbSize = (size_t)(uOffset - pInt->cbCurAll);
    982983        size_t cbAllWritten = 0;
    983         for(;;)
     984        for (;;)
    984985        {
    985986            /* Finished? */
     
    10001001
    10011002    size_t cbAllWritten = 0;
    1002     for(;;)
     1003    for (;;)
    10031004    {
    10041005        /* Finished? */
     
    10821083
    10831084    size_t cbAllRead = 0;
    1084     for(;;)
     1085    for (;;)
    10851086    {
    10861087        /* Finished? */
     
    12561257        }
    12571258
    1258         for(;;)
     1259        for (;;)
    12591260        {
    12601261            size_t cbRead = 0;
     
    12861287        *ppvBuf = pvBuf;
    12871288        *pcbSize = cbAllRead;
    1288     }else
     1289    }
     1290    else
    12891291    {
    12901292        if (pvBuf)
     
    13101312
    13111313    size_t cbAllWritten = 0;
    1312     for(;;)
     1314    for (;;)
    13131315    {
    13141316        if (cbAllWritten >= cbSize)
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r42213 r42261  
    197197
    198198    mClipboardMode = ClipboardMode_Disabled;
     199    mDragAndDropMode = DragAndDropMode_Disabled;
    199200    mGuestPropertyNotificationPatterns = "";
    200201
     
    26032604    mHWData.backup();
    26042605    mHWData->mClipboardMode = aClipboardMode;
     2606
     2607    /* Save settings if online - todo why is this required?? */
     2608    if (Global::IsOnline(mData->mMachineState))
     2609        saveSettings(NULL);
     2610
     2611    return S_OK;
     2612}
     2613
     2614STDMETHODIMP Machine::COMGETTER(DragAndDropMode)(DragAndDropMode_T *aDragAndDropMode)
     2615{
     2616    CheckComArgOutPointerValid(aDragAndDropMode);
     2617
     2618    AutoCaller autoCaller(this);
     2619    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     2620
     2621    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     2622
     2623    *aDragAndDropMode = mHWData->mDragAndDropMode;
     2624
     2625    return S_OK;
     2626}
     2627
     2628STDMETHODIMP
     2629Machine::COMSETTER(DragAndDropMode)(DragAndDropMode_T aDragAndDropMode)
     2630{
     2631    HRESULT rc = S_OK;
     2632
     2633    AutoCaller autoCaller(this);
     2634    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     2635
     2636    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     2637
     2638    alock.release();
     2639    rc = onDragAndDropModeChange(aDragAndDropMode);
     2640    alock.acquire();
     2641    if (FAILED(rc)) return rc;
     2642
     2643    setModified(IsModified_MachineData);
     2644    mHWData.backup();
     2645    mHWData->mDragAndDropMode = aDragAndDropMode;
    26052646
    26062647    /* Save settings if online - todo why is this required?? */
     
    84198460        // Clipboard
    84208461        mHWData->mClipboardMode = data.clipboardMode;
     8462
     8463        // drag'n'drop
     8464        mHWData->mDragAndDropMode = data.dragAndDropMode;
    84218465
    84228466        // guest settings
     
    95939637        data.clipboardMode = mHWData->mClipboardMode;
    95949638
     9639        // drag'n'drop
     9640        data.dragAndDropMode = mHWData->mDragAndDropMode;
     9641
    95959642        /* Guest */
    95969643        data.ulMemoryBalloonSize = mHWData->mMemoryBalloonSize;
     
    1044210489                            && find(llMedia.begin(), llMedia.end(), pParent) == llMedia.end())
    1044310490                            llMedia.push_back(pParent);
    10444                     }else
     10491                    }
     10492                    else
    1044510493                        break;
    1044610494                    pParent = pParent->getParent();
     
    1289612944
    1289712945/**
     12946 * @note Locks this object for reading.
     12947 */
     12948HRESULT SessionMachine::onDragAndDropModeChange(DragAndDropMode_T aDragAndDropMode)
     12949{
     12950    LogFlowThisFunc(("\n"));
     12951
     12952    AutoCaller autoCaller(this);
     12953    AssertComRCReturnRC(autoCaller.rc());
     12954
     12955    ComPtr<IInternalSessionControl> directControl;
     12956    {
     12957        AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     12958        directControl = mData->mSession.mDirectControl;
     12959    }
     12960
     12961    /* ignore notifications sent after #OnSessionEnd() is called */
     12962    if (!directControl)
     12963        return S_OK;
     12964
     12965    return directControl->OnDragAndDropModeChange(aDragAndDropMode);
     12966}
     12967
     12968/**
    1289812969 *  @note Locks this object for reading.
    1289912970 */
  • trunk/src/VBox/Main/testcase/tstAPI.cpp

    r40478 r42261  
    55
    66/*
    7  * Copyright (C) 2006-2010 Oracle Corporation
     7 * Copyright (C) 2006-2012 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    14171417                else
    14181418                    RTPrintf("Error: failed to import appliance. No error message available!\n");
    1419             }else
     1419            }
     1420            else
    14201421                RTPrintf("Successfully imported the appliance.\n");
    14211422        }
  • trunk/src/VBox/Main/xml/Settings.cpp

    r42179 r42261  
    16151615          chipsetType(ChipsetType_PIIX3),
    16161616          fEmulatedUSBCardReader(false),
    1617           clipboardMode(ClipboardMode_Bidirectional),
     1617          clipboardMode(ClipboardMode_Disabled),
     1618          dragAndDropMode(DragAndDropMode_Disabled),
    16181619          ulMemoryBalloonSize(0),
    16191620          fPageFusionEnabled(false)
     
    16871688                  && (llSharedFolders           == h.llSharedFolders)
    16881689                  && (clipboardMode             == h.clipboardMode)
     1690                  && (dragAndDropMode           == h.dragAndDropMode)
    16891691                  && (ulMemoryBalloonSize       == h.ulMemoryBalloonSize)
    16901692                  && (fPageFusionEnabled        == h.fPageFusionEnabled)
     
    27622764                else
    27632765                    throw ConfigFileError(this, pelmHwChild, N_("Invalid value '%s' in Clipboard/@mode attribute"), strTemp.c_str());
     2766            }
     2767        }
     2768        else if (pelmHwChild->nameEquals("DragAndDrop"))
     2769        {
     2770            Utf8Str strTemp;
     2771            if (pelmHwChild->getAttributeValue("mode", strTemp))
     2772            {
     2773                if (strTemp == "Disabled")
     2774                    hw.dragAndDropMode = DragAndDropMode_Disabled;
     2775                else if (strTemp == "HostToGuest")
     2776                    hw.dragAndDropMode = DragAndDropMode_HostToGuest;
     2777                else if (strTemp == "GuestToHost")
     2778                    hw.dragAndDropMode = DragAndDropMode_GuestToHost;
     2779                else if (strTemp == "Bidirectional")
     2780                    hw.dragAndDropMode = DragAndDropMode_Bidirectional;
     2781                else
     2782                    throw ConfigFileError(this, pelmHwChild, N_("Invalid value '%s' in DragAndDrop/@mode attribute"), strTemp.c_str());
    27642783            }
    27652784        }
     
    40664085    switch (hw.clipboardMode)
    40674086    {
    4068         case ClipboardMode_Disabled: pcszClip = "Disabled"; break;
     4087        default: /*case ClipboardMode_Disabled:*/ pcszClip = "Disabled"; break;
    40694088        case ClipboardMode_HostToGuest: pcszClip = "HostToGuest"; break;
    40704089        case ClipboardMode_GuestToHost: pcszClip = "GuestToHost"; break;
    4071         default: /*case ClipboardMode_Bidirectional:*/ pcszClip = "Bidirectional"; break;
     4090        case ClipboardMode_Bidirectional: pcszClip = "Bidirectional"; break;
    40724091    }
    40734092    pelmClip->setAttribute("mode", pcszClip);
     4093
     4094    xml::ElementNode *pelmDragAndDrop = pelmHardware->createChild("DragAndDrop");
     4095    const char *pcszDragAndDrop;
     4096    switch (hw.dragAndDropMode)
     4097    {
     4098        default: /*case DragAndDropMode_Disabled:*/ pcszDragAndDrop = "Disabled"; break;
     4099        case DragAndDropMode_HostToGuest: pcszDragAndDrop = "HostToGuest"; break;
     4100        case DragAndDropMode_GuestToHost: pcszDragAndDrop = "GuestToHost"; break;
     4101        case DragAndDropMode_Bidirectional: pcszDragAndDrop = "Bidirectional"; break;
     4102    }
     4103    pelmDragAndDrop->setAttribute("mode", pcszDragAndDrop);
    40744104
    40754105    if (m->sv >= SettingsVersion_v1_10)
  • trunk/src/VBox/Main/xml/VirtualBox-settings-common.xsd

    r40652 r42261  
    77 *  Common definitions
    88
    9      Copyright (C) 2004-2011 Oracle Corporation
     9     Copyright (C) 2004-2012 Oracle Corporation
    1010
    1111     This file is part of VirtualBox Open Source Edition (OSE), as
     
    172172
    173173<xsd:simpleType name="TClipboardMode">
     174  <xsd:restriction base="xsd:string">
     175    <xsd:enumeration value="Disabled"/>
     176    <xsd:enumeration value="HostToGuest"/>
     177    <xsd:enumeration value="GuestToHost"/>
     178    <xsd:enumeration value="Bidirectional"/>
     179  </xsd:restriction>
     180</xsd:simpleType>
     181
     182<xsd:simpleType name="TDragAndDropMode">
    174183  <xsd:restriction base="xsd:string">
    175184    <xsd:enumeration value="Disabled"/>
     
    793802</xsd:complexType>
    794803
     804<xsd:complexType name="TDragAndDrop">
     805  <xsd:attribute name="mode" type="TDragAndDropMode" use="required"/>
     806</xsd:complexType>
     807
    795808<xsd:complexType name="TGuest">
    796809  <xsd:attribute name="memoryBalloonSize"        type="xsd:unsignedInt" default="0"/>
     
    865878    </xsd:element>
    866879    <xsd:element name="Clipboard" type="TClipboard"/>
     880    <xsd:element name="DragAndDrop" type="TDragAndDrop"/>
    867881    <xsd:element name="Guest" type="TGuest"/>
    868882    <xsd:element name="GuestProperties" type="TGuestProperties" minOccurs="0">
  • trunk/src/VBox/Runtime/common/misc/s3.cpp

    r39985 r42261  
    55
    66/*
    7  * Copyright (C) 2009 Oracle Corporation
     7 * Copyright (C) 2009-2012 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    258258            case 404: rc = VERR_S3_NOT_FOUND; break; /* Site not found */
    259259        }
    260     }else
     260    }
     261    else
    261262    {
    262263        switch(code)
  • trunk/src/VBox/Runtime/testcase/tstRTUri.cpp

    r39447 r42261  
    55
    66/*
    7  * Copyright (C) 2011 Oracle Corporation
     7 * Copyright (C) 2011-2012 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    206206        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    207207        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    208     }else
     208    }
     209    else
    209210        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    210211
     
    222223        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    223224        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    224     }else
     225    }
     226    else
    225227        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    226228
     
    238240        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    239241        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    240     }else
     242    }
     243    else
    241244        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    242245
     
    254257        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    255258        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    256     }else
     259    }
     260    else
    257261        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    258262
     
    270274        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    271275        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    272     }else
     276    }
     277    else
    273278        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    274279
     
    286291        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    287292        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    288     }else
     293    }
     294    else
    289295        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    290296
     
    303309        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    304310        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    305     }else
     311    }
     312    else
    306313        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    307314
     
    320327        RTTESTI_CHECK_MSG_RETV(pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    321328        RTTESTI_CHECK_MSG(RTStrCmp(pszResult, pszTest) == 0, ("Result '%s' != '%s'", pszResult, pszTest));
    322     }else
     329    }
     330    else
    323331        RTTESTI_CHECK_MSG(!pszResult, ("Result '%s' != '%s'", pszResult, pszTest));
    324332
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette