{
qDebug("window switch: %d", index);
+ /* terminate the moving mode */
+ destroyTransWidget();
+
/* cancel HW key shortcuts */
keyboardShortcut->cancelHwKeyShortcuts(uiInfo->getMainForm()->getKeyList());
{
qDebug("window scale: %d", scale);
+ /* terminate the moving mode */
+ destroyTransWidget();
+
/* scale changing */
getUiState()->setScalePct(scale);
/* emulator move function */
void MainWindow::createTransWidget()
{
- qDebug("create transparent widget");
+ qDebug("enter the moving mode");
- if (this->uiInfo == NULL) {
- qWarning("UiInfo object is null.");
- return;
+ if (isTransWidgetCreated() == false) {
+ transWidget = new TransWidget(this);
}
- this->transWidget = new TransWidget(this);
- this->transWidget->show();
+ transWidget->show();
}
-void MainWindow::setTransWidget(TransWidget *widget)
+void MainWindow::destroyTransWidget()
{
- this->transWidget = widget;
-}
+ qDebug("leave the moving mode");
-TransWidget *MainWindow::getTransWidget()
-{
- return this->transWidget;
+ if (isTransWidgetCreated() == true) {
+ transWidget->close();
+ transWidget = NULL;
+ }
}
bool MainWindow::isTransWidgetCreated()
{
- if (this->transWidget == NULL) {
- return false;
- }
- return true;
+ return (transWidget != NULL);
}
*/
#include "transwidget.h"
-#include <QDesktopWidget>
-#include <QMouseEvent>
#include "mainwindow.h"
TransWidget::TransWidget(QWidget *parent) : QWidget(parent)
{
- qDebug("transparent widget is created.");
+ this->win = (MainWindow *)parent;
+ this->isGrab = false;
-#if defined(CONFIG_DARWIN)
- setWindowFlags(Qt::Window);
- setWindowFlags(Qt::FramelessWindowHint);
-#elif defined(CONFIG_LINUX)
+#ifndef CONFIG_WIN32
setWindowFlags(Qt::FramelessWindowHint);
#endif
setAttribute(Qt::WA_NoSystemBackground);
setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_DeleteOnClose);
- resize(parent->size());
- qDebug() << "transparent widget size: " << parent->size();
- installEventFilter(this);
- isGrab = false;
+
+ resize(win->size());
+ qDebug() << "transparent widget size:" << win->size();
+
+ setCursor(Qt::SizeAllCursor);
}
/* override */
-bool TransWidget::eventFilter(QObject *obj, QEvent *event)
+void TransWidget::mousePressEvent(QMouseEvent *event)
{
- TransWidget *widget = dynamic_cast<TransWidget *>(obj);
- if (widget == NULL) {
- return QObject::eventFilter(obj, event);
- }
+ QWidget::mousePressEvent(event);
- QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent *>(event);
- if (mouseEvent == NULL) {
- return QObject::eventFilter(obj, event);
+ if (event->button() == Qt::LeftButton) {
+ isGrab = true;
+ grabPos = event->pos();
+ } else {
+ qDebug("cancel the moving mode");
+ win->destroyTransWidget();
}
+}
- MainWindow *parent = qobject_cast<MainWindow*>(this->parent());
- if (parent == NULL) {
- qWarning() << "parent object(MainWindow) is null.";
- return QObject::eventFilter(obj, event);
- }
+/* override */
+void TransWidget::mouseReleaseEvent(QMouseEvent *event)
+{
+ QWidget::mouseReleaseEvent(event);
- if (event->type() == QEvent::MouseButtonPress) {
- if (mouseEvent->button() == Qt::LeftButton) {
- isGrab = true;
- grabPos = parent->mapToGlobal(QPoint(0,0)) - mouseEvent->globalPos();
- }
- if (mouseEvent->button() == Qt::RightButton) {
- mouseEvent->ignore(); /* filtering */
- return true;
- }
- } else if (event->type() == QEvent::MouseMove) {
- if(isGrab == true) {
- parent->move(mouseEvent->globalPos() + grabPos);
- }
- } else if (event->type() == QEvent::MouseButtonRelease) {
- qDebug() << "The position of the emulator: " << this->mapToGlobal(QPoint(0,0));
- close();
- return true;
- }
+ qDebug() << "window position:" << win->pos();
- return QObject::eventFilter(obj, event);
+ isGrab = false;
+ win->destroyTransWidget();
+}
+
+/* override */
+void TransWidget::mouseMoveEvent(QMouseEvent *event)
+{
+ QWidget::mouseMoveEvent(event);
+
+ if (isGrab == true) {
+ win->move(event->globalPos() - grabPos);
+ }
}
TransWidget::~TransWidget()
{
qDebug("destroy transparent widget");
- removeEventFilter(this);
- MainWindow *parent = (MainWindow *)(this->parent());
- parent->setTransWidget(NULL);
+
+ /* do nothing */
}