Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8c25c5f
Qt: remove deprecated
rodlie May 30, 2026
ea5170a
Update menu.cpp
rodlie May 30, 2026
04b8459
Qt: remove deprecated (QMatrix/QStringRef/QRegExp)
rodlie May 30, 2026
0ce7edc
Qt: remove deprecated (QMatrix/QRegExp/QDesktop)
rodlie May 30, 2026
7bd1602
Update expressiondialog.cpp
rodlie May 30, 2026
10c3fdd
Update wrappernode.cpp
rodlie May 30, 2026
6d0b343
Update conncontextptr.h
rodlie May 30, 2026
d366e86
Update customidentifier.cpp
rodlie May 30, 2026
e3d1ab2
SVG Import: remove deprecated (QMatrix/QRegExp)
rodlie May 30, 2026
88e907c
Update valueinput.cpp
rodlie May 30, 2026
f7ba53a
Update esettings.cpp
rodlie May 30, 2026
9049c08
UI: fix compat for QEvent vs. QEnterEvent
rodlie May 30, 2026
8487316
Qt: remove deprecated (QMatrix/QStringRef)
rodlie May 30, 2026
704425c
Qt: more fixes for enterEvent
rodlie May 30, 2026
b71e88b
Qt: remove pos()
rodlie May 30, 2026
e69739f
Update xmlexporthelpers.cpp
rodlie May 30, 2026
9e34f8e
Update renderhandler.cpp
rodlie May 30, 2026
328c78d
Update eobject.h
rodlie May 30, 2026
b30e8c1
Update friction-common.cmake
rodlie May 30, 2026
4468aa1
fix read/write project format
rodlie May 30, 2026
4b6d48b
AudioHandler: support Qt5 and Qt6 (wip)
rodlie May 30, 2026
bb5e6ec
Fix Qt5 compatibility
rodlie May 30, 2026
2941b4c
Update ReadWrite (Qt5/Qt6)
rodlie May 30, 2026
5e60f5d
Update animatort.h
rodlie May 30, 2026
54a8015
Qt5+Qt6: misc fixes
rodlie Jun 18, 2026
9ab9e16
Merge branch 'main' into qt6
rodlie Jun 18, 2026
2736d97
Qt6 CI (Linux)
rodlie Jun 18, 2026
af29dc9
Update ci.sh
rodlie Jun 18, 2026
99fd5a7
Update ci.sh
rodlie Jun 18, 2026
411cd5c
New Linux CIs
rodlie Jun 19, 2026
03064c5
More Qt6 compat
rodlie Jun 19, 2026
0028b4e
Update workflows
rodlie Jun 19, 2026
eecfeb1
Update workflows (again)
rodlie Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
name: Linux

on: [push, pull_request]
on:
push:
branches:
- main
- v1.0
- v1.1
pull_request:
branches:
- main
- v1.0
- v1.1

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
release:
Expand Down
16 changes: 15 additions & 1 deletion .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
name: macOS

on: [push, pull_request]
on:
push:
branches:
- main
- v1.0
- v1.1
pull_request:
branches:
- main
- v1.0
- v1.1

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
release:
Expand Down
36 changes: 28 additions & 8 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,37 @@
name: Ubuntu

on: workflow_dispatch
on:
push:
branches:
- main
- v1.0
- v1.1
pull_request:
branches:
- main
- v1.0
- v1.1

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
jammy:
runs-on: ubuntu-22.04
qt5_15_arm:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Build
run: APT=1 CI=1 MKJOBS=2 ./src/scripts/ci.sh
noble:
run: APT=1 CI=1 CPU=aarch64 MKJOBS=2 ./src/scripts/ci.sh
qt6_4:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Build
run: APT=1 QT6="ON" FFMPEG=1 CI=1 MKJOBS=2 ./src/scripts/ci.sh
qt6_10:
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@v4
- name: Build
run: APT=1 CI=1 MKJOBS=2 ./src/scripts/ci.sh
run: APT=1 QT6="ON" FFMPEG=1 CI=1 MKJOBS=2 ./src/scripts/ci.sh
18 changes: 16 additions & 2 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
name: Windows

