]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/proxguiqt.cpp
osx: fix annoying focus behaviour (#689)
[proxmark3-svn] / client / proxguiqt.cpp
index ab0976cceb4442e3b157bbc1403ff1b18721329a..30e4c8de782cd0f94d60db9d4834f35753296fde 100644 (file)
 #include <string.h>
 #include "proxgui.h"
 #include <QtGui>
+
+extern "C" {
+#include "util_darwin.h"
+}
 //#include <ctime>
 
 bool g_useOverlays = false;
@@ -60,7 +64,12 @@ void ProxGuiQT::_ShowGraphWindow(void)
                return;
 
        if (!plotwidget)
+       {
+#if defined(__MACH__) && defined(__APPLE__)
+               makeFocusable();
+#endif
                plotwidget = new ProxWidget();
+       }
 
        plotwidget->show();
 }
@@ -108,6 +117,11 @@ void ProxGuiQT::MainLoop()
        //start proxmark thread after starting event loop
        QTimer::singleShot(200, this, SLOT(_StartProxmarkThread()));
 
+#if defined(__MACH__) && defined(__APPLE__)
+       //Prevent the terminal from loosing focus during launch by making the client unfocusable
+       makeUnfocusable();
+#endif
+
        plotapp->exec();
 }
 
@@ -181,8 +195,7 @@ ProxWidget::ProxWidget(QWidget *parent, ProxGuiQT *master) : QWidget(parent)
        this->master = master;
        resize(800,500);
 
-       /** Setup the controller widget **/
-
+       // Setup the controller widget
        controlWidget = new QWidget();
        opsController = new Ui::Form();
        opsController->setupUi(controlWidget);
@@ -204,23 +217,17 @@ ProxWidget::ProxWidget(QWidget *parent, ProxGuiQT *master) : QWidget(parent)
        QObject::connect(opsController->horizontalSlider_dirthr_down, SIGNAL(valueChanged(int)), this, SLOT(vchange_dthr_down(int)));
        QObject::connect(opsController->horizontalSlider_askedge, SIGNAL(valueChanged(int)), this, SLOT(vchange_askedge(int)));
 
-       controlWidget->show();
-
        // Set up the plot widget, which does the actual plotting
-
        plot = new Plot(this);
-       /*
-       QSlider* slider = new QSlider(Qt::Horizontal);
-       slider->setFocusPolicy(Qt::StrongFocus);
-       slider->setTickPosition(QSlider::TicksBothSides);
-       slider->setTickInterval(10);
-       slider->setSingleStep(1);
-       */
        QVBoxLayout *layout = new QVBoxLayout;
-       //layout->addWidget(slider);
        layout->addWidget(plot);
        setLayout(layout);
-       //printf("Proxwidget Constructor just set layout\r\n");
+       show(); // places the window on the screen.
+
+       // Move controller widget below plot
+       controlWidget->move(x(),y()+frameSize().height());
+       controlWidget->resize(size().width(), controlWidget->size().height());
+       controlWidget->show();
 }
 
 // not 100% sure what i need in this block
Impressum, Datenschutz