From 9d90b26020af83d11ec0900117495901d445e907 Mon Sep 17 00:00:00 2001
From: Daniel Lundqvist <luda09yl@student.hj.se>
Date: Fri, 26 Dec 2014 02:37:52 +0100
Subject: [PATCH] Allow focus on the Qt render widget

By default widgets are set to the focus policy Qt::NoFocus which disallows manually focusing it. Changing the policy to allow clicking the widget to set focus to it allows for keyboard input when not rendering to a popout window. This commit also sets focus to the widget when showing it.

Fixes issue #158.
---
 src/citra_qt/bootmanager.cpp | 3 +++
 src/citra_qt/main.cpp        | 1 +
 2 files changed, 4 insertions(+)

diff --git a/src/citra_qt/bootmanager.cpp b/src/citra_qt/bootmanager.cpp
index 6d08d6afc..d44ddb096 100644
--- a/src/citra_qt/bootmanager.cpp
+++ b/src/citra_qt/bootmanager.cpp
@@ -123,6 +123,9 @@ GRenderWindow::GRenderWindow(QWidget* parent) : QWidget(parent), emu_thread(this
     std::string window_title = Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc);
     setWindowTitle(QString::fromStdString(window_title));
 
+    // Allow manually setting focus to the widget.
+    setFocusPolicy(Qt::ClickFocus);
+
     keyboard_id = KeyMap::NewDeviceId();
     ReloadSetKeymaps();
 
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index 23d4925b8..9fc8705e6 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -170,6 +170,7 @@ void GMainWindow::BootGame(std::string filename)
     render_window->GetEmuThread().start();
 
     render_window->show();
+    render_window->setFocus();
     OnStartGame();
 }