mirror of
https://github.com/NohamR/Reclass.git
synced 2026-05-10 19:59:21 +00:00
fix: add missing header declarations and editor scroll fixes
- mainwindow.h: add m_viewBtnGroup, m_btnReclass, m_btnRendered members, syncViewButtons() declaration, QButtonGroup/QPushButton includes, remove applyTabWidgetStyle() declaration - editor.cpp: reset xOffset on applyDocument, clamp in restoreViewState - test_editor.cpp: add horizontal scroll reset test
This commit is contained in:
@@ -808,6 +808,10 @@ void RcxEditor::applyDocument(const ComposeResult& result) {
|
||||
int pixelWidth = fm.horizontalAdvance(QString(maxLen, QChar('0')));
|
||||
m_sci->SendScintilla(QsciScintillaBase::SCI_SETSCROLLWIDTH,
|
||||
(unsigned long)qMax(1, pixelWidth));
|
||||
|
||||
// Reset horizontal scroll to 0. The controller's restoreViewState()
|
||||
// will set it back to the (clamped) saved position afterward.
|
||||
m_sci->SendScintilla(QsciScintillaBase::SCI_SETXOFFSET, (unsigned long)0);
|
||||
}
|
||||
|
||||
// Force full re-lex to fix stale syntax coloring after edits
|
||||
@@ -1130,8 +1134,13 @@ void RcxEditor::restoreViewState(const ViewState& vs) {
|
||||
m_sci->SendScintilla(QsciScintillaBase::SCI_GOTOPOS, (unsigned long)pos);
|
||||
m_sci->SendScintilla(QsciScintillaBase::SCI_SETFIRSTVISIBLELINE,
|
||||
(unsigned long)vs.scrollLine);
|
||||
m_sci->SendScintilla(QsciScintillaBase::SCI_SETXOFFSET,
|
||||
(unsigned long)vs.xOffset);
|
||||
// Clamp xOffset so it doesn't exceed the current content width.
|
||||
// After a rename that shrinks content, the saved offset may be stale.
|
||||
int scrollW = (int)m_sci->SendScintilla(QsciScintillaBase::SCI_GETSCROLLWIDTH);
|
||||
int vpW = m_sci->viewport() ? m_sci->viewport()->width() : 0;
|
||||
int maxXOff = qMax(0, scrollW - vpW);
|
||||
int xOff = qBound(0, vs.xOffset, maxXOff);
|
||||
m_sci->SendScintilla(QsciScintillaBase::SCI_SETXOFFSET, (unsigned long)xOff);
|
||||
}
|
||||
|
||||
const LineMeta* RcxEditor::metaForLine(int line) const {
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <QTreeView>
|
||||
#include <QStandardItemModel>
|
||||
#include <QMap>
|
||||
#include <QButtonGroup>
|
||||
#include <QPushButton>
|
||||
#include <Qsci/qsciscintilla.h>
|
||||
|
||||
namespace rcx {
|
||||
@@ -67,6 +69,9 @@ private:
|
||||
|
||||
QMdiArea* m_mdiArea;
|
||||
QLabel* m_statusLabel;
|
||||
QButtonGroup* m_viewBtnGroup = nullptr;
|
||||
QPushButton* m_btnReclass = nullptr;
|
||||
QPushButton* m_btnRendered = nullptr;
|
||||
TitleBarWidget* m_titleBar = nullptr;
|
||||
QWidget* m_borderOverlay = nullptr;
|
||||
PluginManager m_pluginManager;
|
||||
@@ -114,8 +119,8 @@ private:
|
||||
|
||||
SplitPane createSplitPane(TabState& tab);
|
||||
void applyTheme(const Theme& theme);
|
||||
void applyTabWidgetStyle(QTabWidget* tw);
|
||||
void styleTabCloseButtons();
|
||||
void syncViewButtons(ViewMode mode);
|
||||
SplitPane* findPaneByTabWidget(QTabWidget* tw);
|
||||
SplitPane* findActiveSplitPane();
|
||||
RcxEditor* activePaneEditor();
|
||||
|
||||
Reference in New Issue
Block a user