From 5a2a6aef3703d6aaaee24d9436da9e60ffcae769 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Sun, 16 Mar 2025 00:33:33 +0530 Subject: Fix UI issues with inputline and completer --- src/widgets/InputLine.cpp | 32 ++++++++++++++++++++------------ src/widgets/MainWindow.cpp | 4 ++-- src/widgets/WebViewStack.cpp | 4 +--- 3 files changed, 23 insertions(+), 17 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/InputLine.cpp b/src/widgets/InputLine.cpp index 7e0a2dd..81e2bab 100644 --- a/src/widgets/InputLine.cpp +++ b/src/widgets/InputLine.cpp @@ -8,9 +8,11 @@ #include #include #include +#include #include #include #include +#include #include "completion/CommandsAdapter.hpp" #include "widgets/InputLine.hpp" @@ -24,53 +26,59 @@ const char *rootStyles = R"( const char *promptStyles = R"( background-color: #222; color: #fff; - padding: 0 2px; + padding: 0 4px; +)"; + +const char *inputStyles = R"( + color: #fff; + padding: 0 4px; )"; InputLine::InputLine(QString defaultInput, QWidget *parentNode) : QWidget(parentNode) { setContentsMargins(0, 0, 0, 0); - move(0, 0); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setStyleSheet(rootStyles); - auto layout = new QVBoxLayout(this); + layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); setLayout(layout); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); auto cmdLineBox = new QWidget(); - layout->addWidget(cmdLineBox); auto cmdLineLayout = new QHBoxLayout(); - cmdLineBox->setLayout(cmdLineLayout); - cmdLineBox->layout()->setContentsMargins(0, 0, 0, 0); - cmdLineBox->setContentsMargins(0, 0, 0, 0); + cmdLineLayout->setContentsMargins(0, 0, 0, 0); cmdLineLayout->setSpacing(0); + cmdLineBox->setLayout(cmdLineLayout); promptPrefix = new QLabel(); promptPrefix->setStyleSheet(promptStyles); promptPrefix->setContentsMargins(0, 0, 0, 0); input = new QLineEdit(defaultInput); + input->setStyleSheet(inputStyles); input->setFocusPolicy(Qt::StrongFocus); input->setContentsMargins(0, 0, 0, 0); cmdLineLayout->addWidget(promptPrefix); - cmdLineLayout->addWidget(input); + cmdLineLayout->addWidget(input, 1); cmdLineBox->setFixedHeight(input->sizeHint().height()); + layout->addWidget(cmdLineBox, 0); + setAdapter(new CommandsAdapter()); } void InputLine::setAdapter(Adapter *adapter) { if (this->adapterInstance) { - layout()->removeWidget(this->adapterInstance->completer()); + layout->removeWidget(this->adapterInstance->completer()); delete this->adapterInstance; } this->adapterInstance = adapter; promptPrefix->setText(adapter->prompt()); auto completer = adapter->completer(); - layout()->addWidget(completer); - completer->move(0, 0); + layout->insertWidget(1, completer, 0, Qt::AlignmentFlag::AlignTop); + connect(input, &QLineEdit::textChanged, completer, &Completer::onTextChange); connect(completer, &Completer::accepted, input, &QLineEdit::setText); } diff --git a/src/widgets/MainWindow.cpp b/src/widgets/MainWindow.cpp index 632869f..e2e54da 100644 --- a/src/widgets/MainWindow.cpp +++ b/src/widgets/MainWindow.cpp @@ -11,7 +11,7 @@ MainWindow::MainWindow() { setStyleSheet("background-color: #000; color: #fff;"); - setCentralWidget(new QWidget()); + setCentralWidget(new QWidget()); // TODO: manage widget memory // Root stacked layout auto layout = new QStackedLayout(); @@ -25,7 +25,7 @@ MainWindow::MainWindow() { layout->addWidget(webViewStack); // Command input - auto inputLine = new InputLine; + auto inputLine = new InputLine(); layout->addWidget(inputLine); inputMediator = diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp index 8102351..0d1f7fc 100644 --- a/src/widgets/WebViewStack.cpp +++ b/src/widgets/WebViewStack.cpp @@ -6,11 +6,9 @@ WebViewStack::WebViewStack(QWebEngineProfile *profile, QWidget *parent) : QWidget(parent), profile(profile) { - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - layout = new QStackedLayout(this); - layout->setStackingMode(QStackedLayout::StackAll); layout->setContentsMargins(0, 0, 0, 0); + layout->setStackingMode(QStackedLayout::StackOne); createNewWebView(WebViewStack::NewtabURL, true); } -- cgit v1.3.1