Add default hotkey to swap primary screens.
Also minor style changes
This commit is contained in:
parent
5f72aade77
commit
d9305b0a07
|
@ -73,7 +73,8 @@ void Config::ReadValues() {
|
||||||
Settings::values.bg_blue = (float)sdl2_config->GetReal("Renderer", "bg_blue", 1.0);
|
Settings::values.bg_blue = (float)sdl2_config->GetReal("Renderer", "bg_blue", 1.0);
|
||||||
|
|
||||||
// Layout
|
// Layout
|
||||||
Settings::values.layout_option = static_cast<Settings::LayoutOption>(sdl2_config->GetInteger("Layout", "layout_option", 0));
|
Settings::values.layout_option =
|
||||||
|
static_cast<Settings::LayoutOption>(sdl2_config->GetInteger("Layout", "layout_option", 0));
|
||||||
Settings::values.swap_screen = sdl2_config->GetBoolean("Layout", "swap_screen", false);
|
Settings::values.swap_screen = sdl2_config->GetBoolean("Layout", "swap_screen", false);
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
|
|
|
@ -55,7 +55,8 @@ void Config::ReadValues() {
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
|
|
||||||
qt_config->beginGroup("Layout");
|
qt_config->beginGroup("Layout");
|
||||||
Settings::values.layout_option = static_cast<Settings::LayoutOption>(qt_config->value("layout_option").toInt());
|
Settings::values.layout_option =
|
||||||
|
static_cast<Settings::LayoutOption>(qt_config->value("layout_option").toInt());
|
||||||
Settings::values.swap_screen = qt_config->value("swap_screen", false).toBool();
|
Settings::values.swap_screen = qt_config->value("swap_screen", false).toBool();
|
||||||
qt_config->endGroup();
|
qt_config->endGroup();
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,8 @@ void ConfigureGraphics::applyConfiguration() {
|
||||||
Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked();
|
Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked();
|
||||||
Settings::values.use_scaled_resolution = ui->toggle_scaled_resolution->isChecked();
|
Settings::values.use_scaled_resolution = ui->toggle_scaled_resolution->isChecked();
|
||||||
Settings::values.use_vsync = ui->toggle_vsync->isChecked();
|
Settings::values.use_vsync = ui->toggle_vsync->isChecked();
|
||||||
Settings::values.layout_option = static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
|
Settings::values.layout_option =
|
||||||
|
static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
|
||||||
Settings::values.swap_screen = ui->swap_screen->isChecked();
|
Settings::values.swap_screen = ui->swap_screen->isChecked();
|
||||||
Settings::Apply();
|
Settings::Apply();
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,6 +196,7 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
||||||
|
|
||||||
// Setup hotkeys
|
// Setup hotkeys
|
||||||
RegisterHotkey("Main Window", "Load File", QKeySequence::Open);
|
RegisterHotkey("Main Window", "Load File", QKeySequence::Open);
|
||||||
|
RegisterHotkey("Main Window", "Swap Screens", QKeySequence::NextChild);
|
||||||
RegisterHotkey("Main Window", "Start Emulation");
|
RegisterHotkey("Main Window", "Start Emulation");
|
||||||
LoadHotkeys();
|
LoadHotkeys();
|
||||||
|
|
||||||
|
@ -203,6 +204,8 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
|
||||||
SLOT(OnMenuLoadFile()));
|
SLOT(OnMenuLoadFile()));
|
||||||
connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this,
|
connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this,
|
||||||
SLOT(OnStartGame()));
|
SLOT(OnStartGame()));
|
||||||
|
connect(GetHotkey("Main Window", "Swap Screens", this), SIGNAL(activated()), this,
|
||||||
|
SLOT(OnSwapScreens()));
|
||||||
|
|
||||||
std::string window_title =
|
std::string window_title =
|
||||||
Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc);
|
Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc);
|
||||||
|
@ -550,6 +553,11 @@ void GMainWindow::OnConfigure() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GMainWindow::OnSwapScreens() {
|
||||||
|
Settings::values.swap_screen = !Settings::values.swap_screen;
|
||||||
|
Settings::Apply();
|
||||||
|
}
|
||||||
|
|
||||||
void GMainWindow::OnCreateGraphicsSurfaceViewer() {
|
void GMainWindow::OnCreateGraphicsSurfaceViewer() {
|
||||||
auto graphicsSurfaceViewerWidget = new GraphicsSurfaceWidget(Pica::g_debug_context, this);
|
auto graphicsSurfaceViewerWidget = new GraphicsSurfaceWidget(Pica::g_debug_context, this);
|
||||||
addDockWidget(Qt::RightDockWidgetArea, graphicsSurfaceViewerWidget);
|
addDockWidget(Qt::RightDockWidgetArea, graphicsSurfaceViewerWidget);
|
||||||
|
|
|
@ -105,6 +105,7 @@ private slots:
|
||||||
/// Called whenever a user selects the "File->Select Game List Root" menu item
|
/// Called whenever a user selects the "File->Select Game List Root" menu item
|
||||||
void OnMenuSelectGameListRoot();
|
void OnMenuSelectGameListRoot();
|
||||||
void OnMenuRecentFile();
|
void OnMenuRecentFile();
|
||||||
|
void OnSwapScreens();
|
||||||
void OnConfigure();
|
void OnConfigure();
|
||||||
void OnDisplayTitleBars(bool);
|
void OnDisplayTitleBars(bool);
|
||||||
void ToggleWindowMode();
|
void ToggleWindowMode();
|
||||||
|
|
|
@ -200,7 +200,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience method to update the VideoCore EmuWindow
|
* Convenience method to update the current frame layout
|
||||||
* Read from the current settings to determine which layout to use.
|
* Read from the current settings to determine which layout to use.
|
||||||
*/
|
*/
|
||||||
void UpdateCurrentFramebufferLayout(unsigned width, unsigned height);
|
void UpdateCurrentFramebufferLayout(unsigned width, unsigned height);
|
||||||
|
|
|
@ -51,11 +51,15 @@ FramebufferLayout DefaultFrameLayout(unsigned width, unsigned height, bool swapp
|
||||||
bot_screen.TranslateX((screen_window_area.GetWidth() - bot_screen.GetWidth()) / 2);
|
bot_screen.TranslateX((screen_window_area.GetWidth() - bot_screen.GetWidth()) / 2);
|
||||||
} else {
|
} else {
|
||||||
// Window is narrower than the emulation content => apply borders to the top and bottom
|
// Window is narrower than the emulation content => apply borders to the top and bottom
|
||||||
top_screen = top_screen.TranslateY(height / 2 - top_screen.GetHeight());
|
|
||||||
// Recalculate the bottom screen to account for the width difference between top and bottom
|
// Recalculate the bottom screen to account for the width difference between top and bottom
|
||||||
screen_window_area = {0, 0, width, top_screen.GetHeight()};
|
screen_window_area = {0, 0, width, top_screen.GetHeight()};
|
||||||
bot_screen = maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO);
|
bot_screen = maxRectangle(screen_window_area, BOT_SCREEN_ASPECT_RATIO);
|
||||||
bot_screen = bot_screen.TranslateX((top_screen.GetWidth() - bot_screen.GetWidth()) / 2);
|
bot_screen = bot_screen.TranslateX((top_screen.GetWidth() - bot_screen.GetWidth()) / 2);
|
||||||
|
if (swapped) {
|
||||||
|
bot_screen = bot_screen.TranslateY(height / 2 - bot_screen.GetHeight());
|
||||||
|
} else {
|
||||||
|
top_screen = top_screen.TranslateY(height / 2 - top_screen.GetHeight());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Move the top screen to the bottom if we are swapped.
|
// Move the top screen to the bottom if we are swapped.
|
||||||
res.top_screen = swapped ? top_screen.TranslateY(height / 2) : top_screen;
|
res.top_screen = swapped ? top_screen.TranslateY(height / 2) : top_screen;
|
||||||
|
|
|
@ -33,7 +33,8 @@ FramebufferLayout DefaultFrameLayout(unsigned width, unsigned height, bool is_sw
|
||||||
FramebufferLayout SingleFrameLayout(unsigned width, unsigned height, bool is_swapped);
|
FramebufferLayout SingleFrameLayout(unsigned width, unsigned height, bool is_swapped);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory method for constructing a Frame with the a 4x size Top screen with a 1x size bottom screen on the right
|
* Factory method for constructing a Frame with the a 4x size Top screen with a 1x size bottom
|
||||||
|
* screen on the right
|
||||||
* This is useful in particular because it matches well with a 1920x1080 resolution monitor
|
* This is useful in particular because it matches well with a 1920x1080 resolution monitor
|
||||||
* @param width Window framebuffer width in pixels
|
* @param width Window framebuffer width in pixels
|
||||||
* @param height Window framebuffer height in pixels
|
* @param height Window framebuffer height in pixels
|
||||||
|
|
|
@ -45,10 +45,8 @@ struct Rectangle {
|
||||||
return Rectangle{left, top + y, right, bottom + y};
|
return Rectangle{left, top + y, right, bottom + y};
|
||||||
}
|
}
|
||||||
Rectangle<T> Scale(const float s) const {
|
Rectangle<T> Scale(const float s) const {
|
||||||
ASSERT(s > 0);
|
return Rectangle{left, top, static_cast<T>((right + left) * s),
|
||||||
return Rectangle {
|
static_cast<T>((top + bottom) * s)};
|
||||||
left, top, static_cast<T>((right + left) * s), static_cast<T>((top + bottom) * s)
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -406,9 +406,8 @@ void RendererOpenGL::DrawScreens() {
|
||||||
glUniform1i(uniform_color_texture, 0);
|
glUniform1i(uniform_color_texture, 0);
|
||||||
|
|
||||||
if (layout.top_screen_enabled) {
|
if (layout.top_screen_enabled) {
|
||||||
DrawSingleScreenRotated(screen_infos[0], (float)top_screen.left,
|
DrawSingleScreenRotated(screen_infos[0], (float)top_screen.left, (float)top_screen.top,
|
||||||
(float)top_screen.top, (float)top_screen.GetWidth(),
|
(float)top_screen.GetWidth(), (float)top_screen.GetHeight());
|
||||||
(float)top_screen.GetHeight());
|
|
||||||
}
|
}
|
||||||
if (layout.bottom_screen_enabled) {
|
if (layout.bottom_screen_enabled) {
|
||||||
DrawSingleScreenRotated(screen_infos[1], (float)bottom_screen.left,
|
DrawSingleScreenRotated(screen_infos[1], (float)bottom_screen.left,
|
||||||
|
|
Reference in New Issue