VirtualBox

Changeset 26469 in vbox


Ignore:
Timestamp:
Feb 12, 2010 5:12:27 PM (15 years ago)
Author:
vboxsync
Message:

FE/Qt4: make the KWin hack only active if we are actually running on KWin

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp

    r26468 r26469  
    28102810
    28112811#ifdef Q_WS_X11
    2812     if (!mIsSeamless && !mIsFullscreen)
    2813     {
    2814         /* Workaround for KDE to
    2815          * let console window to exit
     2812    if (vboxGlobal().isKWinManaged() && !mIsSeamless && !mIsFullscreen)
     2813    {
     2814        /* Workaround for a KWin bug to let console window to exit
    28162815         * seamless mode correctly. */
    28172816        setWindowFlags(Qt::Window);
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobalSettings.h

    r25318 r26469  
    4444    int hostkey;
    4545    bool autoCapture;
     46    bool captureMouseOnClick;
    4647    QString guiFeatures;
    4748    QString languageId;
     
    6263    Q_PROPERTY (int hostKey READ hostKey WRITE setHostKey)
    6364    Q_PROPERTY (bool autoCapture READ autoCapture WRITE setAutoCapture)
     65    Q_PROPERTY (bool captureMouseOnClick READ captureMouseOnClick WRITE setCaptureMouseOnClick)
    6466    Q_PROPERTY (QString guiFeatures READ guiFeatures WRITE setGuiFeatures)
    6567    Q_PROPERTY (QString languageId READ languageId WRITE setLanguageId)
     
    9092    {
    9193        mData()->autoCapture = aAutoCapture;
     94        resetError();
     95    }
     96
     97    bool captureMouseOnClick() const { return data()->captureMouseOnClick; }
     98    void setCaptureMouseOnClick (bool aCaptureMouseOnClick)
     99    {
     100        mData()->captureMouseOnClick = aCaptureMouseOnClick;
    92101        resetError();
    93102    }
  • trunk/src/VBox/Frontends/VirtualBox/src/X11/VBoxX11Helper.cpp

    r25171 r26469  
    2424
    2525#include <iprt/cdefs.h>
     26#include <iprt/string.h>
    2627#include <QX11Info>
    2728
    2829/* rhel3 build hack */
    2930RT_C_DECLS_BEGIN
     31#include <X11/Xatom.h>
    3032#include <X11/Xlib.h>
    3133#include <X11/extensions/dpms.h>
     
    8486        DPMSEnable(display);
    8587}
     88
     89/**
     90 * Determine if the current Window manager is KWin (KDE)
     91 */
     92bool X11IsWindowManagerKWin()
     93{
     94    Atom typeReturned;
     95    Atom utf8Atom;
     96    int formatReturned;
     97    unsigned long ulNitemsReturned;
     98    unsigned long ulDummy;
     99    unsigned char *pcData = NULL;
     100    bool fIsKWinManaged = false;
     101    Display *display = QX11Info::display();
     102    Atom propNameAtom;
     103    Window WMWindow = None;
     104   
     105    propNameAtom = XInternAtom(display, "_NET_SUPPORTING_WM_CHECK", True);
     106    if (XGetWindowProperty(display, QX11Info::appRootWindow(), propNameAtom,
     107                           0, 512, False, XA_WINDOW, &typeReturned,
     108                           &formatReturned, &ulNitemsReturned, &ulDummy, &pcData)
     109                            == Success)
     110    {
     111
     112        if (typeReturned == XA_WINDOW && formatReturned == 32)
     113            WMWindow = *((Window*) pcData);
     114        if (pcData)
     115            XFree(pcData);
     116        if (WMWindow != None)
     117        {
     118            propNameAtom = XInternAtom(display, "_NET_WM_NAME", True);
     119            utf8Atom = XInternAtom(display, "UTF8_STRING", True);
     120            if (XGetWindowProperty(QX11Info::display(), WMWindow, propNameAtom,
     121                                   0, 512, False, utf8Atom, &typeReturned,
     122                                   &formatReturned, &ulNitemsReturned, &ulDummy, &pcData)
     123                    == Success)
     124            {
     125                fIsKWinManaged = RTStrCmp((const char*)pcData, "KWin") == 0;
     126                if (pcData)
     127                    XFree(pcData);
     128            }
     129        }
     130    }
     131    return fIsKWinManaged;
     132}
  • trunk/src/VBox/Frontends/VirtualBox/src/X11/VBoxX11Helper.h

    r25171 r26469  
    2727void X11ScreenSaverSettingsSave();
    2828void X11ScreenSaverSettingsRestore();
     29bool X11IsWindowManagerKWin();
    2930
    3031#endif
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp

    r26460 r26469  
    6363
    6464#ifdef Q_WS_X11
    65 #ifndef VBOX_OSE
    66 # include "VBoxLicenseViewer.h"
    67 #endif /* VBOX_OSE */
    68 
    69 #include <QTextBrowser>
    70 #include <QScrollBar>
    71 #include <QX11Info>
     65# ifndef VBOX_OSE
     66#  include "VBoxLicenseViewer.h"
     67# endif /* VBOX_OSE */
     68# include <QTextBrowser>
     69# include <QScrollBar>
     70# include <QX11Info>
     71# include "VBoxX11Helper.h"
    7272#endif
    7373
     
    590590#endif
    591591    , mMediaEnumThread (NULL)
     592    , mIsKWinManaged (false)
    592593    , mVerString ("1.0")
    593594{
     
    47794780            .GetExtraData (VBoxDefs::GUI_RenderMode).toAscii().constData());
    47804781
     4782#ifdef QT_WS_X11
     4783    mIsKWin = X11IsWindowManagerKWin();
     4784#endif
     4785
    47814786#ifdef VBOX_WITH_DEBUGGER_GUI
    47824787# ifdef VBOX_WITH_DEBUGGER_GUI_MENU
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h

    r26460 r26469  
    324324    VBoxDefs::RenderMode vmRenderMode() const { return vm_render_mode; }
    325325    const char *vmRenderModeStr() const { return vm_render_mode_str; }
     326    bool isKWinManaged() const { return mIsKWinManaged; }
    326327
    327328#ifdef VBOX_WITH_DEBUGGER_GUI
     
    917918    VBoxDefs::RenderMode vm_render_mode;
    918919    const char * vm_render_mode_str;
     920    bool mIsKWinManaged;
    919921
    920922#ifdef VBOX_WITH_DEBUGGER_GUI
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