Merge branch 'master' into lto

This commit is contained in:
Megamouse 2025-03-21 15:59:06 +01:00 committed by GitHub
commit 549ff2bb66
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 249 additions and 166 deletions

@ -1 +1 @@
Subproject commit d52e355daa09f17ce64819122cb067b8a2ee0d4b Subproject commit a61afe5f75d969c4561a1d0ad753aa23cee6329a

View file

@ -18,7 +18,7 @@ about_dialog::about_dialog(QWidget* parent) : QDialog(parent), ui(new Ui::about_
ui->version->setText(tr("RPCS3 Version: %1").arg(QString::fromStdString(rpcs3::get_verbose_version()))); ui->version->setText(tr("RPCS3 Version: %1").arg(QString::fromStdString(rpcs3::get_verbose_version())));
ui->description->setText(gui::utils::make_paragraph(tr( ui->description->setText(gui::utils::make_paragraph(tr(
"RPCS3 is an open-source Sony PlayStation 3 emulator and debugger.\n" "RPCS3 is an open-source Sony PlayStation 3 emulator and debugger.\n"
"It is written in C++ for Windows, Linux, FreeBSD and MacOS funded with %0.\n" "It is written in C++ for Windows, Linux, FreeBSD and MacOS, funded with %0.\n"
"Our developers and contributors are always working hard to ensure this project is the best that it can be.\n" "Our developers and contributors are always working hard to ensure this project is the best that it can be.\n"
"There are still plenty of implementations to make and optimizations to do.") "There are still plenty of implementations to make and optimizations to do.")
.arg(gui::utils::make_link(tr("Patreon"), "https://rpcs3.net/patreon")))); .arg(gui::utils::make_link(tr("Patreon"), "https://rpcs3.net/patreon"))));

View file

@ -76,10 +76,10 @@
<item> <item>
<spacer name="icon_spacer"> <spacer name="icon_spacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Orientation::Vertical</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum> <enum>QSizePolicy::Policy::MinimumExpanding</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -100,7 +100,6 @@
<font> <font>
<family>Arial</family> <family>Arial</family>
<pointsize>14</pointsize> <pointsize>14</pointsize>
<weight>50</weight>
<bold>false</bold> <bold>false</bold>
</font> </font>
</property> </property>
@ -108,10 +107,10 @@
<string>RPCS3 PlayStation 3 Emulator</string> <string>RPCS3 PlayStation 3 Emulator</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property> </property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::TextSelectableByMouse</set> <set>Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -124,10 +123,10 @@
</font> </font>
</property> </property>
<property name="textFormat"> <property name="textFormat">
<enum>Qt::RichText</enum> <enum>Qt::TextFormat::RichText</enum>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>false</bool> <bool>false</bool>
@ -136,7 +135,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::TextBrowserInteraction</set> <set>Qt::TextInteractionFlag::TextBrowserInteraction</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -152,16 +151,16 @@
<string/> <string/>
</property> </property>
<property name="textFormat"> <property name="textFormat">
<enum>Qt::RichText</enum> <enum>Qt::TextFormat::RichText</enum>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::TextBrowserInteraction</set> <set>Qt::TextInteractionFlag::TextBrowserInteraction</set>
</property> </property>
</widget> </widget>
</item> </item>
@ -185,13 +184,13 @@
</size> </size>
</property> </property>
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::NoFrame</enum> <enum>QFrame::Shape::NoFrame</enum>
</property> </property>
<property name="verticalScrollBarPolicy"> <property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum> <enum>Qt::ScrollBarPolicy::ScrollBarAlwaysOn</enum>
</property> </property>
<property name="sizeAdjustPolicy"> <property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum> <enum>QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents</enum>
</property> </property>
<property name="widgetResizable"> <property name="widgetResizable">
<bool>true</bool> <bool>true</bool>
@ -201,50 +200,105 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>788</width> <width>793</width>
<height>2076</height> <height>2638</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="names_layout" stretch="1,1,1,1"> <layout class="QHBoxLayout" name="names_layout" stretch="1,1,1,1">
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum> <enum>QLayout::SizeConstraint::SetMinimumSize</enum>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>24</number> <number>24</number>
</property> </property>
<item>
<layout class="QVBoxLayout" name="developerLayout" stretch="0,1">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLabel" name="developersTitle">
<property name="font">
<font>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Developers:</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QLabel" name="developers"> <widget class="QLabel" name="developers">
<property name="text"> <property name="text">
<string>&lt;p&gt;&lt;b&gt;Developers:&lt;/b&gt;&lt;br&gt;&lt;br&gt;¬DH&lt;br&gt;¬AlexAltea&lt;br&gt;¬Hykem&lt;br&gt;¬Oil&lt;br&gt;Nekotekina&lt;br&gt;¬Bigpet&lt;br&gt;¬gopalsr83&lt;br&gt;¬tambry&lt;br&gt;¬vlj&lt;br&gt;kd-11&lt;br&gt;¬jarveson&lt;br&gt;¬raven02&lt;br&gt;AniLeo&lt;br&gt;¬cornytrace&lt;br&gt;¬ssshadow&lt;br&gt;¬Numan&lt;br&gt;hcorion&lt;br&gt;Megamouse&lt;br&gt;¬flash-fire&lt;br&gt;DAGINATSUKO&lt;br&gt;GalCiv&lt;br&gt;eladash&lt;/p&gt;</string> <string notr="true">&lt;p&gt;¬DH&lt;br&gt;¬AlexAltea&lt;br&gt;¬Hykem&lt;br&gt;¬Oil&lt;br&gt;Nekotekina&lt;br&gt;¬Bigpet&lt;br&gt;¬gopalsr83&lt;br&gt;¬tambry&lt;br&gt;¬vlj&lt;br&gt;kd-11&lt;br&gt;¬jarveson&lt;br&gt;¬raven02&lt;br&gt;AniLeo&lt;br&gt;¬cornytrace&lt;br&gt;¬ssshadow&lt;br&gt;¬Numan&lt;br&gt;hcorion&lt;br&gt;Megamouse&lt;br&gt;¬flash-fire&lt;br&gt;DAGINATSUKO&lt;br&gt;GalCiv&lt;br&gt;eladash&lt;/p&gt;</string>
</property> </property>
<property name="scaledContents"> <property name="scaledContents">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property> </property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::TextSelectableByMouse</set> <set>Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="contributorsLayout" stretch="0,1">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLabel" name="contributorsTitle">
<property name="font">
<font>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Contributors:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="contributors"> <widget class="QLabel" name="contributors">
<property name="text"> <property name="text">
<string>&lt;p&gt;&lt;b&gt;Contributors:&lt;/b&gt;&lt;br&gt;&lt;br&gt;BlackDaemon&lt;br&gt;elisha464&lt;br&gt;Aishou&lt;br&gt;krofna&lt;br&gt;xsacha&lt;br&gt;danilaml&lt;br&gt;unknownbrackets&lt;br&gt;Zangetsu38&lt;br&gt;lioncash&lt;br&gt;achurch&lt;br&gt;darkf&lt;br&gt;Syphurith&lt;br&gt;Blaypeg&lt;br&gt;Survanium90&lt;br&gt;georgemoralis&lt;br&gt;ikki84&lt;br&gt;scribam&lt;br&gt;TGE&lt;br&gt;velocity&lt;br&gt;Farseer&lt;br&gt;Dangles&lt;br&gt;ruipin&lt;br&gt;jbeich&lt;br&gt;CookiePLMonster&lt;br&gt;Whatcookie&lt;br&gt;rajkosto&lt;br&gt;Admiral Thrawn&lt;br&gt;FlexBy&lt;br&gt;Dunastique&lt;br&gt;Jonathan44062&lt;br&gt;yurinator557&lt;br&gt;Satan&lt;br&gt;HoldTheMourning&lt;br&gt;illusion0001&lt;/p&gt;</string> <string notr="true">&lt;p&gt;BlackDaemon&lt;br&gt;elisha464&lt;br&gt;Aishou&lt;br&gt;krofna&lt;br&gt;xsacha&lt;br&gt;danilaml&lt;br&gt;unknownbrackets&lt;br&gt;Zangetsu38&lt;br&gt;lioncash&lt;br&gt;achurch&lt;br&gt;darkf&lt;br&gt;Syphurith&lt;br&gt;Blaypeg&lt;br&gt;Survanium90&lt;br&gt;georgemoralis&lt;br&gt;ikki84&lt;br&gt;scribam&lt;br&gt;TGE&lt;br&gt;velocity&lt;br&gt;Farseer&lt;br&gt;Dangles&lt;br&gt;ruipin&lt;br&gt;jbeich&lt;br&gt;CookiePLMonster&lt;br&gt;Whatcookie&lt;br&gt;rajkosto&lt;br&gt;Admiral Thrawn&lt;br&gt;FlexBy&lt;br&gt;Dunastique&lt;br&gt;Jonathan44062&lt;br&gt;yurinator557&lt;br&gt;Satan&lt;br&gt;HoldTheMourning&lt;br&gt;illusion0001&lt;/p&gt;</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property> </property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::TextSelectableByMouse</set> <set>Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="supportersLayout" stretch="0,1">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLabel" name="supportersTitle">
<property name="font">
<font>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Supporters:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="supporters"> <widget class="QLabel" name="supporters">
<property name="text"> <property name="text">
<string>&lt;p&gt;&lt;b&gt;Supporters:&lt;/b&gt;&lt;br&gt;&lt;br&gt;Howard Garrison&lt;br&gt;EXPotemkin&lt;br&gt;Marko V.&lt;br&gt;danhp&lt;br&gt;Jake (5315825)&lt;br&gt;Ian Reid&lt;br&gt;Tad Sherlock&lt;br&gt;Tyler Friesen&lt;br&gt;Folzar&lt;br&gt;Payton Williams&lt;br&gt;RedPill Australia&lt;br&gt;yanghong&lt;br&gt;Mohammed El-Serougi&lt;br&gt;Дима ~Ximer13~ Кулин&lt;br&gt;James Reed&lt;br&gt;BaroqueSonata&lt;br&gt;Bonzay0&lt;br&gt;Henrijs Kons&lt;br&gt;eoiz&lt;br&gt;Lena Stöffler&lt;br&gt;Michael Holder&lt;br&gt;Max Bosse&lt;br&gt;Tyler Whisinnand&lt;br&gt;Gato Harvey&lt;br&gt;cain4355&lt;br&gt;Thomas Peltier&lt;br&gt;Loli Co.&lt;br&gt;MapleLoonie&lt;br&gt;Travis McEwen&lt;br&gt;Scott Singratsomboune&lt;br&gt;T.E&lt;br&gt;Lukas Rieger&lt;br&gt;Dane Madsen&lt;br&gt;JMS&lt;br&gt;Jonatan R&lt;br&gt;Luke Johnson&lt;br&gt;Thomas Zaorski&lt;br&gt;MyOwnFan&lt;br&gt;Alexandros Mandravillis&lt;br&gt;Socker Bopper&lt;br&gt;Faris Leonhart&lt;br&gt;Fabien Net&lt;br&gt;Raves&lt;br&gt;Barrowsx&lt;br&gt;kilsuton&lt;br&gt;Max Mason&lt;br&gt;Ethan Condon&lt;br&gt;jfidone&lt;br&gt;iaDRM&lt;br&gt;Kazer2.0&lt;br&gt;Bryce Quintin&lt;br&gt;Yuri Kunde Schlesner&lt;br&gt;Abdulla Altayer&lt;br&gt;Nicolas Jallamion&lt;br&gt;Vorvek&lt;br&gt;Ian Faddis&lt;br&gt;Leon&lt;br&gt;Mohammad Taleb&lt;br&gt;Jokez&lt;br&gt;crashX&lt;br&gt;Raveskirza&lt;br&gt;Grant Deacon&lt;br&gt;michael&lt;br&gt;David Zech&lt;br&gt;Ben Manoochehri&lt;br&gt;Adnan Kovacevic&lt;br&gt;Mighty J&lt;br&gt;Sam Shan Jiang&lt;br&gt;TheAnig&lt;br&gt;Rodney Coleman&lt;br&gt;FiniteAce&lt;br&gt;Kian Soon Alex Chiam&lt;br&gt;yukkuri&lt;br&gt;Justin Chadwick&lt;br&gt;toxic Itzi&lt;br&gt;Templerror&lt;br&gt;Myles Wesley Carlson&lt;br&gt;Max Bosse&lt;br&gt;Ethan Clark&lt;br&gt;LupineDream&lt;br&gt;CheatCodesOfLife&lt;br&gt;Jan Zykmund&lt;br&gt;Francesco Cinquemani&lt;br&gt;Andylg&lt;br&gt;Julia H de Camargos&lt;br&gt;Suvodip Mitra&lt;br&gt;Goh&lt;br&gt;Dmitry&lt;br&gt;Steel Brain&lt;br&gt;VarieZ&lt;br&gt;William Swango&lt;br&gt;Matthew Messersmith&lt;br&gt;Duane Locsin&lt;br&gt;Shuddertrix&lt;br&gt;Loweys Litsman&lt;br&gt;Shuddertrix&lt;br&gt;Mason Ferrie&lt;br&gt;Richard Kaplan&lt;br&gt;Hugues Valois&lt;br&gt;richard(lath..ch@)&lt;br&gt;Johnathan (Virtuous John)&lt;br&gt;eoiz&lt;br&gt;Dany Huguenin&lt;br&gt;doobieashtray&lt;br&gt;dean(mag..94@)&lt;br&gt;Pommier Jean-Philippe&lt;br&gt;Douglas Alan Albino&lt;br&gt;Ryan Mull&lt;br&gt;Thor-Erling Engen&lt;br&gt;Nick Carpenter&lt;br&gt;curryking3&lt;br&gt;Jared Tracton&lt;br&gt;alex(koo..oh@)&lt;br&gt;Jason O'Brien&lt;br&gt;Skeletal Charizard&lt;br&gt;Ace00&lt;br&gt;Brandon Corujo&lt;br&gt;HyperBitHero&lt;br&gt;佳文 李&lt;br&gt;sorryboi <string notr="true">&lt;p&gt;Howard Garrison&lt;br&gt;EXPotemkin&lt;br&gt;Marko V.&lt;br&gt;danhp&lt;br&gt;Jake (5315825)&lt;br&gt;Ian Reid&lt;br&gt;Tad Sherlock&lt;br&gt;Tyler Friesen&lt;br&gt;Folzar&lt;br&gt;Payton Williams&lt;br&gt;RedPill Australia&lt;br&gt;yanghong&lt;br&gt;Mohammed El-Serougi&lt;br&gt;Дима ~Ximer13~ Кулин&lt;br&gt;James Reed&lt;br&gt;BaroqueSonata&lt;br&gt;Bonzay0&lt;br&gt;Henrijs Kons&lt;br&gt;eoiz&lt;br&gt;Lena Stöffler&lt;br&gt;Michael Holder&lt;br&gt;Max Bosse&lt;br&gt;Tyler Whisinnand&lt;br&gt;Gato Harvey&lt;br&gt;cain4355&lt;br&gt;Thomas Peltier&lt;br&gt;Loli Co.&lt;br&gt;MapleLoonie&lt;br&gt;Travis McEwen&lt;br&gt;Scott Singratsomboune&lt;br&gt;T.E&lt;br&gt;Lukas Rieger&lt;br&gt;Dane Madsen&lt;br&gt;JMS&lt;br&gt;Jonatan R&lt;br&gt;Luke Johnson&lt;br&gt;Thomas Zaorski&lt;br&gt;MyOwnFan&lt;br&gt;Alexandros Mandravillis&lt;br&gt;Socker Bopper&lt;br&gt;Faris Leonhart&lt;br&gt;Fabien Net&lt;br&gt;Raves&lt;br&gt;Barrowsx&lt;br&gt;kilsuton&lt;br&gt;Max Mason&lt;br&gt;Ethan Condon&lt;br&gt;jfidone&lt;br&gt;iaDRM&lt;br&gt;Kazer2.0&lt;br&gt;Bryce Quintin&lt;br&gt;Yuri Kunde Schlesner&lt;br&gt;Abdulla Altayer&lt;br&gt;Nicolas Jallamion&lt;br&gt;Vorvek&lt;br&gt;Ian Faddis&lt;br&gt;Leon&lt;br&gt;Mohammad Taleb&lt;br&gt;Jokez&lt;br&gt;crashX&lt;br&gt;Raveskirza&lt;br&gt;Grant Deacon&lt;br&gt;michael&lt;br&gt;David Zech&lt;br&gt;Ben Manoochehri&lt;br&gt;Adnan Kovacevic&lt;br&gt;Mighty J&lt;br&gt;Sam Shan Jiang&lt;br&gt;TheAnig&lt;br&gt;Rodney Coleman&lt;br&gt;FiniteAce&lt;br&gt;Kian Soon Alex Chiam&lt;br&gt;yukkuri&lt;br&gt;Justin Chadwick&lt;br&gt;toxic Itzi&lt;br&gt;Templerror&lt;br&gt;Myles Wesley Carlson&lt;br&gt;Max Bosse&lt;br&gt;Ethan Clark&lt;br&gt;LupineDream&lt;br&gt;CheatCodesOfLife&lt;br&gt;Jan Zykmund&lt;br&gt;Francesco Cinquemani&lt;br&gt;Andylg&lt;br&gt;Julia H de Camargos&lt;br&gt;Suvodip Mitra&lt;br&gt;Goh&lt;br&gt;Dmitry&lt;br&gt;Steel Brain&lt;br&gt;VarieZ&lt;br&gt;William Swango&lt;br&gt;Matthew Messersmith&lt;br&gt;Duane Locsin&lt;br&gt;Shuddertrix&lt;br&gt;Loweys Litsman&lt;br&gt;Shuddertrix&lt;br&gt;Mason Ferrie&lt;br&gt;Richard Kaplan&lt;br&gt;Hugues Valois&lt;br&gt;richard(lath..ch@)&lt;br&gt;Johnathan (Virtuous John)&lt;br&gt;eoiz&lt;br&gt;Dany Huguenin&lt;br&gt;doobieashtray&lt;br&gt;dean(mag..94@)&lt;br&gt;Pommier Jean-Philippe&lt;br&gt;Douglas Alan Albino&lt;br&gt;Ryan Mull&lt;br&gt;Thor-Erling Engen&lt;br&gt;Nick Carpenter&lt;br&gt;curryking3&lt;br&gt;Jared Tracton&lt;br&gt;alex(koo..oh@)&lt;br&gt;Jason O'Brien&lt;br&gt;Skeletal Charizard&lt;br&gt;Ace00&lt;br&gt;Brandon Corujo&lt;br&gt;HyperBitHero&lt;br&gt;佳文 李&lt;br&gt;sorryboi
&lt;br&gt;Johnson Bui &lt;br&gt;Johnson Bui
&lt;br&gt;itachi1986 &lt;br&gt;itachi1986
&lt;br&gt;Mortano &lt;br&gt;Mortano
@ -290,20 +344,22 @@
&lt;/p&gt;</string> &lt;/p&gt;</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property> </property>
<property name="textInteractionFlags"> <property name="textInteractionFlags">
<set>Qt::TextSelectableByMouse</set> <set>Qt::TextInteractionFlag::TextSelectableByMouse</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout>
</item>
<item> <item>
<spacer name="names_spacer"> <spacer name="names_spacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum> <enum>QSizePolicy::Policy::MinimumExpanding</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -376,7 +432,7 @@
<item> <item>
<spacer name="button_spacer"> <spacer name="button_spacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>

View file

@ -990,7 +990,7 @@ void cheat_manager_dialog::do_the_search()
{ {
for (u32 row = 0; row < size; row++) for (u32 row = 0; row < size; row++)
{ {
lst_search->insertItem(row, tr("0x%0").arg(offsets_found[row], 1, 16).toUpper()); lst_search->insertItem(row, QString("0x%0").arg(offsets_found[row], 1, 16).toUpper());
} }
} }
@ -1024,7 +1024,7 @@ void cheat_manager_dialog::update_cheat_list()
item_type->setFlags(item_type->flags() & ~Qt::ItemIsEditable); item_type->setFlags(item_type->flags() & ~Qt::ItemIsEditable);
tbl_cheats->setItem(row, cheat_table_columns::type, item_type); tbl_cheats->setItem(row, cheat_table_columns::type, item_type);
QTableWidgetItem* item_offset = new QTableWidgetItem(tr("0x%1").arg(offset.second.offset, 1, 16).toUpper()); QTableWidgetItem* item_offset = new QTableWidgetItem(QString("0x%0").arg(offset.second.offset, 1, 16).toUpper());
item_offset->setData(Qt::UserRole, QVariant(offset.second.offset)); item_offset->setData(Qt::UserRole, QVariant(offset.second.offset));
item_offset->setFlags(item_offset->flags() & ~Qt::ItemIsEditable); item_offset->setFlags(item_offset->flags() & ~Qt::ItemIsEditable);
tbl_cheats->setItem(row, cheat_table_columns::offset, item_offset); tbl_cheats->setItem(row, cheat_table_columns::offset, item_offset);

View file

@ -1207,7 +1207,7 @@ void debugger_frame::OnSelectSPUDisassembler()
} }
m_spu_disasm_dialog = new QDialog(this); m_spu_disasm_dialog = new QDialog(this);
m_spu_disasm_dialog->setWindowTitle(tr("SPU Disassmebler Properties")); m_spu_disasm_dialog->setWindowTitle(tr("SPU Disassembler Properties"));
// Panels // Panels
QVBoxLayout* vbox_panel(new QVBoxLayout()); QVBoxLayout* vbox_panel(new QVBoxLayout());

