Compare commits
4 commits
748f4e84fa
...
3d4ebdb410
Author | SHA1 | Date | |
---|---|---|---|
3d4ebdb410 | |||
8e53bf6392 | |||
9123c7af3d | |||
b53657fef4 |
22 changed files with 71 additions and 1110 deletions
|
@ -1,7 +1,7 @@
|
|||
pkgname=qt5-rtp-platformtheme
|
||||
_pkgname=qt-rtp-platformtheme
|
||||
pkgver=0.3.1
|
||||
pkgrel=3
|
||||
pkgver=0.3.2
|
||||
pkgrel=1
|
||||
pkgdesc="A theme engine for Qt5"
|
||||
arch=(x86_64)
|
||||
url="https://github.com/rdnvndr/$pkgname"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
pkgname=qt6-rtp-platformtheme
|
||||
_pkgname=qt-rtp-platformtheme
|
||||
pkgver=0.3.1
|
||||
pkgrel=4
|
||||
pkgdesc="A theme engine for Qt5"
|
||||
pkgver=0.3.2
|
||||
pkgrel=1
|
||||
pkgdesc="A theme engine for Qt6"
|
||||
arch=(x86_64)
|
||||
url="https://github.com/rdnvndr/$pkgname"
|
||||
license=('GPL3')
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
pkgbase=qtcreator
|
||||
pkgname=(qtcreator qtcreator-devel)
|
||||
pkgver=14.0.2
|
||||
_commit=14.0
|
||||
pkgrel=5
|
||||
pkgver=15.0.1
|
||||
_commit=15.0
|
||||
pkgrel=1
|
||||
pkgdesc='Lightweight, cross-platform integrated development environment'
|
||||
arch=(x86_64)
|
||||
url='https://www.qt.io'
|
||||
|
@ -35,7 +35,8 @@ source=("fancymainwindow.patch"
|
|||
"appstackedpane.patch"
|
||||
"pylsp.patch"
|
||||
"pyindent.patch"
|
||||
"multitextcursor.patch")
|
||||
"multitextcursor.patch"
|
||||
"pythonlsp_open.patch")
|
||||
sha256sums=(SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
|
@ -47,6 +48,7 @@ sha256sums=(SKIP
|
|||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP)
|
||||
|
||||
groups=('modified')
|
||||
|
@ -74,8 +76,9 @@ prepare() {
|
|||
patch -d qt-creator -p1 < appstackedpane.patch
|
||||
patch -d qt-creator -p1 < fancymainwindow.patch
|
||||
patch -d qt-creator -p1 < pylsp.patch
|
||||
patch -d qt-creator -p1 < pyindent.patch
|
||||
# patch -d qt-creator -p1 < pyindent.patch
|
||||
patch -d qt-creator -p1 < multitextcursor.patch
|
||||
patch -d qt-creator -p1 < pythonlsp_open.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
index 29c84aec..c8b4394a 100644
|
||||
index 22e76bd2..ab2b89c6 100644
|
||||
--- a/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
+++ b/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
@@ -40,6 +40,8 @@
|
||||
@@ -43,6 +43,8 @@
|
||||
#include <QSpinBox>
|
||||
#include <QTabBar>
|
||||
#include <QTabWidget>
|
||||
|
@ -11,21 +11,17 @@ index 29c84aec..c8b4394a 100644
|
|||
#include <QTimer>
|
||||
#include <QToolButton>
|
||||
#include <QVBoxLayout>
|
||||
@@ -74,59 +76,6 @@ static QString msgAttachDebuggerTooltip(const QString &handleDescription = QStri
|
||||
@@ -78,48 +80,6 @@ static QString msgAttachDebuggerTooltip(const QString &handleDescription = QStri
|
||||
Tr::tr("Attach debugger to %1").arg(handleDescription);
|
||||
}
|
||||
|
||||
-class TabWidget : public QTabWidget
|
||||
-{
|
||||
- Q_OBJECT
|
||||
-public:
|
||||
- TabWidget(QWidget *parent = nullptr);
|
||||
-signals:
|
||||
- void contextMenuRequested(const QPoint &pos, int index);
|
||||
-protected:
|
||||
- bool eventFilter(QObject *object, QEvent *event) override;
|
||||
-
|
||||
-private:
|
||||
- void slotContextMenuRequested(const QPoint &pos);
|
||||
- bool eventFilter(QObject *object, QEvent *event) override;
|
||||
- int m_tabIndexForMiddleClick = -1;
|
||||
-};
|
||||
-
|
||||
|
@ -34,8 +30,6 @@ index 29c84aec..c8b4394a 100644
|
|||
-{
|
||||
- tabBar()->installEventFilter(this);
|
||||
- setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
- connect(this, &QWidget::customContextMenuRequested,
|
||||
- this, &TabWidget::slotContextMenuRequested);
|
||||
-}
|
||||
-
|
||||
-bool TabWidget::eventFilter(QObject *object, QEvent *event)
|
||||
|
@ -62,16 +56,11 @@ index 29c84aec..c8b4394a 100644
|
|||
- }
|
||||
- return QTabWidget::eventFilter(object, event);
|
||||
-}
|
||||
-
|
||||
-void TabWidget::slotContextMenuRequested(const QPoint &pos)
|
||||
-{
|
||||
- emit contextMenuRequested(pos, tabBar()->tabAt(pos));
|
||||
-}
|
||||
-
|
||||
AppOutputPane::RunControlTab::RunControlTab(RunControl *runControl, Core::OutputWindow *w) :
|
||||
runControl(runControl), window(w)
|
||||
{
|
||||
@@ -137,16 +86,15 @@ AppOutputPane::RunControlTab::RunControlTab(RunControl *runControl, Core::Output
|
||||
@@ -130,16 +90,15 @@ AppOutputPane::RunControlTab::RunControlTab(RunControl *runControl, Core::Output
|
||||
}
|
||||
|
||||
AppOutputPane::AppOutputPane() :
|
||||
|
@ -91,7 +80,7 @@ index 29c84aec..c8b4394a 100644
|
|||
m_handler(new ShowOutputTaskHandler(this,
|
||||
Tr::tr("Show &App Output"),
|
||||
Tr::tr("Show the output that generated this issue in Application Output."),
|
||||
@@ -203,18 +151,26 @@ AppOutputPane::AppOutputPane() :
|
||||
@@ -196,18 +155,22 @@ AppOutputPane::AppOutputPane() :
|
||||
formatterWidgetsLayout->setContentsMargins(QMargins());
|
||||
m_formatterWidget->setLayout(formatterWidgetsLayout);
|
||||
|
||||
|
@ -102,7 +91,12 @@ index 29c84aec..c8b4394a 100644
|
|||
+ connect(m_closeCurrentTabButton, &QToolButton::clicked, this, [this] {
|
||||
+ closeTab(m_tabWidget->currentIndex());
|
||||
+ });
|
||||
+
|
||||
|
||||
- m_tabWidget->setDocumentMode(true);
|
||||
- m_tabWidget->setTabsClosable(true);
|
||||
- m_tabWidget->setMovable(true);
|
||||
- connect(m_tabWidget, &QTabWidget::tabCloseRequested,
|
||||
- this, [this](int index) { closeTab(index); });
|
||||
+ m_tabComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
+ m_tabComboBox->addItem(Tr::tr("<no configuration>"));
|
||||
+ connect(m_tabComboBox, &QComboBox::activated,
|
||||
|
@ -110,24 +104,15 @@ index 29c84aec..c8b4394a 100644
|
|||
+ connect(m_tabWidget, &QStackedWidget::currentChanged,
|
||||
+ m_tabComboBox, &QComboBox::setCurrentIndex);
|
||||
|
||||
- m_tabWidget->setDocumentMode(true);
|
||||
- m_tabWidget->setTabsClosable(true);
|
||||
- m_tabWidget->setMovable(true);
|
||||
- connect(m_tabWidget, &QTabWidget::tabCloseRequested,
|
||||
- this, [this](int index) { closeTab(index); });
|
||||
+ // Spacer (?)
|
||||
|
||||
- connect(m_tabWidget, &QTabWidget::currentChanged,
|
||||
+ connect(m_tabWidget, &QStackedWidget::currentChanged,
|
||||
this, &AppOutputPane::tabChanged);
|
||||
- connect(m_tabWidget, &TabWidget::contextMenuRequested,
|
||||
- connect(m_tabWidget, &QWidget::customContextMenuRequested,
|
||||
- this, &AppOutputPane::contextMenuRequested);
|
||||
+// connect(m_tabWidget, &TabWidget::contextMenuRequested,
|
||||
+// this, &AppOutputPane::contextMenuRequested);
|
||||
|
||||
connect(SessionManager::instance(), &SessionManager::aboutToUnloadSession,
|
||||
this, &AppOutputPane::aboutToUnloadSession);
|
||||
@@ -281,9 +237,7 @@ const AppOutputPane::RunControlTab *AppOutputPane::tabFor(const QWidget *outputW
|
||||
@@ -276,9 +239,7 @@ const AppOutputPane::RunControlTab *AppOutputPane::tabFor(const QWidget *outputW
|
||||
void AppOutputPane::updateCloseActions()
|
||||
{
|
||||
const int tabCount = m_tabWidget->count();
|
||||
|
@ -138,7 +123,7 @@ index 29c84aec..c8b4394a 100644
|
|||
}
|
||||
|
||||
bool AppOutputPane::aboutToClose() const
|
||||
@@ -305,8 +259,8 @@ QWidget *AppOutputPane::outputWidget(QWidget *)
|
||||
@@ -300,8 +261,8 @@ QWidget *AppOutputPane::outputWidget(QWidget *)
|
||||
|
||||
QList<QWidget *> AppOutputPane::toolBarWidgets() const
|
||||
{
|
||||
|
@ -149,7 +134,7 @@ index 29c84aec..c8b4394a 100644
|
|||
}
|
||||
|
||||
void AppOutputPane::clearContents()
|
||||
@@ -418,7 +372,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
|
||||
@@ -414,7 +375,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
|
||||
// Update the title.
|
||||
const int tabIndex = m_tabWidget->indexOf(tab->window);
|
||||
QTC_ASSERT(tabIndex != -1, return);
|
||||
|
@ -158,7 +143,7 @@ index 29c84aec..c8b4394a 100644
|
|||
updateOutputFileName(tabIndex, rc);
|
||||
|
||||
tab->window->scrollToBottom();
|
||||
@@ -459,7 +413,12 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
|
||||
@@ -456,7 +417,12 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
|
||||
ow, updateBehaviorSettings);
|
||||
|
||||
m_runControlTabs.push_back(RunControlTab(rc, ow));
|
||||
|
@ -172,7 +157,7 @@ index 29c84aec..c8b4394a 100644
|
|||
updateOutputFileName(m_tabWidget->count() - 1, rc);
|
||||
qCDebug(appOutputLog) << "AppOutputPane::createNewOutputWindow: Adding tab for" << rc;
|
||||
updateCloseActions();
|
||||
@@ -642,7 +601,13 @@ void AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode)
|
||||
@@ -669,7 +635,13 @@ void AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode)
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -187,12 +172,13 @@ index 29c84aec..c8b4394a 100644
|
|||
delete window;
|
||||
|
||||
Utils::erase(m_runControlTabs, [runControl](const RunControlTab &t) {
|
||||
@@ -742,26 +707,6 @@ void AppOutputPane::tabChanged(int i)
|
||||
@@ -770,27 +742,6 @@ void AppOutputPane::tabChanged(int i)
|
||||
}
|
||||
}
|
||||
|
||||
-void AppOutputPane::contextMenuRequested(const QPoint &pos, int index)
|
||||
-void AppOutputPane::contextMenuRequested(const QPoint &pos)
|
||||
-{
|
||||
- const int index = m_tabWidget->tabBar()->tabAt(pos);
|
||||
- const QList<QAction *> actions = {m_closeCurrentTabAction, m_closeAllTabsAction, m_closeOtherTabsAction};
|
||||
- QAction *action = QMenu::exec(actions, m_tabWidget->mapToGlobal(pos), nullptr, m_tabWidget);
|
||||
- if (action == m_closeAllTabsAction) {
|
||||
|
@ -215,10 +201,10 @@ index 29c84aec..c8b4394a 100644
|
|||
{
|
||||
const RunControlTab * const tab = tabFor(runControl);
|
||||
diff --git a/src/plugins/projectexplorer/appoutputpane.h b/src/plugins/projectexplorer/appoutputpane.h
|
||||
index f7cbb653..e52b08d1 100644
|
||||
index 0b83ac29..123e901a 100644
|
||||
--- a/src/plugins/projectexplorer/appoutputpane.h
|
||||
+++ b/src/plugins/projectexplorer/appoutputpane.h
|
||||
@@ -17,6 +17,8 @@ QT_BEGIN_NAMESPACE
|
||||
@@ -16,6 +16,8 @@ QT_BEGIN_NAMESPACE
|
||||
class QToolButton;
|
||||
class QAction;
|
||||
class QPoint;
|
||||
|
@ -227,22 +213,21 @@ index f7cbb653..e52b08d1 100644
|
|||
QT_END_NAMESPACE
|
||||
|
||||
namespace Core { class OutputWindow; }
|
||||
@@ -29,7 +31,6 @@ class Project;
|
||||
@@ -27,7 +29,6 @@ class RunControl;
|
||||
namespace Internal {
|
||||
|
||||
class ShowOutputTaskHandler;
|
||||
-class TabWidget;
|
||||
|
||||
class AppOutputPane : public Core::IOutputPane
|
||||
{
|
||||
@@ -119,18 +120,17 @@ private:
|
||||
enum class AppOutputPaneMode { FlashOnOutput, PopupOnOutput, PopupOnFirstOutput };
|
||||
|
||||
@@ -136,17 +137,16 @@ private:
|
||||
void loadSettings();
|
||||
void storeSettings() const;
|
||||
|
||||
- TabWidget *m_tabWidget;
|
||||
+ QStackedWidget *m_tabWidget;
|
||||
QVector<RunControlTab> m_runControlTabs;
|
||||
int m_runControlCount = 0;
|
||||
QAction *m_stopAction;
|
||||
- QAction *m_closeCurrentTabAction;
|
||||
- QAction *m_closeAllTabsAction;
|
||||
|
|
28
qtcreator/qtcreator/pythonlsp_open.patch
Normal file
28
qtcreator/qtcreator/pythonlsp_open.patch
Normal file
|
@ -0,0 +1,28 @@
|
|||
diff --git a/src/plugins/python/pythoneditor.cpp b/src/plugins/python/pythoneditor.cpp
|
||||
index 5854b92d..acaf4132 100644
|
||||
--- a/src/plugins/python/pythoneditor.cpp
|
||||
+++ b/src/plugins/python/pythoneditor.cpp
|
||||
@@ -297,8 +297,7 @@ PythonDocument::PythonDocument()
|
||||
|
||||
void PythonDocument::updateCurrentPython()
|
||||
{
|
||||
- if (Core::DocumentModel::entryForDocument(this))
|
||||
- updatePython(detectPython(filePath()));
|
||||
+ updatePython(detectPython(filePath()));
|
||||
}
|
||||
|
||||
void PythonDocument::updatePython(const FilePath &python)
|
||||
diff --git a/src/plugins/python/pythonlanguageclient.cpp b/src/plugins/python/pythonlanguageclient.cpp
|
||||
index bbfb5c75..199702a8 100644
|
||||
--- a/src/plugins/python/pythonlanguageclient.cpp
|
||||
+++ b/src/plugins/python/pythonlanguageclient.cpp
|
||||
@@ -334,8 +337,7 @@ void PyLSConfigureAssistant::installPythonLanguageServer(const FilePath &python,
|
||||
void PyLSConfigureAssistant::openDocument(const FilePath &python, TextEditor::TextDocument *document)
|
||||
{
|
||||
resetEditorInfoBar(document);
|
||||
- if (!PythonSettings::pylsEnabled() || !python.exists()
|
||||
- || !Core::DocumentModel::entryForDocument(document)) {
|
||||
+ if (!PythonSettings::pylsEnabled() || !python.exists()) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
pkgbase=qtcreator
|
||||
pkgname=(qtcreator qtcreator-devel)
|
||||
pkgver=15.0.0
|
||||
_commit=15.0
|
||||
pkgrel=4
|
||||
pkgdesc='Lightweight, cross-platform integrated development environment'
|
||||
arch=(x86_64)
|
||||
url='https://www.qt.io'
|
||||
license=("Apache-2.0")
|
||||
depends=(qt6-tools qt6-svg qt6-quick3d qt6-webengine qt6-serialport qt6-shadertools qt6-5compat
|
||||
clang clazy yaml-cpp litehtml) # syntax-highlighting
|
||||
makedepends=(cmake llvm python clang)
|
||||
options=(docs)
|
||||
optdepends=('qt6-doc: integrated Qt documentation'
|
||||
'qt6-examples: welcome page examples'
|
||||
'qt6-translations: for other languages'
|
||||
'gdb: debugger'
|
||||
'cmake: cmake project support'
|
||||
'x11-ssh-askpass: ssh support'
|
||||
'git: git support'
|
||||
'mercurial: mercurial support'
|
||||
'bzr: bazaar support'
|
||||
'valgrind: analyze support'
|
||||
'perf: performer analyzer'
|
||||
'mlocate: locator filter')
|
||||
|
||||
source=("fancymainwindow.patch"
|
||||
"projectmodels.patch"
|
||||
"navigationwidget.patch"
|
||||
"breakpoint.patch"
|
||||
"attach.patch"
|
||||
"perf.patch"
|
||||
"doxygen.patch"
|
||||
"pythonproject.patch"
|
||||
"appstackedpane.patch"
|
||||
"pylsp.patch"
|
||||
"pyindent.patch"
|
||||
"multitextcursor.patch")
|
||||
sha256sums=(SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP
|
||||
SKIP)
|
||||
|
||||
groups=('modified')
|
||||
|
||||
prepare() {
|
||||
cd $srcdir
|
||||
|
||||
# git clone --branch ${_commit} --depth 1 --shallow-submodules git@github.com:qt-creator/qt-creator.git
|
||||
# cd qt-creator
|
||||
# git submodule update --init src/libs/3rdparty/googletest
|
||||
# git submodule update --init src/shared/qbs
|
||||
# git submodule update --init src/tools/perfparser
|
||||
# cd ..
|
||||
|
||||
git clone --branch ${_commit} --depth 1 --shallow-submodules --recurse-submodules git@github.com:qt-creator/qt-creator.git
|
||||
rm -r qt-creator/src/libs/qlitehtml/src/3rdparty
|
||||
|
||||
patch -d qt-creator -p1 < projectmodels.patch
|
||||
patch -d qt-creator -p1 < navigationwidget.patch
|
||||
patch -d qt-creator -p1 < breakpoint.patch
|
||||
patch -d qt-creator -p1 < attach.patch
|
||||
patch -d qt-creator -p1 < perf.patch
|
||||
patch -d qt-creator -p1 < doxygen.patch
|
||||
patch -d qt-creator -p1 < pythonproject.patch
|
||||
patch -d qt-creator -p1 < appstackedpane.patch
|
||||
patch -d qt-creator -p1 < fancymainwindow.patch
|
||||
patch -d qt-creator -p1 < pylsp.patch
|
||||
patch -d qt-creator -p1 < pyindent.patch
|
||||
patch -d qt-creator -p1 < multitextcursor.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
# Clang
|
||||
# export CC=/usr/bin/clang
|
||||
# export CXX=/usr/bin/clang++
|
||||
# export CXXFLAGS="-march=znver2 -mtune=znver2 -O2 -pipe -fno-plt -fexceptions \
|
||||
# -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
|
||||
# -fPIC -Qunused-arguments -flto=thin"
|
||||
# export CFLAGS="-march=znver2 -mtune=znver2 -O2 -pipe -fno-plt -fexceptions \
|
||||
# -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
|
||||
# -fPIC -Qunused-arguments -flto=thin"
|
||||
|
||||
|
||||
cmake -B build -S qt-creator \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBEXECDIR=lib \
|
||||
-DWITH_DOCS=ON \
|
||||
-DBUILD_DEVELOPER_DOCS=ON \
|
||||
-DBUILD_QBS=OFF \
|
||||
-DQTC_CLANG_BUILDMODE_MATCH=ON \
|
||||
-DCLANGTOOLING_LINK_CLANG_DYLIB=ON
|
||||
cmake --build build
|
||||
export QT_QPA_PLATFORMTHEME=""; cmake --build build --target docs
|
||||
}
|
||||
|
||||
package_qtcreator() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
# Install docs
|
||||
cp -r build/share/doc "$pkgdir"/usr/share
|
||||
|
||||
install -Dm644 qt-creator/LICENSE.GPL3-EXCEPT "$pkgdir"/usr/share/licenses/qtcreator/LICENSE.GPL3-EXCEPT
|
||||
}
|
||||
|
||||
package_qtcreator-devel() {
|
||||
pkgdesc+=' (development files)'
|
||||
depends=(qtcreator)
|
||||
optdepends=()
|
||||
|
||||
DESTDIR="$pkgdir" cmake --install build --component Devel
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
index 9bea0e0d..60c04f86 100644
|
||||
--- a/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
+++ b/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
@@ -160,6 +160,8 @@ AppOutputPane::AppOutputPane() :
|
||||
|
||||
setObjectName("AppOutputPane"); // Used in valgrind engine
|
||||
loadSettings();
|
||||
+ m_tabWidget->setStyleSheet("QTabBar::tab { height: 24px; }");
|
||||
+ m_tabWidget->setTabBarAutoHide(true);
|
||||
|
||||
// Rerun
|
||||
m_reRunButton->setIcon(Utils::Icons::RUN_SMALL_TOOLBAR.icon());
|
|
@ -1,244 +0,0 @@
|
|||
diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
index 22e76bd2..ab2b89c6 100644
|
||||
--- a/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
+++ b/src/plugins/projectexplorer/appoutputpane.cpp
|
||||
@@ -43,6 +43,8 @@
|
||||
#include <QSpinBox>
|
||||
#include <QTabBar>
|
||||
#include <QTabWidget>
|
||||
+#include <QStackedWidget>
|
||||
+#include <QComboBox>
|
||||
#include <QTimer>
|
||||
#include <QToolButton>
|
||||
#include <QVBoxLayout>
|
||||
@@ -78,48 +80,6 @@ static QString msgAttachDebuggerTooltip(const QString &handleDescription = QStri
|
||||
Tr::tr("Attach debugger to %1").arg(handleDescription);
|
||||
}
|
||||
|
||||
-class TabWidget : public QTabWidget
|
||||
-{
|
||||
-public:
|
||||
- TabWidget(QWidget *parent = nullptr);
|
||||
-
|
||||
-private:
|
||||
- bool eventFilter(QObject *object, QEvent *event) override;
|
||||
- int m_tabIndexForMiddleClick = -1;
|
||||
-};
|
||||
-
|
||||
-TabWidget::TabWidget(QWidget *parent)
|
||||
- : QTabWidget(parent)
|
||||
-{
|
||||
- tabBar()->installEventFilter(this);
|
||||
- setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
-}
|
||||
-
|
||||
-bool TabWidget::eventFilter(QObject *object, QEvent *event)
|
||||
-{
|
||||
- if (object == tabBar()) {
|
||||
- if (event->type() == QEvent::MouseButtonPress) {
|
||||
- auto *me = static_cast<QMouseEvent *>(event);
|
||||
- if (me->button() == Qt::MiddleButton) {
|
||||
- m_tabIndexForMiddleClick = tabBar()->tabAt(me->pos());
|
||||
- event->accept();
|
||||
- return true;
|
||||
- }
|
||||
- } else if (event->type() == QEvent::MouseButtonRelease) {
|
||||
- auto *me = static_cast<QMouseEvent *>(event);
|
||||
- if (me->button() == Qt::MiddleButton) {
|
||||
- int tab = tabBar()->tabAt(me->pos());
|
||||
- if (tab != -1 && tab == m_tabIndexForMiddleClick)
|
||||
- emit tabCloseRequested(tab);
|
||||
- m_tabIndexForMiddleClick = -1;
|
||||
- event->accept();
|
||||
- return true;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- return QTabWidget::eventFilter(object, event);
|
||||
-}
|
||||
-
|
||||
AppOutputPane::RunControlTab::RunControlTab(RunControl *runControl, Core::OutputWindow *w) :
|
||||
runControl(runControl), window(w)
|
||||
{
|
||||
@@ -130,16 +90,15 @@ AppOutputPane::RunControlTab::RunControlTab(RunControl *runControl, Core::Output
|
||||
}
|
||||
|
||||
AppOutputPane::AppOutputPane() :
|
||||
- m_tabWidget(new TabWidget),
|
||||
+ m_tabWidget(new QStackedWidget),
|
||||
m_stopAction(new QAction(Tr::tr("Stop"), this)),
|
||||
- m_closeCurrentTabAction(new QAction(Tr::tr("Close Tab"), this)),
|
||||
- m_closeAllTabsAction(new QAction(Tr::tr("Close All Tabs"), this)),
|
||||
- m_closeOtherTabsAction(new QAction(Tr::tr("Close Other Tabs"), this)),
|
||||
m_reRunButton(new QToolButton),
|
||||
m_stopButton(new QToolButton),
|
||||
m_attachButton(new QToolButton),
|
||||
m_settingsButton(new QToolButton),
|
||||
m_formatterWidget(new QWidget),
|
||||
+ m_tabComboBox(new QComboBox),
|
||||
+ m_closeCurrentTabButton(new QToolButton),
|
||||
m_handler(new ShowOutputTaskHandler(this,
|
||||
Tr::tr("Show &App Output"),
|
||||
Tr::tr("Show the output that generated this issue in Application Output."),
|
||||
@@ -196,18 +155,22 @@ AppOutputPane::AppOutputPane() :
|
||||
formatterWidgetsLayout->setContentsMargins(QMargins());
|
||||
m_formatterWidget->setLayout(formatterWidgetsLayout);
|
||||
|
||||
- // Spacer (?)
|
||||
+ m_closeCurrentTabButton->setToolTip(Tr::tr("Close output configuration."));
|
||||
+ m_closeCurrentTabButton->setIcon(Utils::Icons::CLOSE_TOOLBAR.icon());
|
||||
+ m_closeCurrentTabButton->setEnabled(false);
|
||||
+ connect(m_closeCurrentTabButton, &QToolButton::clicked, this, [this] {
|
||||
+ closeTab(m_tabWidget->currentIndex());
|
||||
+ });
|
||||
|
||||
- m_tabWidget->setDocumentMode(true);
|
||||
- m_tabWidget->setTabsClosable(true);
|
||||
- m_tabWidget->setMovable(true);
|
||||
- connect(m_tabWidget, &QTabWidget::tabCloseRequested,
|
||||
- this, [this](int index) { closeTab(index); });
|
||||
+ m_tabComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
+ m_tabComboBox->addItem(Tr::tr("<no configuration>"));
|
||||
+ connect(m_tabComboBox, &QComboBox::activated,
|
||||
+ m_tabWidget, &QStackedWidget::setCurrentIndex);
|
||||
+ connect(m_tabWidget, &QStackedWidget::currentChanged,
|
||||
+ m_tabComboBox, &QComboBox::setCurrentIndex);
|
||||
|
||||
- connect(m_tabWidget, &QTabWidget::currentChanged,
|
||||
+ connect(m_tabWidget, &QStackedWidget::currentChanged,
|
||||
this, &AppOutputPane::tabChanged);
|
||||
- connect(m_tabWidget, &QWidget::customContextMenuRequested,
|
||||
- this, &AppOutputPane::contextMenuRequested);
|
||||
|
||||
connect(SessionManager::instance(), &SessionManager::aboutToUnloadSession,
|
||||
this, &AppOutputPane::aboutToUnloadSession);
|
||||
@@ -276,9 +239,7 @@ const AppOutputPane::RunControlTab *AppOutputPane::tabFor(const QWidget *outputW
|
||||
void AppOutputPane::updateCloseActions()
|
||||
{
|
||||
const int tabCount = m_tabWidget->count();
|
||||
- m_closeCurrentTabAction->setEnabled(tabCount > 0);
|
||||
- m_closeAllTabsAction->setEnabled(tabCount > 0);
|
||||
- m_closeOtherTabsAction->setEnabled(tabCount > 1);
|
||||
+ m_closeCurrentTabButton->setEnabled(tabCount > 0);
|
||||
}
|
||||
|
||||
bool AppOutputPane::aboutToClose() const
|
||||
@@ -300,8 +261,8 @@ QWidget *AppOutputPane::outputWidget(QWidget *)
|
||||
|
||||
QList<QWidget *> AppOutputPane::toolBarWidgets() const
|
||||
{
|
||||
- return QList<QWidget *>{m_reRunButton, m_stopButton, m_attachButton, m_settingsButton,
|
||||
- m_formatterWidget} + IOutputPane::toolBarWidgets();
|
||||
+ return QList<QWidget *>{m_tabComboBox, m_closeCurrentTabButton, m_reRunButton, m_stopButton,
|
||||
+ m_attachButton, m_settingsButton, m_formatterWidget} + IOutputPane::toolBarWidgets();
|
||||
}
|
||||
|
||||
void AppOutputPane::clearContents()
|
||||
@@ -414,7 +375,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
|
||||
// Update the title.
|
||||
const int tabIndex = m_tabWidget->indexOf(tab->window);
|
||||
QTC_ASSERT(tabIndex != -1, return);
|
||||
- m_tabWidget->setTabText(tabIndex, rc->displayName());
|
||||
+ m_tabComboBox->setItemText(tabIndex, rc->displayName());
|
||||
updateOutputFileName(tabIndex, rc);
|
||||
|
||||
tab->window->scrollToBottom();
|
||||
@@ -456,7 +417,12 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc)
|
||||
ow, updateBehaviorSettings);
|
||||
|
||||
m_runControlTabs.push_back(RunControlTab(rc, ow));
|
||||
- m_tabWidget->addTab(ow, rc->displayName());
|
||||
+ if (m_tabWidget->count() > 0) {
|
||||
+ m_tabComboBox->addItem(rc->displayName());
|
||||
+ } else {
|
||||
+ m_tabComboBox->setItemText(0, rc->displayName());
|
||||
+ }
|
||||
+ m_tabWidget->addWidget(ow);
|
||||
updateOutputFileName(m_tabWidget->count() - 1, rc);
|
||||
qCDebug(appOutputLog) << "AppOutputPane::createNewOutputWindow: Adding tab for" << rc;
|
||||
updateCloseActions();
|
||||
@@ -669,7 +635,13 @@ void AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode)
|
||||
return;
|
||||
}
|
||||
|
||||
- m_tabWidget->removeTab(tabIndex);
|
||||
+ m_tabWidget->removeWidget(tabWidget);
|
||||
+ if (m_tabWidget->count() > 0) {
|
||||
+ m_tabComboBox->removeItem(tabIndex);
|
||||
+ } else {
|
||||
+ m_tabComboBox->setItemText(tabIndex, Tr::tr("<no configuration>"));
|
||||
+ m_tabComboBox->setCurrentIndex(0);
|
||||
+ }
|
||||
delete window;
|
||||
|
||||
Utils::erase(m_runControlTabs, [runControl](const RunControlTab &t) {
|
||||
@@ -770,27 +742,6 @@ void AppOutputPane::tabChanged(int i)
|
||||
}
|
||||
}
|
||||
|
||||
-void AppOutputPane::contextMenuRequested(const QPoint &pos)
|
||||
-{
|
||||
- const int index = m_tabWidget->tabBar()->tabAt(pos);
|
||||
- const QList<QAction *> actions = {m_closeCurrentTabAction, m_closeAllTabsAction, m_closeOtherTabsAction};
|
||||
- QAction *action = QMenu::exec(actions, m_tabWidget->mapToGlobal(pos), nullptr, m_tabWidget);
|
||||
- if (action == m_closeAllTabsAction) {
|
||||
- closeTabs(AppOutputPane::CloseTabWithPrompt);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- const int currentIdx = index != -1 ? index : m_tabWidget->currentIndex();
|
||||
- if (action == m_closeCurrentTabAction) {
|
||||
- if (currentIdx >= 0)
|
||||
- closeTab(currentIdx);
|
||||
- } else if (action == m_closeOtherTabsAction) {
|
||||
- for (int t = m_tabWidget->count() - 1; t >= 0; t--)
|
||||
- if (t != currentIdx)
|
||||
- closeTab(t);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
void AppOutputPane::runControlFinished(RunControl *runControl)
|
||||
{
|
||||
const RunControlTab * const tab = tabFor(runControl);
|
||||
diff --git a/src/plugins/projectexplorer/appoutputpane.h b/src/plugins/projectexplorer/appoutputpane.h
|
||||
index 0b83ac29..123e901a 100644
|
||||
--- a/src/plugins/projectexplorer/appoutputpane.h
|
||||
+++ b/src/plugins/projectexplorer/appoutputpane.h
|
||||
@@ -16,6 +16,8 @@ QT_BEGIN_NAMESPACE
|
||||
class QToolButton;
|
||||
class QAction;
|
||||
class QPoint;
|
||||
+class QStackedWidget;
|
||||
+class QComboBox;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Core { class OutputWindow; }
|
||||
@@ -27,7 +29,6 @@ class RunControl;
|
||||
namespace Internal {
|
||||
|
||||
class ShowOutputTaskHandler;
|
||||
-class TabWidget;
|
||||
|
||||
enum class AppOutputPaneMode { FlashOnOutput, PopupOnOutput, PopupOnFirstOutput };
|
||||
|
||||
@@ -136,17 +137,16 @@ private:
|
||||
void loadSettings();
|
||||
void storeSettings() const;
|
||||
|
||||
- TabWidget *m_tabWidget;
|
||||
+ QStackedWidget *m_tabWidget;
|
||||
QVector<RunControlTab> m_runControlTabs;
|
||||
QAction *m_stopAction;
|
||||
- QAction *m_closeCurrentTabAction;
|
||||
- QAction *m_closeAllTabsAction;
|
||||
- QAction *m_closeOtherTabsAction;
|
||||
QToolButton *m_reRunButton;
|
||||
QToolButton *m_stopButton;
|
||||
QToolButton *m_attachButton;
|
||||
QToolButton * const m_settingsButton;
|
||||
QWidget *m_formatterWidget;
|
||||
+ QComboBox *m_tabComboBox;
|
||||
+ QToolButton *m_closeCurrentTabButton;
|
||||
ShowOutputTaskHandler * const m_handler;
|
||||
AppOutputSettings m_settings;
|
||||
};
|
|
@ -1,29 +0,0 @@
|
|||
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
|
||||
index cf82aa6e..9fa6050b 100644
|
||||
--- a/src/plugins/projectexplorer/projectexplorer.cpp
|
||||
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
|
||||
@@ -119,6 +119,7 @@
|
||||
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include <extensionsystem/pluginspec.h>
|
||||
+#include <extensionsystem/invoker.h>
|
||||
|
||||
#include <texteditor/findinfiles.h>
|
||||
#include <texteditor/tabsettings.h>
|
||||
@@ -2970,6 +2971,16 @@ void ProjectExplorerPlugin::runProject(Project *pro, Id mode, const bool forceSk
|
||||
{
|
||||
if (!pro)
|
||||
return;
|
||||
+
|
||||
+ for (auto *rc : ProjectExplorerPlugin::instance()->allRunControls()) {
|
||||
+ if (rc->isRunning() && rc->project() == pro &&
|
||||
+ mode == ProjectExplorer::Constants::DEBUG_RUN_MODE) {
|
||||
+ ExtensionSystem::Invoker<void>(
|
||||
+ ExtensionSystem::PluginManager::getObjectByName("DebuggerPlugin"),
|
||||
+ "attachExternalApplication", rc);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if (Target *target = pro->activeTarget())
|
||||
if (RunConfiguration *rc = target->activeRunConfiguration())
|
|
@ -1,155 +0,0 @@
|
|||
diff -cr a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
|
||||
*** a/src/plugins/debugger/debuggerplugin.cpp 2022-10-25 00:00:23.378435033 +0300
|
||||
--- b/src/plugins/debugger/debuggerplugin.cpp 2022-10-24 23:56:32.034431011 +0300
|
||||
***************
|
||||
*** 635,640 ****
|
||||
--- 635,642 ----
|
||||
int lineNumber, QMenu *menu);
|
||||
|
||||
void setOrRemoveBreakpoint();
|
||||
+ void setMessageTracepoint();
|
||||
+ void editBreakpoint();
|
||||
void enableOrDisableBreakpoint();
|
||||
void updateDebugWithoutDeployMenu();
|
||||
|
||||
***************
|
||||
*** 688,693 ****
|
||||
--- 689,696 ----
|
||||
QAction m_setOrRemoveBreakpointAction{Tr::tr("Set or Remove Breakpoint")};
|
||||
QAction m_enableOrDisableBreakpointAction{Tr::tr("Enable or Disable Breakpoint")};
|
||||
QAction m_reloadDebuggingHelpersAction{Tr::tr("Reload Debugging Helpers")};
|
||||
+ QAction m_setMessageTracepointAction{tr("Set Message Tracepoint...")};
|
||||
+ QAction m_editBreakpoint{tr("Edit Breakpoint...")};
|
||||
|
||||
BreakpointManager m_breakpointManager;
|
||||
QString m_lastPermanentStatusMessage;
|
||||
***************
|
||||
*** 1092,1103 ****
|
||||
--- 1095,1118 ----
|
||||
connect(&m_setOrRemoveBreakpointAction, &QAction::triggered,
|
||||
this, &DebuggerPluginPrivate::setOrRemoveBreakpoint);
|
||||
|
||||
+ cmd = ActionManager::registerAction(&m_setMessageTracepointAction, "Debugger.SetMessageTracepoint");
|
||||
+ debugMenu->addAction(cmd);
|
||||
+ cmd->setDefaultKeySequence(QKeySequence(tr("F8")));
|
||||
+ connect(&m_setMessageTracepointAction, &QAction::triggered,
|
||||
+ this, &DebuggerPluginPrivate::setMessageTracepoint);
|
||||
+
|
||||
cmd = ActionManager::registerAction(&m_enableOrDisableBreakpointAction,
|
||||
"Debugger.EnableOrDisableBreakpoint");
|
||||
cmd->setDefaultKeySequence(QKeySequence(useMacShortcuts ? Tr::tr("Ctrl+F8") : Tr::tr("Ctrl+F9")));
|
||||
debugMenu->addAction(cmd);
|
||||
connect(&m_enableOrDisableBreakpointAction, &QAction::triggered,
|
||||
this, &DebuggerPluginPrivate::enableOrDisableBreakpoint);
|
||||
+
|
||||
+ cmd = ActionManager::registerAction(&m_editBreakpoint, "EditBreakpoint");
|
||||
+ cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Shift+F9")));
|
||||
+ debugMenu->addAction(cmd);
|
||||
+ connect(&m_editBreakpoint, &QAction::triggered,
|
||||
+ this, &DebuggerPluginPrivate::editBreakpoint);
|
||||
|
||||
debugMenu->addSeparator();
|
||||
|
||||
***************
|
||||
*** 1494,1500 ****
|
||||
--- 1509,1517 ----
|
||||
|
||||
m_watchAction.setEnabled(state != DebuggerFinished && state != DebuggerNotReady);
|
||||
m_setOrRemoveBreakpointAction.setEnabled(true);
|
||||
+ m_setMessageTracepointAction.setEnabled(true);
|
||||
m_enableOrDisableBreakpointAction.setEnabled(true);
|
||||
+ m_editBreakpoint.setEnabled(true);
|
||||
}
|
||||
|
||||
void DebuggerPluginPrivate::onStartupProjectChanged(Project *project)
|
||||
***************
|
||||
*** 1827,1833 ****
|
||||
--- 1844,1852 ----
|
||||
{
|
||||
BaseTextEditor *textEditor = qobject_cast<BaseTextEditor *>(editor);
|
||||
m_setOrRemoveBreakpointAction.setEnabled(textEditor != nullptr);
|
||||
+ m_setMessageTracepointAction.setEnabled(textEditor != nullptr);
|
||||
m_enableOrDisableBreakpointAction.setEnabled(textEditor != nullptr);
|
||||
+ m_editBreakpoint.setEnabled(textEditor != nullptr);
|
||||
}
|
||||
|
||||
void DebuggerPluginPrivate::requestContextMenu(TextEditorWidget *widget,
|
||||
***************
|
||||
*** 1923,1928 ****
|
||||
--- 1942,1963 ----
|
||||
}
|
||||
}
|
||||
|
||||
+ void DebuggerPluginPrivate::editBreakpoint()
|
||||
+ {
|
||||
+ const BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor();
|
||||
+ QTC_ASSERT(textEditor, return);
|
||||
+ const int lineNumber = textEditor->currentLine();
|
||||
+ ContextData location = getLocationContext(textEditor->textDocument(), lineNumber);
|
||||
+ if (location.isValid()) {
|
||||
+ GlobalBreakpoint gbp = BreakpointManager::findBreakpointFromContext(location);
|
||||
+ if (!gbp) {
|
||||
+ BreakpointManager::setOrRemoveBreakpoint(location);
|
||||
+ gbp = BreakpointManager::findBreakpointFromContext(location);
|
||||
+ }
|
||||
+ BreakpointManager::editBreakpoint(gbp, ICore::dialogParent());
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
void DebuggerPluginPrivate::setOrRemoveBreakpoint()
|
||||
{
|
||||
const BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor();
|
||||
***************
|
||||
*** 1933,1938 ****
|
||||
--- 1968,2008 ----
|
||||
BreakpointManager::setOrRemoveBreakpoint(location);
|
||||
}
|
||||
|
||||
+ void DebuggerPluginPrivate::setMessageTracepoint()
|
||||
+ {
|
||||
+ const BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor();
|
||||
+ QTC_ASSERT(textEditor, return);
|
||||
+ const int lineNumber = textEditor->currentLine();
|
||||
+ ContextData location = getLocationContext(textEditor->textDocument(), lineNumber);
|
||||
+ if (location.isValid()) {
|
||||
+ GlobalBreakpoint gbp = BreakpointManager::findBreakpointFromContext(location);
|
||||
+ if (gbp)
|
||||
+ return;
|
||||
+
|
||||
+ QString message;
|
||||
+ if (location.type == LocationByAddress) {
|
||||
+ //: Message tracepoint: Address hit.
|
||||
+ message = tr("0x%1 hit").arg(location.address, 0, 16);
|
||||
+ } else {
|
||||
+ //: Message tracepoint: %1 file, %2 line %3 function hit.
|
||||
+ message = tr("%1:%2 %3() hit").arg(location.fileName.fileName()).
|
||||
+ arg(location.textPosition.line).
|
||||
+ arg(cppFunctionAt(location.fileName, location.textPosition.line));
|
||||
+ }
|
||||
+ QInputDialog dialog; // Create wide input dialog.
|
||||
+ dialog.setWindowFlags(dialog.windowFlags()
|
||||
+ & ~(Qt::MSWindowsFixedSizeDialogHint));
|
||||
+ dialog.resize(600, dialog.height());
|
||||
+ dialog.setWindowTitle(tr("Add Message Tracepoint"));
|
||||
+ dialog.setLabelText (tr("Message:"));
|
||||
+ dialog.setTextValue(message);
|
||||
+ if (dialog.exec() != QDialog::Accepted || dialog.textValue().isEmpty())
|
||||
+ return;
|
||||
+ message = dialog.textValue();
|
||||
+ BreakpointManager::setOrRemoveBreakpoint(location, message);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
void DebuggerPluginPrivate::enableOrDisableBreakpoint()
|
||||
{
|
||||
const BaseTextEditor *textEditor = BaseTextEditor::currentTextEditor();
|
||||
***************
|
||||
*** 1964,1969 ****
|
||||
--- 2034,2040 ----
|
||||
|
||||
m_watchAction.setEnabled(false);
|
||||
m_setOrRemoveBreakpointAction.setEnabled(false);
|
||||
+ m_setMessageTracepointAction.setEnabled(false);
|
||||
m_enableOrDisableBreakpointAction.setEnabled(false);
|
||||
//m_snapshotAction.setEnabled(false);
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
diff --git a/src/plugins/cppeditor/doxygengenerator.cpp b/src/plugins/cppeditor/doxygengenerator.cpp
|
||||
index c77f3de7..04df411d 100644
|
||||
--- a/src/plugins/cppeditor/doxygengenerator.cpp
|
||||
+++ b/src/plugins/cppeditor/doxygengenerator.cpp
|
||||
@@ -116,8 +116,10 @@ QString DoxygenGenerator::generate(QTextCursor cursor, DeclarationAST *decl)
|
||||
assignCommentOffset(cursor);
|
||||
|
||||
QString comment;
|
||||
- writeNewLine(&comment);
|
||||
- writeContinuation(&comment);
|
||||
+ if (m_style != CppStyleA) {
|
||||
+ writeNewLine(&comment);
|
||||
+ writeContinuation(&comment);
|
||||
+ }
|
||||
|
||||
if (decltr
|
||||
&& decltr->core_declarator
|
||||
@@ -226,7 +228,7 @@ QString DoxygenGenerator::commandSpelling(Command command)
|
||||
void DoxygenGenerator::writeEnd(QString *comment) const
|
||||
{
|
||||
if (m_style == CppStyleA)
|
||||
- comment->append(QLatin1String("///"));
|
||||
+ comment->chop(1);
|
||||
else if (m_style == CppStyleB)
|
||||
comment->append(QLatin1String("//!"));
|
||||
else
|
|
@ -1,260 +0,0 @@
|
|||
diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp
|
||||
index 4f282659..d824a459 100644
|
||||
--- a/src/libs/utils/fancymainwindow.cpp
|
||||
+++ b/src/libs/utils/fancymainwindow.cpp
|
||||
@@ -110,6 +110,12 @@ public:
|
||||
|
||||
QVariant saveState() const;
|
||||
void restoreState(const QVariant &data);
|
||||
+
|
||||
+ bool eventFilter(QObject *, QEvent *event) override;
|
||||
+ void enterEvent(QEnterEvent *event) override;
|
||||
+ void leaveEvent(QEvent *event) override;
|
||||
+ void handleMouseTimeout();
|
||||
+ void handleToplevelChanged(bool floating);
|
||||
|
||||
FancyMainWindow *q;
|
||||
|
||||
@@ -124,6 +130,9 @@ private:
|
||||
QWidget *m_hiddenInnerWidget = nullptr;
|
||||
int m_hiddenInnerWidgetHeight = 0;
|
||||
TitleBarWidget *m_titleBar;
|
||||
+ QTimer m_timer;
|
||||
+ QPoint m_startPos;
|
||||
+
|
||||
};
|
||||
|
||||
// Stolen from QDockWidgetTitleButton
|
||||
@@ -190,30 +199,19 @@ void DockWidgetTitleButton::paintEvent(QPaintEvent *)
|
||||
style()->drawComplexControl(QStyle::CC_ToolButton, &opt, &p, this);
|
||||
}
|
||||
|
||||
-class TitleBarWidget : public StyledBar
|
||||
+class TitleBarWidget : public QWidget
|
||||
{
|
||||
public:
|
||||
- TitleBarWidget(DockWidget *parent)
|
||||
- : StyledBar(parent)
|
||||
- , q(parent)
|
||||
+ TitleBarWidget(DockWidget *parent, const QStyleOptionDockWidget &opt)
|
||||
+ : QWidget(parent), q(parent), m_active(true)
|
||||
{
|
||||
m_titleLabel = new QLabel(this);
|
||||
|
||||
- m_collapseButton = new DockWidgetTitleButton(this);
|
||||
- updateCollapse();
|
||||
- connect(m_collapseButton,
|
||||
- &DockWidgetTitleButton::clicked,
|
||||
- this,
|
||||
- &TitleBarWidget::toggleCollapse);
|
||||
- connect(q->q, &FancyMainWindow::dockWidgetsChanged, this, &TitleBarWidget::updateCollapse);
|
||||
- connect(q, &DockWidget::collapseChanged, this, &TitleBarWidget::updateCollapse);
|
||||
-
|
||||
m_floatButton = new DockWidgetTitleButton(this);
|
||||
- m_floatButton->setIcon(
|
||||
- Icon({{":/utils/images/app-on-top.png", Theme::IconsBaseColor}}).icon());
|
||||
+ m_floatButton->setIcon(q->style()->standardIcon(QStyle::SP_TitleBarNormalButton, &opt, q));
|
||||
|
||||
m_closeButton = new DockWidgetTitleButton(this);
|
||||
- m_closeButton->setIcon(Icons::CLOSE_TOOLBAR.icon());
|
||||
+ m_closeButton->setIcon(q->style()->standardIcon(QStyle::SP_TitleBarCloseButton, &opt, q));
|
||||
|
||||
#ifndef QT_NO_ACCESSIBILITY
|
||||
m_floatButton->setAccessibleName(QDockWidget::tr("Float"));
|
||||
@@ -222,33 +220,39 @@ public:
|
||||
m_closeButton->setAccessibleDescription(QDockWidget::tr("Closes the dock widget"));
|
||||
#endif
|
||||
|
||||
+ setActive(false);
|
||||
+
|
||||
+ const int minWidth = 10;
|
||||
+ const int maxWidth = 10000;
|
||||
+ const int inactiveHeight = 0;
|
||||
+ const int activeHeight = m_closeButton->sizeHint().height() + 2;
|
||||
+
|
||||
+ m_minimumInactiveSize = QSize(minWidth, inactiveHeight);
|
||||
+ m_maximumInactiveSize = QSize(maxWidth, inactiveHeight);
|
||||
+ m_minimumActiveSize = QSize(minWidth, activeHeight);
|
||||
+ m_maximumActiveSize = QSize(maxWidth, activeHeight);
|
||||
+
|
||||
auto layout = new QHBoxLayout(this);
|
||||
layout->setSpacing(0);
|
||||
layout->setContentsMargins(4, 0, 0, 0);
|
||||
- layout->addWidget(m_collapseButton);
|
||||
layout->addWidget(m_titleLabel);
|
||||
layout->addStretch();
|
||||
layout->addWidget(m_floatButton);
|
||||
layout->addWidget(m_closeButton);
|
||||
setLayout(layout);
|
||||
|
||||
- m_closeButton->setVisible(false);
|
||||
- m_floatButton->setVisible(false);
|
||||
- connect(parent, &QDockWidget::featuresChanged, this, [this] { updateChildren(); });
|
||||
+ setProperty("managed_titlebar", 1);
|
||||
+
|
||||
+ connect(parent, &QDockWidget::featuresChanged, this, [this, parent] {
|
||||
+ m_closeButton->setVisible(parent->features().testFlag(QDockWidget::DockWidgetClosable));
|
||||
+ m_floatButton->setVisible(parent->features().testFlag(QDockWidget::DockWidgetFloatable));
|
||||
+ });
|
||||
}
|
||||
|
||||
void enterEvent(QEnterEvent *event) override
|
||||
{
|
||||
- m_hovered = true;
|
||||
+ setActive(true);
|
||||
QWidget::enterEvent(event);
|
||||
- updateChildren();
|
||||
- }
|
||||
-
|
||||
- void leaveEvent(QEvent *event) override
|
||||
- {
|
||||
- m_hovered = false;
|
||||
- QWidget::leaveEvent(event);
|
||||
- updateChildren();
|
||||
}
|
||||
|
||||
void setActive(bool on)
|
||||
@@ -259,52 +263,47 @@ public:
|
||||
|
||||
void updateChildren()
|
||||
{
|
||||
- setVisible(m_active);
|
||||
- m_floatButton->setVisible(m_hovered
|
||||
+ bool clickable = isClickable();
|
||||
+ m_titleLabel->setVisible(clickable);
|
||||
+
|
||||
+ m_floatButton->setVisible(clickable
|
||||
&& q->features().testFlag(QDockWidget::DockWidgetFloatable));
|
||||
- m_closeButton->setVisible(m_hovered
|
||||
+ m_closeButton->setVisible(clickable
|
||||
&& q->features().testFlag(QDockWidget::DockWidgetClosable));
|
||||
- updateCollapse();
|
||||
}
|
||||
|
||||
- QSize sizeHint() const override
|
||||
+ bool isClickable() const
|
||||
{
|
||||
- ensurePolished();
|
||||
- return m_active ? QSize(titleMaxWidth, StyledBar::minimumHeight())
|
||||
- : QSize(titleMaxWidth, titleInactiveHeight);
|
||||
+ return m_active;
|
||||
}
|
||||
|
||||
- QSize minimumSizeHint() const override
|
||||
+ QSize sizeHint() const override
|
||||
{
|
||||
ensurePolished();
|
||||
- return m_active ? QSize(titleMinWidth, StyledBar::minimumHeight())
|
||||
- : QSize(titleMinWidth, titleInactiveHeight);
|
||||
+ return isClickable() ? m_maximumActiveSize : m_maximumInactiveSize;
|
||||
}
|
||||
|
||||
- void toggleCollapse() { q->setCollapsed(!q->isCollapsed()); }
|
||||
-
|
||||
- void updateCollapse()
|
||||
+ QSize minimumSizeHint() const override
|
||||
{
|
||||
- const bool supported = q->supportsCollapse();
|
||||
- m_collapseButton->setVisible(supported);
|
||||
- if (q->isCollapsed())
|
||||
- m_collapseButton->setIcon(Icons::NEXT_TOOLBAR.icon());
|
||||
- else
|
||||
- m_collapseButton->setIcon(Icons::ARROW_DOWN_TOOLBAR.icon());
|
||||
+ ensurePolished();
|
||||
+ return isClickable() ? m_minimumActiveSize : m_minimumInactiveSize;
|
||||
}
|
||||
|
||||
private:
|
||||
DockWidget *q;
|
||||
- bool m_active = true;
|
||||
- bool m_hovered = false;
|
||||
+ bool m_active;
|
||||
+ QSize m_minimumActiveSize;
|
||||
+ QSize m_maximumActiveSize;
|
||||
+ QSize m_minimumInactiveSize;
|
||||
+ QSize m_maximumInactiveSize;
|
||||
|
||||
public:
|
||||
QLabel *m_titleLabel;
|
||||
- DockWidgetTitleButton *m_collapseButton;
|
||||
DockWidgetTitleButton *m_floatButton;
|
||||
DockWidgetTitleButton *m_closeButton;
|
||||
};
|
||||
|
||||
+
|
||||
DockWidget::DockWidget(QWidget *inner, FancyMainWindow *parent, bool immutable)
|
||||
: QDockWidget(parent)
|
||||
, q(parent)
|
||||
@@ -321,7 +320,7 @@ DockWidget::DockWidget(QWidget *inner, FancyMainWindow *parent, bool immutable)
|
||||
|
||||
QStyleOptionDockWidget opt;
|
||||
initStyleOption(&opt);
|
||||
- m_titleBar = new TitleBarWidget(this);
|
||||
+ m_titleBar = new TitleBarWidget(this, opt);
|
||||
m_titleBar->m_titleLabel->setText(title);
|
||||
setTitleBarWidget(m_titleBar);
|
||||
|
||||
@@ -330,6 +329,13 @@ DockWidget::DockWidget(QWidget *inner, FancyMainWindow *parent, bool immutable)
|
||||
return;
|
||||
}
|
||||
|
||||
+ m_timer.setSingleShot(true);
|
||||
+ m_timer.setInterval(500);
|
||||
+
|
||||
+ connect(&m_timer, &QTimer::timeout, this, &DockWidget::handleMouseTimeout);
|
||||
+ connect(this, &QDockWidget::topLevelChanged, this, &DockWidget::handleToplevelChanged);
|
||||
+
|
||||
+ m_titleBar->setActive(false);
|
||||
connect(toggleViewAction(), &QAction::triggered, this, [this] {
|
||||
if (isVisible())
|
||||
raise();
|
||||
@@ -451,6 +457,49 @@ void DockWidget::setCollapsed(bool collapse)
|
||||
emit collapseChanged();
|
||||
}
|
||||
|
||||
+bool DockWidget::eventFilter(QObject *, QEvent *event)
|
||||
+{
|
||||
+ if (event->type() == QEvent::MouseMove) {
|
||||
+ auto me = static_cast<QMouseEvent *>(event);
|
||||
+ int y = me->pos().y();
|
||||
+ int x = me->pos().x();
|
||||
+ int h = qMin(8, m_titleBar->m_floatButton->height());
|
||||
+ if (!isFloating() && widget() && 0 <= x && x < widget()->width() && 0 <= y && y <= h) {
|
||||
+ m_timer.start();
|
||||
+ m_startPos = mapToGlobal(me->pos());
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+void DockWidget::enterEvent(QEnterEvent *event)
|
||||
+{
|
||||
+ QApplication::instance()->installEventFilter(this);
|
||||
+ QDockWidget::enterEvent(event);
|
||||
+}
|
||||
+
|
||||
+void DockWidget::leaveEvent(QEvent *event)
|
||||
+{
|
||||
+ if (!isFloating()) {
|
||||
+ m_timer.stop();
|
||||
+ m_titleBar->setActive(false);
|
||||
+ }
|
||||
+ QApplication::instance()->removeEventFilter(this);
|
||||
+ QDockWidget::leaveEvent(event);
|
||||
+}
|
||||
+
|
||||
+void DockWidget::handleMouseTimeout()
|
||||
+{
|
||||
+ QPoint dist = m_startPos - QCursor::pos();
|
||||
+ if (!isFloating() && dist.manhattanLength() < 4)
|
||||
+ m_titleBar->setActive(true);
|
||||
+}
|
||||
+
|
||||
+void DockWidget::handleToplevelChanged(bool floating)
|
||||
+{
|
||||
+ m_titleBar->setActive(floating);
|
||||
+}
|
||||
+
|
||||
const char kDockWidgetInnerWidgetHeight[] = "InnerWidgetHeight";
|
||||
|
||||
QVariant DockWidget::saveState() const
|
|
@ -1,17 +0,0 @@
|
|||
diff --git a/src/libs/utils/multitextcursor.cpp b/src/libs/utils/multitextcursor.cpp
|
||||
index a02bfebe..edd18bba 100644
|
||||
--- a/src/libs/utils/multitextcursor.cpp
|
||||
+++ b/src/libs/utils/multitextcursor.cpp
|
||||
@@ -411,10 +407,10 @@ bool MultiTextCursor::handleMoveKeyEvent(QKeyEvent *e,
|
||||
} else if (multiCursorEvent(e, QKeySequence::SelectPreviousWord)) {
|
||||
op = QTextCursor::WordLeft;
|
||||
mode = QTextCursor::KeepAnchor;
|
||||
- } else if (multiCursorEvent(e, QKeySequence::SelectStartOfLine)) {
|
||||
+ } else if (e == QKeySequence::SelectStartOfLine) {
|
||||
op = QTextCursor::StartOfLine;
|
||||
mode = QTextCursor::KeepAnchor;
|
||||
- } else if (multiCursorEvent(e, QKeySequence::SelectEndOfLine)) {
|
||||
+ } else if (e == QKeySequence::SelectEndOfLine) {
|
||||
op = QTextCursor::EndOfLine;
|
||||
mode = QTextCursor::KeepAnchor;
|
||||
} else if (multiCursorEvent(e, QKeySequence::SelectStartOfBlock)) {
|
|
@ -1,17 +0,0 @@
|
|||
diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp
|
||||
index 9aec8e44..7613b9df 100644
|
||||
--- a/src/plugins/coreplugin/navigationwidget.cpp
|
||||
+++ b/src/plugins/coreplugin/navigationwidget.cpp
|
||||
@@ -209,12 +209,6 @@ QWidget *NavigationWidget::activateSubWidget(Id factoryId, Side fallbackSide)
|
||||
{
|
||||
NavigationWidget *navigationWidget = instance(fallbackSide);
|
||||
int preferredPosition = -1;
|
||||
-
|
||||
- if (const auto it = s_activationsMap.constFind(factoryId); it != s_activationsMap.constEnd()) {
|
||||
- navigationWidget = instance(it->side);
|
||||
- preferredPosition = it->position;
|
||||
- }
|
||||
-
|
||||
return navigationWidget->activateSubWidget(factoryId, preferredPosition);
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
diff -cr a/src/plugins/perfprofiler/perfprofilerflamegraphview.cpp b/src/plugins/perfprofiler/perfprofilerflamegraphview.cpp
|
||||
*** a/src/plugins/perfprofiler/perfprofilerflamegraphview.cpp 2023-03-21 21:24:25.080007370 +0300
|
||||
--- b/src/plugins/perfprofiler/perfprofilerflamegraphview.cpp 2023-03-21 20:50:14.850038617 +0300
|
||||
***************
|
||||
*** 47,53 ****
|
||||
|
||||
void PerfProfilerFlameGraphView::selectByTypeId(int typeId)
|
||||
{
|
||||
! rootObject()->setProperty("selectedTypeId", typeId);
|
||||
}
|
||||
|
||||
void PerfProfilerFlameGraphView::resetRoot()
|
||||
--- 47,53 ----
|
||||
|
||||
void PerfProfilerFlameGraphView::selectByTypeId(int typeId)
|
||||
{
|
||||
! // rootObject()->setProperty("selectedTypeId", typeId);
|
||||
}
|
||||
|
||||
void PerfProfilerFlameGraphView::resetRoot()
|
|
@ -1,70 +0,0 @@
|
|||
diff -cr a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp
|
||||
*** a/src/plugins/projectexplorer/projectmodels.cpp 2021-09-30 05:33:49.000000000 +0300
|
||||
--- b/src/plugins/projectexplorer/projectmodels.cpp 2021-11-07 15:40:11.945407765 +0300
|
||||
***************
|
||||
*** 480,493 ****
|
||||
if (m_filterDisabledFiles && !node->isEnabled())
|
||||
continue;
|
||||
if (FolderNode *subFolderNode = node->asFolderNode()) {
|
||||
! bool isHidden = m_filterProjects && !subFolderNode->showInSimpleTree();
|
||||
if (m_hideSourceGroups) {
|
||||
if (subFolderNode->isVirtualFolderType()) {
|
||||
- auto vnode = static_cast<VirtualFolderNode *>(subFolderNode);
|
||||
- if (vnode->isSourcesOrHeaders()) {
|
||||
isHidden = true;
|
||||
hasHiddenSourcesOrHeaders = true;
|
||||
- }
|
||||
}
|
||||
}
|
||||
if (!isHidden && Utils::insert(*seen, subFolderNode)) {
|
||||
--- 480,491 ----
|
||||
if (m_filterDisabledFiles && !node->isEnabled())
|
||||
continue;
|
||||
if (FolderNode *subFolderNode = node->asFolderNode()) {
|
||||
! bool isHidden = m_filterProjects && (!subFolderNode->showInSimpleTree() ||
|
||||
! subFolderNode->displayName() == "..");
|
||||
if (m_hideSourceGroups) {
|
||||
if (subFolderNode->isVirtualFolderType()) {
|
||||
isHidden = true;
|
||||
hasHiddenSourcesOrHeaders = true;
|
||||
}
|
||||
}
|
||||
if (!isHidden && Utils::insert(*seen, subFolderNode)) {
|
||||
***************
|
||||
*** 499,505 ****
|
||||
addFolderNode(parent, subFolderNode, seen);
|
||||
}
|
||||
} else if (FileNode *fileNode = node->asFileNode()) {
|
||||
! if (Utils::insert(*seen, fileNode))
|
||||
parent->appendChild(new WrapperNode(fileNode));
|
||||
}
|
||||
}
|
||||
--- 499,506 ----
|
||||
addFolderNode(parent, subFolderNode, seen);
|
||||
}
|
||||
} else if (FileNode *fileNode = node->asFileNode()) {
|
||||
! if (!(m_filterProjects && fileNode->fileType() == FileType::Project) &&
|
||||
! Utils::insert(*seen, fileNode))
|
||||
parent->appendChild(new WrapperNode(fileNode));
|
||||
}
|
||||
}
|
||||
diff -cr a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp
|
||||
*** a/src/plugins/projectexplorer/projectnodes.cpp 2021-11-03 15:01:07.000000000 +0300
|
||||
--- b/src/plugins/projectexplorer/projectnodes.cpp 2021-11-17 11:18:46.101783059 +0300
|
||||
***************
|
||||
*** 848,854 ****
|
||||
|
||||
bool FolderNode::showInSimpleTree() const
|
||||
{
|
||||
! return false;
|
||||
}
|
||||
|
||||
bool FolderNode::showWhenEmpty() const
|
||||
--- 848,854 ----
|
||||
|
||||
bool FolderNode::showInSimpleTree() const
|
||||
{
|
||||
! return true;
|
||||
}
|
||||
|
||||
bool FolderNode::showWhenEmpty() const
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/src/plugins/python/pythoneditor.cpp b/src/plugins/python/pythoneditor.cpp
|
||||
index ddd30f2a..ae333cd2 100644
|
||||
--- a/src/plugins/python/pythoneditor.cpp
|
||||
+++ b/src/plugins/python/pythoneditor.cpp
|
||||
@@ -324,7 +324,7 @@ public:
|
||||
|
||||
setDocumentCreator([]() { return new PythonDocument; });
|
||||
setEditorWidgetCreator([]() { return new PythonEditorWidget; });
|
||||
- setIndenterCreator(&createPythonIndenter);
|
||||
+// setIndenterCreator(&createPythonIndenter);
|
||||
setSyntaxHighlighterCreator(&createPythonHighlighter);
|
||||
setCommentDefinition(CommentDefinition::HashStyle);
|
||||
setParenthesesMatchingEnabled(true);
|
|
@ -1,14 +0,0 @@
|
|||
diff --git a/src/plugins/python/pythonlanguageclient.cpp b/src/plugins/python/pythonlanguageclient.cpp
|
||||
index 3c05b8f8..c092860f 100644
|
||||
--- a/src/plugins/python/pythonlanguageclient.cpp
|
||||
+++ b/src/plugins/python/pythonlanguageclient.cpp
|
||||
@@ -89,6 +89,9 @@ static PythonLanguageServerState checkPythonLanguageServer(const FilePath &pytho
|
||||
using namespace std::chrono_literals;
|
||||
pythonProcess.runBlocking(2s);
|
||||
bool pipAvailable = pythonProcess.allOutput().startsWith("pip ");
|
||||
+
|
||||
+ if (FilePath("/usr/bin/pylsp").withExecutableSuffix().exists())
|
||||
+ return {PythonLanguageServerState::Installed, lspPath};
|
||||
|
||||
if (lspPath.pathAppended("bin").pathAppended("pylsp").withExecutableSuffix().exists()) {
|
||||
if (pipAvailable) {
|
|
@ -1,21 +0,0 @@
|
|||
diff --git a/src/plugins/python/pythonbuildsystem.cpp b/src/plugins/python/pythonbuildsystem.cpp
|
||||
index b2263811..ba4c6bf3 100644
|
||||
--- a/src/plugins/python/pythonbuildsystem.cpp
|
||||
+++ b/src/plugins/python/pythonbuildsystem.cpp
|
||||
@@ -183,14 +183,14 @@ void PythonBuildSystem::triggerParsing()
|
||||
python = kitPython->command;
|
||||
|
||||
const FilePath projectFile = projectFilePath();
|
||||
- const QString displayName = projectFile.relativePathFrom(projectDirectory()).toUserOutput();
|
||||
+ const QString displayName = projectFilePath().fileName();
|
||||
newRoot->addNestedNode(
|
||||
std::make_unique<PythonFileNode>(projectFile, displayName, FileType::Project));
|
||||
|
||||
bool hasQmlFiles = false;
|
||||
|
||||
for (const FileEntry &entry : std::as_const(m_files)) {
|
||||
- const QString displayName = entry.filePath.relativePathFrom(projectDirectory()).toUserOutput();
|
||||
+ const QString displayName = entry.filePath.fileName();
|
||||
const FileType fileType = getFileType(entry.filePath);
|
||||
|
||||
hasQmlFiles |= fileType == FileType::QML;
|
|
@ -1,37 +0,0 @@
|
|||
diff -cr a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts
|
||||
*** a/share/qtcreator/translations/qtcreator_ru.ts 2019-01-15 21:03:53.000000000 +0300
|
||||
--- b/share/qtcreator/translations/qtcreator_ru.ts 2019-01-17 19:56:43.489942378 +0300
|
||||
***************
|
||||
*** 5400,5406 ****
|
||||
</message>
|
||||
<message>
|
||||
<source><Other Locations></source>
|
||||
! <translation><Другие места></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CMake Project was parsed successfully.</source>
|
||||
--- 5400,5406 ----
|
||||
</message>
|
||||
<message>
|
||||
<source><Other Locations></source>
|
||||
! <translation>Другие места</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CMake Project was parsed successfully.</source>
|
||||
***************
|
||||
*** 5432,5438 ****
|
||||
</message>
|
||||
<message>
|
||||
<source><Headers></source>
|
||||
! <translation><Заголовки></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
--- 5432,5438 ----
|
||||
</message>
|
||||
<message>
|
||||
<source><Headers></source>
|
||||
! <translation>Заголовки</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
|
@ -1,6 +1,6 @@
|
|||
# https://gitlab.archlinux.org/archlinux/packaging/packages/telegram-desktop/-/blob/main/PKGBUILD
|
||||
pkgname=telegram-desktop-patched
|
||||
pkgver=5.8.1
|
||||
pkgver=5.8.3
|
||||
pkgrel=1
|
||||
pkgdesc='Official Telegram Desktop client'
|
||||
arch=('x86_64')
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Contributor: Alexander Baldeck <alexander@archlinux.org>
|
||||
|
||||
pkgname=xterm
|
||||
pkgver=395
|
||||
pkgver=396
|
||||
pkgrel=1
|
||||
pkgdesc="X Terminal Emulator"
|
||||
arch=('x86_64')
|
||||
|
|
Loading…
Reference in a new issue