Change Qt Hex editor cursor blink logic to be a function of refresh rate so that blink rate is consistent. Also, added a 50hz update rate option.

This commit is contained in:
mjbudd77 2022-01-29 16:04:33 -05:00
parent 44f81dedc3
commit 3bcb9888dd
2 changed files with 30 additions and 2 deletions

View File

@ -1100,7 +1100,7 @@ HexEditorDialog_t::HexEditorDialog_t(QWidget *parent)
QAction *act, *actHlgt, *actHlgtRV;
ColorMenuItem *actColorFG, *actColorBG, *actRowColColor, *actAltColColor;
QActionGroup *group;
int opt, useNativeMenuBar, refreshRateOpt;
int opt, useNativeMenuBar;
QSettings settings;
QDialog::setWindowTitle( tr("Hex Editor") );
@ -1280,6 +1280,7 @@ HexEditorDialog_t::HexEditorDialog_t(QWidget *parent)
group->setExclusive(true);
refreshRateOpt = 10;
g_config->getOption("SDL.HexEditRefreshRate", &refreshRateOpt);
// View -> Refresh Rate -> 5 Hz
@ -1318,6 +1319,15 @@ HexEditorDialog_t::HexEditorDialog_t(QWidget *parent)
group->addAction(act);
subMenu->addAction(act);
// View -> Refresh Rate -> 50 Hz
act = new QAction(tr("50 Hz"), this);
act->setCheckable(true);
act->setChecked( refreshRateOpt == 50 );
connect(act, SIGNAL(triggered()), this, SLOT(setViewRefresh50Hz(void)) );
group->addAction(act);
subMenu->addAction(act);
// View -> Refresh Rate -> 60 Hz
act = new QAction(tr("60 Hz"), this);
act->setCheckable(true);
@ -1727,6 +1737,7 @@ void HexEditorDialog_t::changeFontRequest(void)
//----------------------------------------------------------------------------
void HexEditorDialog_t::setViewRefresh5Hz(void)
{
refreshRateOpt = 5;
g_config->setOption("SDL.HexEditRefreshRate", 5);
periodicTimer->stop();
periodicTimer->start(200);
@ -1734,6 +1745,7 @@ void HexEditorDialog_t::setViewRefresh5Hz(void)
//----------------------------------------------------------------------------
void HexEditorDialog_t::setViewRefresh10Hz(void)
{
refreshRateOpt = 10;
g_config->setOption("SDL.HexEditRefreshRate", 10);
periodicTimer->stop();
periodicTimer->start(100);
@ -1741,6 +1753,7 @@ void HexEditorDialog_t::setViewRefresh10Hz(void)
//----------------------------------------------------------------------------
void HexEditorDialog_t::setViewRefresh20Hz(void)
{
refreshRateOpt = 20;
g_config->setOption("SDL.HexEditRefreshRate", 20);
periodicTimer->stop();
periodicTimer->start(50);
@ -1748,13 +1761,23 @@ void HexEditorDialog_t::setViewRefresh20Hz(void)
//----------------------------------------------------------------------------
void HexEditorDialog_t::setViewRefresh30Hz(void)
{
refreshRateOpt = 30;
g_config->setOption("SDL.HexEditRefreshRate", 30);
periodicTimer->stop();
periodicTimer->start(33);
}
//----------------------------------------------------------------------------
void HexEditorDialog_t::setViewRefresh50Hz(void)
{
refreshRateOpt = 50;
g_config->setOption("SDL.HexEditRefreshRate", 50);
periodicTimer->stop();
periodicTimer->start(20);
}
//----------------------------------------------------------------------------
void HexEditorDialog_t::setViewRefresh60Hz(void)
{
refreshRateOpt = 60;
g_config->setOption("SDL.HexEditRefreshRate", 60);
periodicTimer->stop();
periodicTimer->start(16);
@ -3804,7 +3827,7 @@ void QHexEdit::paintEvent(QPaintEvent *event)
painter.fillRect( 0, 0, w, h, bgColor );
if ( cursorBlinkCount >= 5 )
if ( cursorBlinkCount >= (parent->getRefreshRate()>>1) )
{
cursorBlink = !cursorBlink;
cursorBlinkCount = 0;

View File

@ -297,6 +297,8 @@ class HexEditorDialog_t : public QDialog
void setWindowTitle(void);
void openDebugSymbolEditWindow( int addr );
int getRefreshRate(void){ return refreshRateOpt; }
QHexEdit *editor;
HexEditorFindDialog_t *findDialog;
@ -318,6 +320,8 @@ class HexEditorDialog_t : public QDialog
QAction *rolColHlgtAct;
QAction *altColHlgtAct;
int refreshRateOpt;
private:
public slots:
@ -349,6 +353,7 @@ class HexEditorDialog_t : public QDialog
void setViewRefresh10Hz(void);
void setViewRefresh20Hz(void);
void setViewRefresh30Hz(void);
void setViewRefresh50Hz(void);
void setViewRefresh60Hz(void);
void changeFontRequest(void);
};