diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-08 20:27:06 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-08 20:27:06 +0200 |
| commit | e6e28fd4814e1f513773288710e1bcb3cfad0028 (patch) | |
| tree | 4c5274fb3dc5f14a3332de456a5d5213c8e7cdaf /src | |
| parent | 51f46dce66ac660507dc7abad5506650bc863d7f (diff) | |
| download | kristall-e6e28fd4814e1f513773288710e1bcb3cfad0028.tar.gz | |
Fixes bug with URL escaping, adds experimental text highlighting
Diffstat (limited to 'src')
| -rw-r--r-- | src/browsertab.cpp | 2 | ||||
| -rw-r--r-- | src/geminiclient.cpp | 2 | ||||
| -rw-r--r-- | src/geminirenderer.cpp | 44 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 2 |
4 files changed, 45 insertions, 5 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp index 4bbfa20..3f9f5bb 100644 --- a/src/browsertab.cpp +++ b/src/browsertab.cpp @@ -73,7 +73,7 @@ void BrowserTab::navigateTo(const QUrl &url, PushToHistory mode) this->timer.start(); this->current_location = url; - this->ui->url_bar->setText(url.toString()); + this->ui->url_bar->setText(url.toString(QUrl::FormattingOptions(QUrl::FullyEncoded))); if(not gemini_client.cancelRequest()) { QMessageBox::warning(this, "Kristall", "Failed to cancel running gemini request!"); diff --git a/src/geminiclient.cpp b/src/geminiclient.cpp index 6e63991..8117a4f 100644 --- a/src/geminiclient.cpp +++ b/src/geminiclient.cpp @@ -55,7 +55,7 @@ bool GeminiClient::cancelRequest() void GeminiClient::socketEncrypted() { - QString request = target_url.toString() + "\r\n"; + QString request = target_url.toString(QUrl::FormattingOptions(QUrl::FullyEncoded)) + "\r\n"; QByteArray request_bytes = request.toUtf8(); diff --git a/src/geminirenderer.cpp b/src/geminirenderer.cpp index a178b65..fd475ce 100644 --- a/src/geminirenderer.cpp +++ b/src/geminirenderer.cpp @@ -234,9 +234,49 @@ std::unique_ptr<GeminiDocument> GeminiRenderer::render( { if(emit_fancy_text) { - qDebug() << "implement fancy text emission!"; + bool rendering_bold = false; + bool rendering_underlined = false; + + QTextCharFormat fmt = standard; + + for(int i = 0; i < line.length(); i += 1) + { + char c = line.at(i); + if(c == ' ') { + fmt = standard; + cursor.insertText(" "); + rendering_bold = false; + rendering_underlined = false; + } + else if(c == '*') { + if(rendering_bold) + cursor.insertText("*", fmt); + rendering_bold = not rendering_bold; + auto f = fmt.font(); + f.setBold(rendering_bold); + fmt.setFont(f); + if(rendering_bold) + cursor.insertText("*", fmt); + } + else if(c == '_') { + if(rendering_underlined) + cursor.insertText(" ", fmt); + rendering_underlined = not rendering_underlined; + auto f = fmt.font(); + fmt.setUnderlineStyle(rendering_underlined ? QTextCharFormat::SingleUnderline : QTextCharFormat::NoUnderline); + if(rendering_underlined) + cursor.insertText(" ", fmt); + } + else { + cursor.insertText(QString::fromUtf8(&c, 1), fmt); + } + } + + cursor.insertText("\n", standard); + } + else { + cursor.insertText(line + "\n", standard); } - cursor.insertText(line + "\n", standard); } } } diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 23bebf7..2b8b967 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -146,7 +146,7 @@ <item> <widget class="QRadioButton" name="texthl_on"> <property name="text"> - <string>On</string> + <string>On (Experimental)</string> </property> <attribute name="buttonGroup"> <string notr="true">textHighlightsBtnGroup</string> |
