VBoxDbgBase.cpp revision 5bd05a82b43bf71cdcd15d6e4d031e679d63f723
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * VBox Debugger GUI - Base classes.
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * Copyright (C) 2006-2010 Oracle Corporation
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * available from http://www.virtualbox.org. This file is free software;
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * you can redistribute it and/or modify it under the terms of the GNU
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * General Public License (GPL) as published by the Free Software
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/*******************************************************************************
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync* Header Files *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync*******************************************************************************/
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync : m_pDbgGui(a_pDbgGui), m_pVM(NULL), m_hGUIThread(RTThreadNativeSelf())
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int rc = VMR3AtStateRegister(pVM, atStateChange, this);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * If the VM is still around.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** @todo need to do some locking here? */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync int rc = VMR3AtStateDeregister(pVM, atStateChange, this);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync const char *pszPat = !rPat.isEmpty() ? Utf8Array.constData() : NULL;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncVBoxDbgBase::stamEnum(const QString &rPat, PFNSTAMR3ENUM pfnEnum, void *pvUser)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync const char *pszPat = !rPat.isEmpty() ? Utf8Array.constData() : NULL;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncVBoxDbgBase::dbgcCreate(PDBGCBACK pBack, unsigned fFlags)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncVBoxDbgBase::atStateChange(PVM pVM, VMSTATE enmState, VMSTATE /*enmOldState*/, void *pvUser)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** @todo need to do some locking here? */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync// V B o x D b g B a s e W i n d o w
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync// V B o x D b g B a s e W i n d o w
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync// V B o x D b g B a s e W i n d o w
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncVBoxDbgBaseWindow::VBoxDbgBaseWindow(VBoxDbgGui *a_pDbgGui, QWidget *a_pParent)
5bd05a82b43bf71cdcd15d6e4d031e679d63f723vboxsync : QWidget(a_pParent, Qt::Window), VBoxDbgBase(a_pDbgGui), m_fPolished(false),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /** @todo this ain't working right. HELP! */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync setWindowState(windowState() & ~Qt::WindowMinimized);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync //activateWindow();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync //setFocus();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncVBoxDbgBaseWindow::vReposition(int a_x, int a_y, unsigned a_cx, unsigned a_cy, bool a_fResize)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync resize(a_cx - BorderSize.width(), a_cy - BorderSize.height());
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /* Ignore if already done or no size set. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /* only once. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /* On X11, there is no way to determine frame geometry (including WM
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * decorations) before the widget is shown for the first time. Stupidly
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * enumerate other top level widgets to find the thickest frame. The code
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * is based on the idea taken from QDialog::adjustPositionInternal(). */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync QWidgetList list = QApplication::topLevelWidgets();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync while ((extraw == 0 || extrah == 0) && it.hasNext())
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync framew = current->frameGeometry().width() - current->width();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync frameh = current->frameGeometry().height() - current->height();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#endif /* X11 */