Merged fullscreen combos. Fixed bug when config file can't be loaded.
This commit is contained in:
30
src/86box.c
30
src/86box.c
@@ -225,6 +225,28 @@ int other_scsi_present = 0; /* SCSI contro
|
|||||||
// Accelerator key array
|
// Accelerator key array
|
||||||
struct accelKey acc_keys[NUM_ACCELS];
|
struct accelKey acc_keys[NUM_ACCELS];
|
||||||
|
|
||||||
|
// Default accelerator key values
|
||||||
|
struct accelKey def_acc_keys[NUM_ACCELS] = {
|
||||||
|
{ .name="send_ctrl_alt_del", .desc="Send Control+Alt+Del",
|
||||||
|
.seq="Ctrl+F12" },
|
||||||
|
|
||||||
|
{ .name="send_ctrl_alt_esc", .desc="Send Control+Alt+Escape",
|
||||||
|
.seq="Ctrl+F10" },
|
||||||
|
|
||||||
|
{ .name="fullscreen", .desc="Toggle fullscreen",
|
||||||
|
.seq="Ctrl+Alt+PgUp" },
|
||||||
|
|
||||||
|
{ .name="screenshot", .desc="Screenshot",
|
||||||
|
.seq="Ctrl+F11" },
|
||||||
|
|
||||||
|
{ .name="release_mouse", .desc="Release mouse pointer",
|
||||||
|
.seq="Ctrl+End" },
|
||||||
|
|
||||||
|
{ .name="hard_reset", .desc="Hard reset",
|
||||||
|
.seq="Ctrl+Alt+F12" }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Statistics. */
|
/* Statistics. */
|
||||||
extern int mmuflush;
|
extern int mmuflush;
|
||||||
extern int readlnum;
|
extern int readlnum;
|
||||||
@@ -998,6 +1020,14 @@ usage:
|
|||||||
|
|
||||||
gdbstub_init();
|
gdbstub_init();
|
||||||
|
|
||||||
|
// Initialize the keyboard accelerator list with default values
|
||||||
|
for(int x=0;x<NUM_ACCELS;x++) {
|
||||||
|
strcpy(acc_keys[x].name, def_acc_keys[x].name);
|
||||||
|
strcpy(acc_keys[x].desc, def_acc_keys[x].desc);
|
||||||
|
strcpy(acc_keys[x].seq, def_acc_keys[x].seq);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* All good! */
|
/* All good! */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
30
src/config.c
30
src/config.c
@@ -107,29 +107,6 @@ config_log(const char *fmt, ...)
|
|||||||
# define config_log(fmt, ...)
|
# define config_log(fmt, ...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Default accelerator key values
|
|
||||||
struct accelKey def_acc_keys[NUM_ACCELS] = {
|
|
||||||
{ .name="send_ctrl_alt_del", .desc="Send Control+Alt+Del",
|
|
||||||
.seq="Ctrl+F12" },
|
|
||||||
|
|
||||||
{ .name="send_ctrl_alt_esc", .desc="Send Control+Alt+Escape",
|
|
||||||
.seq="Ctrl+F10" },
|
|
||||||
|
|
||||||
{ .name="fullscreen", .desc="Fullscreen",
|
|
||||||
.seq="Ctrl+Alt+PgUp" },
|
|
||||||
|
|
||||||
{ .name="screenshot", .desc="Screenshot",
|
|
||||||
.seq="Ctrl+F11" },
|
|
||||||
|
|
||||||
{ .name="release_mouse", .desc="Release mouse pointer",
|
|
||||||
.seq="Ctrl+End" },
|
|
||||||
|
|
||||||
{ .name="hard_reset", .desc="Hard reset",
|
|
||||||
.seq="Ctrl+Alt+F12" },
|
|
||||||
|
|
||||||
{ .name="leave_fullscreen", .desc="Leave fullscreen",
|
|
||||||
.seq="Ctrl+Alt+PgDn" }
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Load "General" section. */
|
/* Load "General" section. */
|
||||||
static void
|
static void
|
||||||
@@ -1795,13 +1772,6 @@ load_keybinds(void)
|
|||||||
char temp[512];
|
char temp[512];
|
||||||
memset(temp, 0, sizeof(temp));
|
memset(temp, 0, sizeof(temp));
|
||||||
|
|
||||||
// Initialize the bind list with the defaults
|
|
||||||
for(int x=0;x<NUM_ACCELS;x++) {
|
|
||||||
strcpy(acc_keys[x].name, def_acc_keys[x].name);
|
|
||||||
strcpy(acc_keys[x].desc, def_acc_keys[x].desc);
|
|
||||||
strcpy(acc_keys[x].seq, def_acc_keys[x].seq);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now load values from config
|
// Now load values from config
|
||||||
for(int x=0;x<NUM_ACCELS;x++)
|
for(int x=0;x<NUM_ACCELS;x++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -242,8 +242,9 @@ struct accelKey {
|
|||||||
char desc[64];
|
char desc[64];
|
||||||
char seq[64];
|
char seq[64];
|
||||||
};
|
};
|
||||||
#define NUM_ACCELS 7
|
#define NUM_ACCELS 6
|
||||||
extern struct accelKey acc_keys[NUM_ACCELS];
|
extern struct accelKey acc_keys[NUM_ACCELS];
|
||||||
|
extern struct accelKey def_acc_keys[NUM_ACCELS];
|
||||||
extern int FindAccelerator(const char *name);
|
extern int FindAccelerator(const char *name);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -676,17 +676,6 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
/* Remove default Shift+F10 handler, which unfocuses keyboard input even with no context menu. */
|
/* Remove default Shift+F10 handler, which unfocuses keyboard input even with no context menu. */
|
||||||
connect(new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_F10), this), &QShortcut::activated, this, [](){});
|
connect(new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_F10), this), &QShortcut::activated, this, [](){});
|
||||||
|
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
|
||||||
windowedShortcut = new QShortcut(QKeySequence(Qt::CTRL | Qt::ALT | Qt::Key_PageDown), this);
|
|
||||||
#else
|
|
||||||
windowedShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_PageDown), this);
|
|
||||||
#endif
|
|
||||||
windowedShortcut->setContext(Qt::ShortcutContext::ApplicationShortcut);
|
|
||||||
connect(windowedShortcut, &QShortcut::activated, this, [this] () {
|
|
||||||
if (video_fullscreen)
|
|
||||||
ui->actionFullscreen->trigger();
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(this, &MainWindow::initRendererMonitor, this, &MainWindow::initRendererMonitorSlot);
|
connect(this, &MainWindow::initRendererMonitor, this, &MainWindow::initRendererMonitorSlot);
|
||||||
connect(this, &MainWindow::initRendererMonitorForNonQtThread, this, &MainWindow::initRendererMonitorSlot, Qt::BlockingQueuedConnection);
|
connect(this, &MainWindow::initRendererMonitorForNonQtThread, this, &MainWindow::initRendererMonitorSlot, Qt::BlockingQueuedConnection);
|
||||||
connect(this, &MainWindow::destroyRendererMonitor, this, &MainWindow::destroyRendererMonitorSlot);
|
connect(this, &MainWindow::destroyRendererMonitor, this, &MainWindow::destroyRendererMonitorSlot);
|
||||||
@@ -836,10 +825,11 @@ void MainWindow::updateShortcuts()
|
|||||||
// Note that the "Release mouse" shortcut is hardcoded elsewhere
|
// Note that the "Release mouse" shortcut is hardcoded elsewhere
|
||||||
// This section only applies to shortcuts anchored to UI elements
|
// This section only applies to shortcuts anchored to UI elements
|
||||||
|
|
||||||
|
// First we need to wipe all existing accelerators, otherwise Qt will
|
||||||
|
// run into conflicts with old ones.
|
||||||
ui->actionTake_screenshot->setShortcut(QKeySequence());
|
ui->actionTake_screenshot->setShortcut(QKeySequence());
|
||||||
ui->actionCtrl_Alt_Del->setShortcut(QKeySequence());
|
ui->actionCtrl_Alt_Del->setShortcut(QKeySequence());
|
||||||
ui->actionCtrl_Alt_Esc->setShortcut(QKeySequence());
|
ui->actionCtrl_Alt_Esc->setShortcut(QKeySequence());
|
||||||
ui->actionFullscreen->setShortcut(QKeySequence());
|
|
||||||
ui->actionHard_Reset->setShortcut(QKeySequence());
|
ui->actionHard_Reset->setShortcut(QKeySequence());
|
||||||
|
|
||||||
int accID;
|
int accID;
|
||||||
@@ -857,25 +847,13 @@ void MainWindow::updateShortcuts()
|
|||||||
seq = QKeySequence::fromString(acc_keys[accID].seq);
|
seq = QKeySequence::fromString(acc_keys[accID].seq);
|
||||||
ui->actionCtrl_Alt_Esc->setShortcut(seq);
|
ui->actionCtrl_Alt_Esc->setShortcut(seq);
|
||||||
|
|
||||||
accID = FindAccelerator("fullscreen");
|
|
||||||
seq = QKeySequence::fromString(acc_keys[accID].seq);
|
|
||||||
ui->actionFullscreen->setShortcut(seq);
|
|
||||||
|
|
||||||
accID = FindAccelerator("hard_reset");
|
accID = FindAccelerator("hard_reset");
|
||||||
seq = QKeySequence::fromString(acc_keys[accID].seq);
|
seq = QKeySequence::fromString(acc_keys[accID].seq);
|
||||||
ui->actionHard_Reset->setShortcut(seq);
|
ui->actionHard_Reset->setShortcut(seq);
|
||||||
|
|
||||||
// To rebind leave_fullscreen we have to disconnect the existing signal,
|
accID = FindAccelerator("fullscreen");
|
||||||
// build a new shortcut, then connect it.
|
|
||||||
accID = FindAccelerator("leave_fullscreen");
|
|
||||||
seq = QKeySequence::fromString(acc_keys[accID].seq);
|
seq = QKeySequence::fromString(acc_keys[accID].seq);
|
||||||
disconnect(windowedShortcut,0,0,0);
|
ui->actionFullscreen->setShortcut(seq);
|
||||||
windowedShortcut = new QShortcut(seq, this);
|
|
||||||
windowedShortcut->setContext(Qt::ShortcutContext::ApplicationShortcut);
|
|
||||||
connect(windowedShortcut, &QShortcut::activated, this, [this] () {
|
|
||||||
if (video_fullscreen)
|
|
||||||
ui->actionFullscreen->trigger();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1361,6 +1339,20 @@ MainWindow::eventFilter(QObject *receiver, QEvent *event)
|
|||||||
if (event->type() == QEvent::KeyPress) {
|
if (event->type() == QEvent::KeyPress) {
|
||||||
event->accept();
|
event->accept();
|
||||||
this->keyPressEvent((QKeyEvent *) event);
|
this->keyPressEvent((QKeyEvent *) event);
|
||||||
|
|
||||||
|
// Detect fullscreen shortcut when menubar is hidden
|
||||||
|
int accID = FindAccelerator("fullscreen");
|
||||||
|
QKeySequence seq = QKeySequence::fromString(acc_keys[accID].seq);
|
||||||
|
|
||||||
|
if (event->type() == QEvent::KeyPress)
|
||||||
|
{
|
||||||
|
QKeyEvent *ke = (QKeyEvent *) event;
|
||||||
|
if ((QKeySequence)(ke->key() | ke->modifiers()) == seq && video_fullscreen != 0)
|
||||||
|
{
|
||||||
|
ui->actionFullscreen->trigger();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (event->type() == QEvent::KeyRelease) {
|
if (event->type() == QEvent::KeyRelease) {
|
||||||
@@ -1380,6 +1372,8 @@ MainWindow::eventFilter(QObject *receiver, QEvent *event)
|
|||||||
plat_pause(curdopause);
|
plat_pause(curdopause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return QMainWindow::eventFilter(receiver, event);
|
return QMainWindow::eventFilter(receiver, event);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user