View file

@ -773,7 +773,7 @@ void dimensions_dialog::load_figure_path(u8 pad, u8 index, const QString& path)
} }
else else
{ {
m_edit_figures[index]->setText(tr("Blank Tag")); m_edit_figures[index]->setText("Blank Tag");
} }
} }
} }

View file

@ -1031,14 +1031,24 @@ void game_list_frame::ItemSelectionChangedSlot()
Q_EMIT NotifyGameSelection(game); Q_EMIT NotifyGameSelection(game);
} }
void game_list_frame::CreateShortcuts(const game_info& gameinfo, const std::set<gui::utils::shortcut_location>& locations) void game_list_frame::CreateShortcuts(const std::vector<game_info>& games, const std::set<gui::utils::shortcut_location>& locations)
{ {
if (locations.empty()) if (games.empty())
{ {
game_list_log.error("Failed to create shortcuts for %s. No locations selected.", qstr(gameinfo->info.name).simplified()); game_list_log.notice("Skip creating shortcuts. No games selected.");
return; return;
} }
if (locations.empty())
{
game_list_log.error("Failed to create shortcuts. No locations selected.");
return;
}
bool success = true;
for (const game_info& gameinfo : games)
{
std::string gameid_token_value; std::string gameid_token_value;
const std::string dev_flash = g_cfg_vfs.get_dev_flash(); const std::string dev_flash = g_cfg_vfs.get_dev_flash();
@ -1086,11 +1096,10 @@ void game_list_frame::CreateShortcuts(const game_info& gameinfo, const std::set<
if (!fs::create_path(target_icon_dir)) if (!fs::create_path(target_icon_dir))
{ {
game_list_log.error("Failed to create shortcut path %s (%s)", qstr(gameinfo->info.name).simplified(), target_icon_dir, fs::g_tls_error); game_list_log.error("Failed to create shortcut path %s (%s)", qstr(gameinfo->info.name).simplified(), target_icon_dir, fs::g_tls_error);
return; success = false;
continue;
} }
bool success = true;
for (const gui::utils::shortcut_location& location : locations) for (const gui::utils::shortcut_location& location : locations)
{ {
std::string destination; std::string destination;
@ -1120,19 +1129,22 @@ void game_list_frame::CreateShortcuts(const game_info& gameinfo, const std::set<
success = false; success = false;
} }
} }
}
#ifdef _WIN32 #ifdef _WIN32
if (locations.size() > 1 || !locations.contains(gui::utils::shortcut_location::rpcs3_shortcuts)) if (locations.size() == 1 && locations.contains(gui::utils::shortcut_location::rpcs3_shortcuts))
#endif
{ {
return;
}
#endif
if (success) if (success)
{ {
QMessageBox::information(this, tr("Success!"), tr("Successfully created shortcut(s).")); QMessageBox::information(this, tr("Success!"), tr("Successfully created shortcut(s)."));
} }
else else
{ {
QMessageBox::warning(this, tr("Warning!"), tr("Failed to create shortcut(s)!")); QMessageBox::warning(this, tr("Warning!"), tr("Failed to create one or more shortcuts!"));
}
} }
} }
@ -1378,7 +1390,7 @@ void game_list_frame::ShowContextMenu(const QPoint &pos)
QAction* create_desktop_shortcut = manage_game_menu->addAction(tr("&Create Desktop Shortcut")); QAction* create_desktop_shortcut = manage_game_menu->addAction(tr("&Create Desktop Shortcut"));
connect(create_desktop_shortcut, &QAction::triggered, this, [this, gameinfo]() connect(create_desktop_shortcut, &QAction::triggered, this, [this, gameinfo]()
{ {
CreateShortcuts(gameinfo, {gui::utils::shortcut_location::desktop}); CreateShortcuts({gameinfo}, {gui::utils::shortcut_location::desktop});
}); });
#ifdef _WIN32 #ifdef _WIN32
QAction* create_start_menu_shortcut = manage_game_menu->addAction(tr("&Create Start Menu Shortcut")); QAction* create_start_menu_shortcut = manage_game_menu->addAction(tr("&Create Start Menu Shortcut"));
@ -1389,7 +1401,7 @@ void game_list_frame::ShowContextMenu(const QPoint &pos)
#endif #endif
connect(create_start_menu_shortcut, &QAction::triggered, this, [this, gameinfo]() connect(create_start_menu_shortcut, &QAction::triggered, this, [this, gameinfo]()
{ {
CreateShortcuts(gameinfo, {gui::utils::shortcut_location::applications}); CreateShortcuts({gameinfo}, {gui::utils::shortcut_location::applications});
}); });
manage_game_menu->addSeparator(); manage_game_menu->addSeparator();

