#include "contextmenu.h"
#include "mainwindow.h"
+#ifdef CONFIG_WIN32
+#include "windows.h"
+
+#else
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+
+#endif
+
+
ContextMenu::ContextMenu(QWidget *parent) :
QMenu(parent)
{
addSeparator();
-#if 0
+#ifndef CONFIG_WIN32
/* Always On Top menu */
action = addAction("&Always on Top");
action->setCheckable(true);
{
qDebug("stays on top : %s", on? "on" : "off");
- QWidget *win = ((QWidget *)this->parent());
+ QWidget *win = (QWidget *)this->parent();
+
+#ifdef CONFIG_WIN32
+ /*
if (on == true) {
win->setWindowFlags(win->windowFlags() | Qt::WindowStaysOnTopHint);
} else {
}
win->show();
+ */
+ HWND hWnd = (HWND)win->winId();
+ HWND hWndInsertAfter = ( (on == true) ? HWND_TOPMOST : HWND_NOTOPMOST);
+ SetWindowPos(hWnd, hWndInsertAfter, win->pos().x(), win->pos().y(), 0, 0, SWP_NOSIZE);
+ win->show();
+
+#else
+ Display* display = XOpenDisplay (NULL);
+ if (display == NULL) {
+ qDebug("Error: XOpenDisplay() Failed. Always on top failed.");
+ return;
+ }
+ XClientMessageEvent event;
+ memset(&event,0,sizeof(event));
+ event.type = ClientMessage;
+ event.window = win->winId();
+ event.message_type = XInternAtom (display, "_NET_WM_STATE", False);
+ event.format = 32;
+ event.data.l[0] = on ? 1 : 0; // 1:_NET_WM_STATE_ADD , 0:_NET_WM_STATE_REMOVE
+ event.data.l[1] = XInternAtom (display, "_NET_WM_STATE_ABOVE", False);
+ event.data.l[2] = 0; //unused.
+ event.data.l[3] = 0;
+ event.data.l[4] = 0;
+ XSendEvent (display, DefaultRootWindow(display), False, SubstructureRedirectMask|SubstructureNotifyMask, (XEvent*)&event);
+ XFlush(display);
+ XCloseDisplay(display);
+#endif
+
+
}
void ContextMenu::slotRotate(int angle)
qDebug() << msg;
QMessageBox *msgBox = new QMessageBox(QMessageBox::Information,
- "Emulator", msg, QMessageBox::Ok);
+ "Emulator", msg, QMessageBox::Ok, (QWidget*)this->parent());
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setModal(false);
msgBox->show();
qWarning() << msg;
QMessageBox *msgBox = new QMessageBox(QMessageBox::Warning,
- "Emulator", msg, QMessageBox::Ok);
+ "Emulator", msg, QMessageBox::Ok, (QWidget*)this->parent());
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setModal(false);
msgBox->show();
qDebug() << msg;
QMessageBox *msgBox = new QMessageBox(QMessageBox::Warning,
- "Emulator", msg, QMessageBox::Ok);
+ "Emulator", msg, QMessageBox::Ok ,(QWidget*)this->parent());
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setModal(false);
msgBox->show();
qWarning() << msg;
QMessageBox *msgBox = new QMessageBox(QMessageBox::Warning,
- "Emulator", msg, QMessageBox::Ok);
+ "Emulator", msg, QMessageBox::Ok, (QWidget*)this->parent());
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setModal(false);
msgBox->show();
qDebug() << msg;
QMessageBox *msgBox = new QMessageBox(QMessageBox::Warning,
- "Emulator", msg, QMessageBox::Ok);
+ "Emulator", msg, QMessageBox::Ok, (QWidget*)this->parent());
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setModal(false);
msgBox->show();
{
qDebug("force close");
- QMessageBox *msg = new QMessageBox();
+ QMessageBox *msg = new QMessageBox((QWidget*)this->parent());
msg->setAttribute(Qt::WA_DeleteOnClose);
msg->setWindowTitle("Emulator");
msg->setText("If you force stop an emulator, it may cause some problems.\n"