diff --git a/Documentation/BuildInstructionsLadybird.md b/Documentation/BuildInstructionsLadybird.md
index 679e37d75b..928796f31b 100644
--- a/Documentation/BuildInstructionsLadybird.md
+++ b/Documentation/BuildInstructionsLadybird.md
@@ -7,7 +7,7 @@ Qt6 development packages and a C++20 capable compiler are required. gcc-12 or cl
On Debian/Ubuntu required packages include, but are not limited to:
```
-sudo apt install build-essential cmake libgl1-mesa-dev ninja-build qt6-base-dev libqt6svg6-dev qt6-tools-dev-tools qt6-multimedia-dev
+sudo apt install build-essential cmake libgl1-mesa-dev ninja-build qt6-base-dev qt6-tools-dev-tools qt6-multimedia-dev
```
For Ubuntu 20.04 and above, ensure that the Qt6 Wayland packages are available:
@@ -19,12 +19,12 @@ sudo apt install qt6-wayland
On Arch Linux/Manjaro:
```
-sudo pacman -S --needed base-devel cmake libgl ninja qt6-base qt6-svg qt6-tools qt6-wayland qt6-multimedia
+sudo pacman -S --needed base-devel cmake libgl ninja qt6-base qt6-tools qt6-wayland qt6-multimedia
```
On Fedora or derivatives:
```
-sudo dnf install cmake libglvnd-devel ninja-build qt6-qtbase-devel qt6-qtsvg-devel qt6-qttools-devel qt6-qtwayland-devel qt6-qtmultimedia-devel
+sudo dnf install cmake libglvnd-devel ninja-build qt6-qtbase-devel qt6-qttools-devel qt6-qtwayland-devel qt6-qtmultimedia-devel
```
On openSUSE:
diff --git a/Ladybird/CMakeLists.txt b/Ladybird/CMakeLists.txt
index 98ad917395..edf618dfeb 100644
--- a/Ladybird/CMakeLists.txt
+++ b/Ladybird/CMakeLists.txt
@@ -73,7 +73,7 @@ add_compile_options(-Wno-user-defined-literals)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
-find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network Svg Multimedia)
+find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network Multimedia)
set(BROWSER_SOURCE_DIR ${SERENITY_SOURCE_DIR}/Userland/Applications/Browser/)
@@ -100,7 +100,7 @@ set(SOURCES
qt_add_executable(ladybird ${SOURCES}
MANUAL_FINALIZATION
)
-target_link_libraries(ladybird PRIVATE Qt::Core Qt::Gui Qt::Network Qt::Widgets Qt::Svg LibCore LibFileSystem LibGfx LibGUI LibIPC LibJS LibMain LibWeb LibWebView LibSQL)
+target_link_libraries(ladybird PRIVATE Qt::Core Qt::Gui Qt::Network Qt::Widgets LibCore LibFileSystem LibGfx LibGUI LibIPC LibJS LibMain LibWeb LibWebView LibSQL)
target_include_directories(ladybird PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(ladybird PRIVATE ${SERENITY_SOURCE_DIR}/Userland/)
diff --git a/Ladybird/Icons/back.svg b/Ladybird/Icons/back.svg
deleted file mode 100644
index e7587f7ad3..0000000000
--- a/Ladybird/Icons/back.svg
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
diff --git a/Ladybird/Icons/back.tvg b/Ladybird/Icons/back.tvg
new file mode 100644
index 0000000000..248e7a215b
Binary files /dev/null and b/Ladybird/Icons/back.tvg differ
diff --git a/Ladybird/Icons/forward.svg b/Ladybird/Icons/forward.svg
deleted file mode 100644
index ebe17587da..0000000000
--- a/Ladybird/Icons/forward.svg
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
diff --git a/Ladybird/Icons/forward.tvg b/Ladybird/Icons/forward.tvg
new file mode 100644
index 0000000000..4aa57252be
Binary files /dev/null and b/Ladybird/Icons/forward.tvg differ
diff --git a/Ladybird/Icons/reload.svg b/Ladybird/Icons/reload.svg
deleted file mode 100644
index 07ee3f8642..0000000000
--- a/Ladybird/Icons/reload.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
diff --git a/Ladybird/Icons/reload.tvg b/Ladybird/Icons/reload.tvg
new file mode 100644
index 0000000000..bfd7674985
Binary files /dev/null and b/Ladybird/Icons/reload.tvg differ
diff --git a/Ladybird/Tab.cpp b/Ladybird/Tab.cpp
index 3cecf23373..687d39f22e 100644
--- a/Ladybird/Tab.cpp
+++ b/Ladybird/Tab.cpp
@@ -13,6 +13,7 @@
#include "Utilities.h"
#include
#include
+#include
#include
#include
#include
@@ -27,30 +28,31 @@
#include
#include
#include
-#include
extern DeprecatedString s_serenity_resource_root;
extern Browser::Settings* s_settings;
-static QIcon render_svg_icon_with_theme_colors(QString name, QPalette const& palette)
+static QIcon render_tvg_icon_with_theme_colors(QString name, QPalette const& palette)
{
- auto path = QString(":/Icons/%1.svg").arg(name);
+ auto path = QString(":/Icons/%1.tvg").arg(name);
+ Gfx::IntSize icon_size(16, 16);
- QSize icon_size(16, 16);
+ QFile icon_resource(path);
+ VERIFY(icon_resource.open(QIODeviceBase::ReadOnly));
+ auto icon_data = icon_resource.readAll();
+ ReadonlyBytes icon_bytes { icon_data.data(), static_cast(icon_data.size()) };
+ auto icon_raster = MUST(Gfx::Bitmap::load_from_bytes(icon_bytes, icon_size));
QIcon icon;
-
auto render = [&](QColor color) -> QPixmap {
- QImage image(icon_size, QImage::Format_ARGB32);
- image.fill(Qt::transparent);
-
- QPainter painter(&image);
- QSvgRenderer renderer(path);
- renderer.render(&painter);
- painter.setBrush(color);
- painter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
- painter.fillRect(image.rect(), color);
- return QPixmap::fromImage(image);
+ auto image = MUST(Gfx::Bitmap::create(Gfx::BitmapFormat::BGRA8888, icon_size));
+ Gfx::Painter painter { image };
+ auto icon_color = Color::from_argb(color.rgba64().toArgb32());
+ painter.blit_filtered({ 0, 0 }, *icon_raster, icon_raster->rect(), [&](auto color) {
+ return icon_color.with_alpha((icon_color.alpha() * color.alpha()) / 255);
+ });
+ QImage qimage { image->scanline_u8(0), image->width(), image->height(), QImage::Format::Format_ARGB32 };
+ return QPixmap::fromImage(qimage);
};
icon.addPixmap(render(palette.color(QPalette::ColorGroup::Normal, QPalette::ColorRole::ButtonText)), QIcon::Mode::Normal);
@@ -622,9 +624,9 @@ bool Tab::event(QEvent* event)
void Tab::rerender_toolbar_icons()
{
- m_window->go_back_action().setIcon(render_svg_icon_with_theme_colors("back", palette()));
- m_window->go_forward_action().setIcon(render_svg_icon_with_theme_colors("forward", palette()));
- m_window->reload_action().setIcon(render_svg_icon_with_theme_colors("reload", palette()));
+ m_window->go_back_action().setIcon(render_tvg_icon_with_theme_colors("back", palette()));
+ m_window->go_forward_action().setIcon(render_tvg_icon_with_theme_colors("forward", palette()));
+ m_window->reload_action().setIcon(render_tvg_icon_with_theme_colors("reload", palette()));
}
void Tab::show_inspector_window(InspectorTarget inspector_target)
diff --git a/Ladybird/ladybird.qrc b/Ladybird/ladybird.qrc
index 882e3ed796..ed6d80ccd2 100644
--- a/Ladybird/ladybird.qrc
+++ b/Ladybird/ladybird.qrc
@@ -1,8 +1,8 @@
Icons/ladybird.png
- Icons/back.svg
- Icons/forward.svg
- Icons/reload.svg
+ Icons/back.tvg
+ Icons/forward.tvg
+ Icons/reload.tvg