View file

@ -59,7 +59,7 @@ public:
const std::vector<game_info>& GetGameInfo() const; const std::vector<game_info>& GetGameInfo() const;
void CreateShortcuts(const game_info& gameinfo, const std::set<gui::utils::shortcut_location>& locations); void CreateShortcuts(const std::vector<game_info>& games, const std::set<gui::utils::shortcut_location>& locations);
bool IsEntryVisible(const game_info& game, bool search_fallback = false) const; bool IsEntryVisible(const game_info& game, bool search_fallback = false) const;

View file

@ -360,7 +360,7 @@ void log_frame::CreateAndConnectActions()
m_perform_goto_on_debugger->setEnabled(m_log->textCursor().hasSelection() && *goto_signal_accepted); m_perform_goto_on_debugger->setEnabled(m_log->textCursor().hasSelection() && *goto_signal_accepted);
m_perform_goto_thread_on_debugger->setEnabled(m_log->textCursor().hasSelection() && *goto_signal_accepted); m_perform_goto_thread_on_debugger->setEnabled(m_log->textCursor().hasSelection() && *goto_signal_accepted);
m_perform_goto_on_debugger->setToolTip(tr("Jump to the selected hexadecimal address from the log text on the debugger.")); m_perform_goto_on_debugger->setToolTip(tr("Jump to the selected hexadecimal address from the log text on the debugger."));
m_perform_goto_thread_on_debugger->setToolTip(tr("Show the thread that corresponds to the thread ID from lthe log text on the debugger.")); m_perform_goto_thread_on_debugger->setToolTip(tr("Show the thread that corresponds to the thread ID from the log text on the debugger."));
menu->addSeparator(); menu->addSeparator();
menu->addActions(m_log_level_acts->actions()); menu->addActions(m_log_level_acts->actions());