on: [push, pull_request]
on:
push:
branches:
- main
- v1.0
- v1.1
pull_request:
branches:
- main
- v1.0
- v1.1

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
release:
runs-on: windows-2022
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Build
shell: cmd
run: .\src\scripts\build.bat ci
Expand Down
2 changes: 1 addition & 1 deletion src/app/GUI/BoxesList/boolpropertywidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ void BoolPropertyWidget::paintEvent(QPaintEvent *) {
p.end();
}

void BoolPropertyWidget::enterEvent(QEvent *) {
void BoolPropertyWidget::enterEvent(QtEnterEvent *) {
mHovered = true;
update();
}
Expand Down
3 changes: 2 additions & 1 deletion src/app/GUI/BoxesList/boolpropertywidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include <QWidget>
#include "Properties/boolproperty.h"
#include "Properties/boolpropertycontainer.h"
#include "../ui/enterevent.h"

class BoolPropertyWidget : public QWidget {
Q_OBJECT
Expand All @@ -40,7 +41,7 @@ class BoolPropertyWidget : public QWidget {
protected:
void mousePressEvent(QMouseEvent *);
void paintEvent(QPaintEvent *);
void enterEvent(QEvent *);
void enterEvent(QtEnterEvent *);
void leaveEvent(QEvent *);
private:
bool mHovered = false;
Expand Down
31 changes: 17 additions & 14 deletions src/app/GUI/BoxesList/boxscroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,17 +180,18 @@ void BoxScroller::stopScrolling() {
}
}

void BoxScroller::dropEvent(QDropEvent *event) {
void BoxScroller::dropEvent(QDropEvent *event)
{
stopScrolling();
mCurrentMimeData = event->mimeData();
mLastDragMoveY = event->pos().y();
mLastDragMoveY = AppSupport::getDropPos(event).y();
updateDropTarget();
if(mDropTarget.isValid()) {
if (mDropTarget.isValid()) {
const auto targetAbs = mDropTarget.fTargetParent;
const auto target = targetAbs->getTarget();
if(mDropTarget.fDropType == DropType::on) {
if (mDropTarget.fDropType == DropType::on) {
target->SWT_drop(mCurrentMimeData);
} else if(mDropTarget.fDropType == DropType::into) {
} else if (mDropTarget.fDropType == DropType::into) {
target->SWT_dropInto(mDropTarget.fTargetId, mCurrentMimeData);
}
planScheduleUpdateVisibleWidgetsContent();
Expand All @@ -200,13 +201,14 @@ void BoxScroller::dropEvent(QDropEvent *event) {
mDropTarget.reset();
}

void BoxScroller::dragEnterEvent(QDragEnterEvent *event) {
void BoxScroller::dragEnterEvent(QDragEnterEvent *event)
{
const auto mimeData = event->mimeData();
mLastDragMoveY = event->pos().y();
mLastDragMoveY = AppSupport::getDropPos(event).y();
mCurrentMimeData = mimeData;
updateDropTarget();
//mDragging = true;
if(mCurrentMimeData) event->acceptProposedAction();
if (mCurrentMimeData) { event->acceptProposedAction(); }
update();
}

Expand All @@ -218,18 +220,19 @@ void BoxScroller::dragLeaveEvent(QDragLeaveEvent *event) {
update();
}

void BoxScroller::dragMoveEvent(QDragMoveEvent *event) {
void BoxScroller::dragMoveEvent(QDragMoveEvent *event)
{
event->acceptProposedAction();
const int yPos = event->pos().y();
const int yPos = AppSupport::getDropPos(event).y();

if(yPos < 30) {
if(!mScrollTimer->isActive()) {
if (yPos < 30) {
if (!mScrollTimer->isActive()) {
connect(mScrollTimer, &QTimer::timeout,
this, &BoxScroller::scrollUp);
mScrollTimer->start(300);
}
} else if(yPos > height() - 30) {
if(!mScrollTimer->isActive()) {
} else if (yPos > height() - 30) {
if (!mScrollTimer->isActive()) {
connect(mScrollTimer, &QTimer::timeout,
this, &BoxScroller::scrollDown);
mScrollTimer->start(300);
Expand Down
20 changes: 12 additions & 8 deletions src/app/GUI/BoxesList/boxsinglewidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -654,8 +654,10 @@ void BoxSingleWidget::clearStaticPixmaps()

void BoxSingleWidget::mousePressEvent(QMouseEvent *event) {
if(!mTarget) return;
if(event->x() < mFillWidget->x() ||
event->x() > mFillWidget->x() + mFillWidget->width()) return;
const auto mouseX = AppSupport::getMouseX(event);
if (mouseX < mFillWidget->x() ||
mouseX > mFillWidget->x() + mFillWidget->width()) return;

const auto target = mTarget->getTarget();
if(event->button() == Qt::RightButton) {
setSelected(true);
Expand All @@ -672,7 +674,7 @@ void BoxSingleWidget::mousePressEvent(QMouseEvent *event) {
PropertyMenu pMenu(&menu, mParent->currentScene(), MainWindow::sGetInstance());
pTarget->prp_setupTreeViewMenu(&pMenu);
}
menu.exec(event->globalPos());
menu.exec(AppSupport::getMouseGlobalPos(event));
setSelected(false);
} else {
mDragPressPos = event->pos().x() > mFillWidget->x();
Expand All @@ -691,7 +693,8 @@ void BoxSingleWidget::mouseMoveEvent(QMouseEvent *event) {
{
const auto prop = static_cast<Property*>(mTarget->getTarget());
const QString name = prop->prp_getName();
const int nameWidth = QApplication::fontMetrics().horizontalAdvance(name);
QFontMetricsF fmf(QApplication::font());
const int nameWidth = static_cast<int>(fmf.horizontalAdvance(name));
QPixmap pixmap(mFillWidget->x() + nameWidth + eSizesUI::widget, height());
render(&pixmap);
drag->setPixmap(pixmap);
Expand All @@ -713,13 +716,14 @@ void BoxSingleWidget::mouseReleaseEvent(QMouseEvent *event)
const auto target = mTarget->getTarget();

const auto bbox = enve_cast<BoundingBox*>(target);
if (event->button() == Qt::MidButton && bbox) {
if (event->button() == Qt::MiddleButton && bbox) {
PropertyNameDialog::sRenameBox(bbox, this);
return;
}

if (event->x() < mFillWidget->x() ||
event->x() > mFillWidget->x() + mFillWidget->width()) { return; }
const auto mouseX = AppSupport::getMouseX(event);
if (mouseX < mFillWidget->x() ||
mouseX > mFillWidget->x() + mFillWidget->width()) { return; }
setSelected(false);

if (pointToLen(event->pos() - mDragStartPos) > eSizesUI::widget/2) { return; }
Expand All @@ -734,7 +738,7 @@ void BoxSingleWidget::mouseReleaseEvent(QMouseEvent *event)
}
}

void BoxSingleWidget::enterEvent(QEvent *)
void BoxSingleWidget::enterEvent(QtEnterEvent *)
{
#ifdef Q_OS_MAC
setFocus();
Expand Down
4 changes: 3 additions & 1 deletion src/app/GUI/BoxesList/boxsinglewidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
#include "smartPointers/ememory.h"
#include "framerange.h"
#include "Animators/SmartPath/smartpathanimator.h"
#include "../ui/enterevent.h"

class QrealAnimatorValueSlider;
class TimelineMovable;
class Key;
Expand Down Expand Up @@ -101,7 +103,7 @@ class BoxSingleWidget : public SingleWidget {
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);

void enterEvent(QEvent *);
void enterEvent(QtEnterEvent *);
void leaveEvent(QEvent *);

#ifdef Q_OS_MAC
Expand Down
4 changes: 2 additions & 2 deletions src/app/GUI/Dialogs/dialogsinterfaceimpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ class ShaderChoiceDialog : public QDialog {
const auto textTriggerGetter = [this, &options, &homePath](const int id) {
const auto& shader = options.at(id);
QString ttPath = shader->fGrePath;
if(ttPath.left(homePath.count()) == homePath) {
ttPath = "~" + ttPath.mid(homePath.count());
if(ttPath.left(homePath.size()) == homePath) {
ttPath = "~" + ttPath.mid(homePath.size());
}
return ButtonsList::TextTrigger{
ttPath, [this, ttPath, id, &options]() {
Expand Down
57 changes: 32 additions & 25 deletions src/app/GUI/Expressions/expressiondialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -554,35 +554,42 @@ void ExpressionDialog::updateScriptDefinitions()
}

{
QRegExp funcDefs("(class|function)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(\\([a-zA-Z0-9_, ]*\\))");
int pos = 0;
while ((pos = funcDefs.indexIn(scriptContext, pos)) != -1) {
QStringList funcs = funcDefs.capturedTexts();
for (int i = 2; i < funcs.count() - 1; i += 3) {
const auto& func = funcs.at(i);
const auto& funcArgs = funcs.at(i + 1);
if (func.isEmpty()) { continue; }
mScriptApi->add(func + funcArgs);
mScriptLexer->addDefinition(func);
mDefsLexer->addDefinition(func);
}
pos += funcDefs.matchedLength();
QRegularExpression funcDefs("(class|function)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*(\\([a-zA-Z0-9_, ]*\\))");
auto matchIterator = funcDefs.globalMatch(scriptContext);

while (matchIterator.hasNext()) {
QRegularExpressionMatch match = matchIterator.next();
QStringList funcs = match.capturedTexts();

for (int i = 2; i < funcs.count() - 1; i += 3) {
const auto& func = funcs.at(i);
const auto& funcArgs = funcs.at(i + 1);
if (func.isEmpty()) { continue; }

mScriptApi->add(func + funcArgs);
mScriptLexer->addDefinition(func);
mDefsLexer->addDefinition(func);
}
}
}

{
QRegExp varDefs("([a-zA-Z_][a-zA-Z0-9_]*)\\s*=\\s*(?!=)");
int pos = 0;
while ((pos = varDefs.indexIn(scriptContext, pos)) != -1) {
QStringList vars = varDefs.capturedTexts();
for (int i = 1; i < vars.count(); i++) {
const auto& var = vars.at(i);
if (var.isEmpty()) { continue; }
mScriptApi->add(var);
mScriptLexer->addDefinition(var);
mDefsLexer->addDefinition(var);
}
pos += varDefs.matchedLength();
QRegularExpression varDefs("([a-zA-Z_][a-zA-Z0-9_]*)\\s*=\\s*(?!=)");

auto matchIterator = varDefs.globalMatch(scriptContext);

while (matchIterator.hasNext()) {
QRegularExpressionMatch match = matchIterator.next();
QStringList vars = match.capturedTexts();

for (int i = 1; i < vars.count(); i++) {
const auto& var = vars.at(i);
if (var.isEmpty()) { continue; }

mScriptApi->add(var);
mScriptLexer->addDefinition(var);
mDefsLexer->addDefinition(var);
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/app/GUI/Expressions/expressioneditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void ExpressionEditor::keyPressEvent(QKeyEvent *e) {
} else if(key == Qt::Key_Tab) {
return QWidget::keyPressEvent(e);
} else QTextEdit::keyPressEvent(e);
const bool input = e->text().contains(QRegExp("[A-Za-z0-9_ \\.\\$]"));
const bool input = e->text().contains(QRegularExpression("[A-Za-z0-9_ \\.\\$]"));
const bool deletion = key == Qt::Key_Delete ||
key == Qt::Key_Backspace;
const bool arrows = key == Qt::Key_Right ||
Expand Down
4 changes: 2 additions & 2 deletions src/app/GUI/Expressions/expressionhighlighter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,10 +142,10 @@ void ExpressionHighlighter::highlightBlock(const QString &text) {
int min = match.capturedStart(2);
for(int j = 0; j < subPath.count() - 1; j++) {
const auto& jObj = subPath.at(j);
min += jObj.count() + 1;
min += jObj.size() + 1;
}
const auto& lastObjPath = subPath.last();
const int max = min + lastObjPath.count();
const int max = min + lastObjPath.size();
const bool autocomplete = mCursorPos >= min && mCursorPos <= max;
const auto obj = mSearchCtxt->ca_findPropertyWithPathRec(
0, subPath, autocomplete ? &completions : nullptr);
Expand Down
Loading
Loading