diff --git a/src/xenia/ui/window_qt.cc b/src/xenia/ui/window_qt.cc index 57e1fa62c..ad5d1ed86 100644 --- a/src/xenia/ui/window_qt.cc +++ b/src/xenia/ui/window_qt.cc @@ -13,9 +13,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include @@ -282,6 +284,28 @@ void QtWindow::ApplyNewTitle() { } } +void QtWindow::LoadAndApplyIcon(const void* buffer, size_t size, + bool can_apply_state_in_current_phase) { + if (!qwindow_) { + return; + } + + bool reset = !buffer || !size; + + if (reset) { + // Reset to default/no icon + qwindow_->setWindowIcon(QIcon()); + } else { + // Load icon from buffer (typically from game executable) + QPixmap pixmap; + if (pixmap.loadFromData(static_cast(buffer), + static_cast(size))) { + QIcon icon(pixmap); + qwindow_->setWindowIcon(icon); + } + } +} + void QtWindow::ApplyNewMainMenu(MenuItem* old_main_menu) { if (!qwindow_) return; diff --git a/src/xenia/ui/window_qt.h b/src/xenia/ui/window_qt.h index 24a6495e0..0a22d05d9 100644 --- a/src/xenia/ui/window_qt.h +++ b/src/xenia/ui/window_qt.h @@ -50,6 +50,8 @@ class QtWindow : public Window { void ApplyNewFullscreen() override; void ApplyNewTitle() override; + void LoadAndApplyIcon(const void* buffer, size_t size, + bool can_apply_state_in_current_phase) override; void ApplyNewMainMenu(MenuItem* old_main_menu) override; void ApplyNewCursorVisibility( CursorVisibility old_cursor_visibility) override;