View file

@ -917,7 +917,7 @@ bool main_window::InstallPackages(QStringList file_paths, bool from_boot)
if (!info.changelog.isEmpty()) if (!info.changelog.isEmpty())
{ {
mb.setInformativeText(tr("To see the changelog, please click \"Show Details\".")); mb.setInformativeText(tr("To see the changelog, please click \"Show Details\"."));
mb.setDetailedText(tr("%0").arg(info.changelog)); mb.setDetailedText(info.changelog);
// Smartass hack to make the unresizeable message box wide enough for the changelog // Smartass hack to make the unresizeable message box wide enough for the changelog
const int log_width = QLabel(info.changelog).sizeHint().width(); const int log_width = QLabel(info.changelog).sizeHint().width();
@ -2497,7 +2497,13 @@ void main_window::ShowOptionalGamePreparations(const QString& title, const QStri
locations.insert(gui::utils::shortcut_location::applications); locations.insert(gui::utils::shortcut_location::applications);
} }
if (locations.empty() && !create_caches)
{
return;
}
std::vector<game_info> game_data; std::vector<game_info> game_data;
std::vector<game_info> game_data_shortcuts;
for (const auto& [boot_path, title_id] : paths) for (const auto& [boot_path, title_id] : paths)
{ {
@ -2507,7 +2513,10 @@ void main_window::ShowOptionalGamePreparations(const QString& title, const QStri
{ {
if (Emu.IsPathInsideDir(boot_path, gameinfo->info.path)) if (Emu.IsPathInsideDir(boot_path, gameinfo->info.path))
{ {
m_game_list_frame->CreateShortcuts(gameinfo, locations); if (!locations.empty())
{
game_data_shortcuts.push_back(gameinfo);
}
if (create_caches) if (create_caches)
{ {
@ -2520,6 +2529,11 @@ void main_window::ShowOptionalGamePreparations(const QString& title, const QStri
} }
} }
if (!game_data_shortcuts.empty() && !locations.empty())
{
m_game_list_frame->CreateShortcuts(game_data_shortcuts, locations);
}
if (!game_data.empty()) if (!game_data.empty())
{ {
m_game_list_frame->BatchCreateCPUCaches(game_data); m_game_list_frame->BatchCreateCPUCaches(game_data);

View file

@ -119,7 +119,7 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent, std::shared_ptr<CPUDis
QString textFromValue(int value) const override QString textFromValue(int value) const override
{ {
return tr("%0").arg(1 << value); return QString("%0").arg(1 << value);
} }
}; };

View file

@ -27,7 +27,6 @@
LOG_CHANNEL(cfg_log, "CFG"); LOG_CHANNEL(cfg_log, "CFG");
inline std::string sstr(const QString& _in) { return _in.toStdString(); } inline std::string sstr(const QString& _in) { return _in.toStdString(); }
constexpr auto qstr = QString::fromStdString;
cfg_input_configurations g_cfg_input_configs; cfg_input_configurations g_cfg_input_configs;
@ -77,7 +76,7 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
if (game) if (game)
{ {
m_title_id = game->serial; m_title_id = game->serial;
setWindowTitle(tr("Gamepad Settings: [%0] %1").arg(qstr(game->serial)).arg(qstr(game->name).simplified())); setWindowTitle(tr("Gamepad Settings: [%0] %1").arg(QString::fromStdString(game->serial)).arg(QString::fromStdString(game->name).simplified()));
} }
else else
{ {
@ -89,13 +88,13 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
if (m_title_id.empty()) if (m_title_id.empty())
{ {
const QString input_config_dir = qstr(rpcs3::utils::get_input_config_dir(m_title_id)); const QString input_config_dir = QString::fromStdString(rpcs3::utils::get_input_config_dir(m_title_id));
QStringList config_files = gui::utils::get_dir_entries(QDir(input_config_dir), QStringList() << "*.yml"); QStringList config_files = gui::utils::get_dir_entries(QDir(input_config_dir), QStringList() << "*.yml");
QString active_config_file = qstr(g_cfg_input_configs.active_configs.get_value(g_cfg_input_configs.global_key)); QString active_config_file = QString::fromStdString(g_cfg_input_configs.active_configs.get_value(g_cfg_input_configs.global_key));
if (!config_files.contains(active_config_file)) if (!config_files.contains(active_config_file))
{ {
const QString default_config_file = qstr(g_cfg_input_configs.default_config); const QString default_config_file = QString::fromStdString(g_cfg_input_configs.default_config);
if (!config_files.contains(default_config_file) && CreateConfigFile(input_config_dir, default_config_file)) if (!config_files.contains(default_config_file) && CreateConfigFile(input_config_dir, default_config_file))
{ {
@ -114,7 +113,7 @@ pad_settings_dialog::pad_settings_dialog(std::shared_ptr<gui_settings> gui_setti
} }
else else
{ {
ui->chooseConfig->addItem(qstr(m_title_id)); ui->chooseConfig->addItem(QString::fromStdString(m_title_id));
ui->gb_config_files->setEnabled(false); ui->gb_config_files->setEnabled(false);
} }
@ -673,7 +672,7 @@ void pad_settings_dialog::ReloadButtons()
auto updateButton = [this](int id, QPushButton* button, cfg::string* cfg_text) auto updateButton = [this](int id, QPushButton* button, cfg::string* cfg_text)
{ {
const QString text = qstr(*cfg_text); const QString text = QString::fromStdString(*cfg_text);
m_cfg_entries.insert(std::make_pair(id, pad_button{cfg_text, *cfg_text, text})); m_cfg_entries.insert(std::make_pair(id, pad_button{cfg_text, *cfg_text, text}));
button->setText(text); button->setText(text);
}; };
@ -1228,7 +1227,7 @@ void pad_settings_dialog::UpdateLabels(bool is_reset)
if (is_reset) if (is_reset)
{ {
button.keys = *button.cfg_text; button.keys = *button.cfg_text;
button.text = qstr(button.keys); button.text = QString::fromStdString(button.keys);
} }
// The button has to contain at least one character, because it would be square'ish otherwise // The button has to contain at least one character, because it would be square'ish otherwise
@ -1493,7 +1492,7 @@ void pad_settings_dialog::ChangeHandler()
case pad_handler::skateboard: case pad_handler::skateboard:
case pad_handler::move: case pad_handler::move:
{ {
const QString name_string = qstr(m_handler->name_string()); const QString name_string = QString::fromStdString(m_handler->name_string());
for (usz i = 1; i <= m_handler->max_devices(); i++) // Controllers 1-n in GUI for (usz i = 1; i <= m_handler->max_devices(); i++) // Controllers 1-n in GUI
{ {
const QString device_name = name_string + QString::number(i); const QString device_name = name_string + QString::number(i);
@ -1628,15 +1627,15 @@ void pad_settings_dialog::ChangeConfig(const QString& config_file)
} }
const u32 player_id = GetPlayerIndex(); const u32 player_id = GetPlayerIndex();
const std::string handler = fmt::format("%s", g_cfg_input.player[player_id]->handler.get()); const QString q_handler = QString::fromStdString(g_cfg_input.player[player_id]->handler.to_string());
if (const QString q_handler = qstr(handler); ui->chooseHandler->findText(q_handler) >= 0) if (const int index = ui->chooseHandler->findData(q_handler); index >= 0)
{ {
ui->chooseHandler->setCurrentText(q_handler); ui->chooseHandler->setCurrentIndex(index);
} }
else else
{ {
cfg_log.error("Handler '%s' not found in handler dropdown.", handler); cfg_log.error("Handler '%s' not found in handler dropdown.", q_handler);
} }
// Force Refresh // Force Refresh
@ -1773,7 +1772,7 @@ void pad_settings_dialog::AddConfigFile()
QMessageBox::warning(this, tr("Error"), tr("Please choose a non-existing name")); QMessageBox::warning(this, tr("Error"), tr("Please choose a non-existing name"));
continue; continue;
} }
if (CreateConfigFile(qstr(rpcs3::utils::get_input_config_dir(m_title_id)), config_name)) if (CreateConfigFile(QString::fromStdString(rpcs3::utils::get_input_config_dir(m_title_id)), config_name))
{ {
ui->chooseConfig->addItem(config_name); ui->chooseConfig->addItem(config_name);
ui->chooseConfig->setCurrentText(config_name); ui->chooseConfig->setCurrentText(config_name);
@ -1799,12 +1798,12 @@ void pad_settings_dialog::RefreshHandlers()
const std::vector<std::string> str_inputs = g_cfg_input.player[0]->handler.to_list(); const std::vector<std::string> str_inputs = g_cfg_input.player[0]->handler.to_list();
for (usz i = 0; i < str_inputs.size(); i++) for (usz i = 0; i < str_inputs.size(); i++)
{ {
const QString item_data = qstr(str_inputs[i]); const QString item_data = QString::fromStdString(str_inputs[i]);
ui->chooseHandler->addItem(GetLocalizedPadHandler(item_data, static_cast<pad_handler>(i)), QVariant(item_data)); ui->chooseHandler->addItem(GetLocalizedPadHandler(item_data, static_cast<pad_handler>(i)), QVariant(item_data));
} }
const auto& handler = g_cfg_input.player[player_id]->handler; const QString item_data = QString::fromStdString(g_cfg_input.player[player_id]->handler.to_string());
ui->chooseHandler->setCurrentText(GetLocalizedPadHandler(qstr(handler.to_string()), handler)); ui->chooseHandler->setCurrentIndex(ui->chooseHandler->findData(QVariant(item_data)));
} }
ui->chooseHandler->blockSignals(false); ui->chooseHandler->blockSignals(false);
@ -1932,7 +1931,9 @@ void pad_settings_dialog::SaveExit()
m_gui_settings->ShowConfirmationBox( m_gui_settings->ShowConfirmationBox(
tr("Warning!"), tr("Warning!"),
tr("The %0 button <b>%1</b> of <b>Player %2</b> was assigned at least twice.<br>Please consider adjusting the configuration.<br><br>Continue anyway?<br>") tr("The %0 button <b>%1</b> of <b>Player %2</b> was assigned at least twice.<br>Please consider adjusting the configuration.<br><br>Continue anyway?<br>")
.arg(qstr(g_cfg_input.player[player_id]->handler.to_string())).arg(qstr(key)).arg(player_id + 1), .arg(QString::fromStdString(g_cfg_input.player[player_id]->handler.to_string()))
.arg(QString::fromStdString(key))
.arg(player_id + 1),
gui::ib_same_buttons, &result, this); gui::ib_same_buttons, &result, this);
if (result == QMessageBox::No) if (result == QMessageBox::No)

View file

@ -1082,7 +1082,7 @@ void patch_manager_dialog::dropEvent(QDropEvent* event)
QString message = tr("Errors were found in the patch file."); QString message = tr("Errors were found in the patch file.");
QMessageBox* mb = new QMessageBox(QMessageBox::Icon::Critical, tr("Validation failed"), message, QMessageBox::Ok, this); QMessageBox* mb = new QMessageBox(QMessageBox::Icon::Critical, tr("Validation failed"), message, QMessageBox::Ok, this);
mb->setInformativeText(tr("To see the error log, please click \"Show Details\".")); mb->setInformativeText(tr("To see the error log, please click \"Show Details\"."));
mb->setDetailedText(tr("%0").arg(summary)); mb->setDetailedText(summary);
mb->setAttribute(Qt::WA_DeleteOnClose); mb->setAttribute(Qt::WA_DeleteOnClose);
// Smartass hack to make the unresizeable message box wide enough for the changelog // Smartass hack to make the unresizeable message box wide enough for the changelog
@ -1304,7 +1304,7 @@ bool patch_manager_dialog::handle_json(const QByteArray& data)
QString message = tr("Errors were found in the downloaded patch file."); QString message = tr("Errors were found in the downloaded patch file.");
QMessageBox* mb = new QMessageBox(QMessageBox::Icon::Critical, tr("Validation failed"), message, QMessageBox::Ok, this); QMessageBox* mb = new QMessageBox(QMessageBox::Icon::Critical, tr("Validation failed"), message, QMessageBox::Ok, this);
mb->setInformativeText(tr("To see the error log, please click \"Show Details\".")); mb->setInformativeText(tr("To see the error log, please click \"Show Details\"."));
mb->setDetailedText(tr("%0").arg(summary)); mb->setDetailedText(summary);
mb->setAttribute(Qt::WA_DeleteOnClose); mb->setAttribute(Qt::WA_DeleteOnClose);
// Smartass hack to make the unresizeable message box wide enough for the changelog // Smartass hack to make the unresizeable message box wide enough for the changelog

View file

@ -68,7 +68,7 @@ pkg_install_dialog::pkg_install_dialog(const QStringList& paths, game_compatibil
else if (!info.local_cat.isEmpty()) else if (!info.local_cat.isEmpty())
{ {
append_comma(); append_comma();
accumulated_info += tr("%0", "Package type info").arg(info.local_cat); accumulated_info += info.local_cat;
} }
if (!info.version.isEmpty()) if (!info.version.isEmpty())