Merge pull request #16 from namecheap/bugfix/RND-707-flameshot-macos-in-shortcuts-ctrl-now-is-cmd-while-ctrl-is-meta

fix - MacOS - In shortcuts: Ctrl now is Cmd while Ctrl is Meta
This commit is contained in:
Yurii Puchkov
2020-12-08 13:53:26 +02:00
committed by GitHub
4 changed files with 41 additions and 7 deletions

View File

@@ -37,8 +37,8 @@ ConfigWindow::ConfigWindow(QWidget* parent)
: QTabWidget(parent)
{
setAttribute(Qt::WA_DeleteOnClose);
const int size = GlobalValues::buttonBaseSize() * 12;
setMinimumSize(size, size);
setMinimumSize(GlobalValues::buttonBaseSize() * 15,
GlobalValues::buttonBaseSize() * 12);
setWindowIcon(QIcon(":img/app/flameshot.svg"));
setWindowTitle(tr("Configuration"));

View File

@@ -48,7 +48,7 @@ ShortcutsWidget::ShortcutsWidget(QWidget* parent)
#endif
m_layout = new QVBoxLayout(this);
m_layout->setAlignment(Qt::AlignHCenter);
m_layout->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
m_shortcuts = m_config.shortcuts();
initInfoTable();
@@ -86,7 +86,13 @@ void ShortcutsWidget::initInfoTable()
for (int i = 0; i < shortcuts().size(); ++i) {
m_table->setItem(i, 0, new QTableWidgetItem(m_shortcuts.at(i).at(1)));
#if (defined(Q_OS_MAC) || defined(Q_OS_MAC64) || defined(Q_OS_MACOS) || \
defined(Q_OS_MACX))
QTableWidgetItem* item =
new QTableWidgetItem(nativeOSHotKeyText(m_shortcuts.at(i).at(2)));
#else
QTableWidgetItem* item = new QTableWidgetItem(m_shortcuts.at(i).at(2));
#endif
item->setTextAlignment(Qt::AlignCenter);
m_table->setItem(i, 1, item);
@@ -110,10 +116,8 @@ void ShortcutsWidget::initInfoTable()
// adjust size
m_table->resizeColumnsToContents();
m_table->resizeRowsToContents();
m_table->setMinimumWidth(400);
m_table->setMaximumWidth(600);
m_table->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
m_table->horizontalHeader()->setMinimumSectionSize(200);
m_table->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
m_table->horizontalHeader()->setSizePolicy(QSizePolicy::Expanding,
QSizePolicy::Expanding);
}
@@ -138,8 +142,14 @@ void ShortcutsWidget::slotShortcutCellClicked(int row, int col)
}
if (m_config.setShortcut(shortcutName, shortcutValue.toString())) {
#if (defined(Q_OS_MAC) || defined(Q_OS_MAC64) || defined(Q_OS_MACOS) || \
defined(Q_OS_MACX))
QTableWidgetItem* item = new QTableWidgetItem(
nativeOSHotKeyText(shortcutValue.toString()));
#else
QTableWidgetItem* item =
new QTableWidgetItem(shortcutValue.toString());
#endif
item->setTextAlignment(Qt::AlignCenter);
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
m_table->setItem(row, col, item);
@@ -148,3 +158,16 @@ void ShortcutsWidget::slotShortcutCellClicked(int row, int col)
delete setShortcutDialog;
}
}
#if (defined(Q_OS_MAC) || defined(Q_OS_MAC64) || defined(Q_OS_MACOS) || \
defined(Q_OS_MACX))
const QString& ShortcutsWidget::nativeOSHotKeyText(const QString& text)
{
m_res = text;
m_res.replace("Ctrl+", "");
m_res.replace("Alt+", "");
m_res.replace("Meta+", "");
m_res.replace("Shift+", "");
return m_res;
}
#endif

View File

@@ -36,11 +36,19 @@ public:
private:
void initInfoTable();
#if (defined(Q_OS_MAC) || defined(Q_OS_MAC64) || defined(Q_OS_MACOS) || \
defined(Q_OS_MACX))
const QString& nativeOSHotKeyText(const QString& text);
#endif
private slots:
void slotShortcutCellClicked(int, int);
private:
#if (defined(Q_OS_MAC) || defined(Q_OS_MAC64) || defined(Q_OS_MACOS) || \
defined(Q_OS_MACX))
QString m_res;
#endif
ConfigHandler m_config;
QTableWidget* m_table;
QVBoxLayout* m_layout;

View File

@@ -54,10 +54,13 @@ const QVector<QStringList>& ConfigShortcuts::captureShortcutsDefault(
m_shortcuts << (QStringList() << "" << QObject::tr("Quit capture")
<< QKeySequence(Qt::Key_Escape).toString());
#if not(defined(Q_OS_MAC) || defined(Q_OS_MAC64) || defined(Q_OS_MACOS) || \
defined(Q_OS_MACX))
m_shortcuts << (QStringList() << "" << QObject::tr("Screenshot history")
<< "Shift+Print Screen");
m_shortcuts << (QStringList()
<< "" << QObject::tr("Capture screen") << "Print Screen");
#endif
m_shortcuts << (QStringList()
<< "" << QObject::tr("Show color picker") << "Right Click");
m_shortcuts << (QStringList()