mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-08-22 14:02:58 +02:00
Update to v094r40 release.
byuu says: Changelog: - updated to newest hiro API - SFC performance profile builds once again - hiro: Qt port completed Errata 1: the hiro/Qt target won't run tomoko just yet. Starts by crashing inside InputSettings because hiro/Qt isn't forcefully selecting the first item added to a ComboButton just yet. Even with a monkey patch to get around that, the UI is incredibly unstable. Lots of geometry calculation bugs, and a crash when you try and access certain folders in the browser dialog. Lots of work left to be done there, sadly. Errata 2: the hiro/Windows port has black backgrounds on all ListView items. It's because I need to test for unassigned colors and grab the default Windows brush colors in those cases. Note: alternating row colors on multi-column ListView widgets is gone now. Not a bug. May add it back later, but I'm not sure. It doesn't interact nicely with per-cell background colors. Things left to do: First, I have to fix the Windows and Qt target bugs. Next, I need to go through and revise the hiro API even more (nothing too major.) Next, I need to update icarus to use the new hiro API, and add support for the SFC games database. Next, I have to rewrite my TSV->BML cheat code tool. Next, I need to post a final WIP of higan+icarus publicly and wait a few days. Next, I need to fix any bugs reported from the final WIP that I can. Finally, I should be able to release v095.
This commit is contained in:
@@ -32,30 +32,30 @@ private:
|
||||
//accept button clicked, or enter pressed on file name line edit
|
||||
//also called by list view activate after special case handling
|
||||
auto BrowserDialogWindow::accept() -> void {
|
||||
auto selectedItems = view.selectedItems();
|
||||
auto batched = view.batched();
|
||||
|
||||
if(state.action == "openFile" && selectedItems) {
|
||||
string name = selectedItems.first()->cell(0)->text();
|
||||
if(state.action == "openFile" && batched) {
|
||||
string name = batched.first()->cell(0)->text();
|
||||
if(isFolder(name)) return setPath({state.path, name});
|
||||
state.response.append(string{state.path, name});
|
||||
}
|
||||
|
||||
if(state.action == "openFiles") {
|
||||
for(auto selectedItem : selectedItems) {
|
||||
string name = selectedItem->cell(0)->text();
|
||||
for(auto item : batched) {
|
||||
string name = item->cell(0)->text();
|
||||
state.response.append(string{state.path, name, isFolder(name) ? "/" : ""});
|
||||
}
|
||||
}
|
||||
|
||||
if(state.action == "openFolder" && selectedItems) {
|
||||
string name = selectedItems.first()->cell(0)->text();
|
||||
if(state.action == "openFolder" && batched) {
|
||||
string name = batched.first()->cell(0)->text();
|
||||
if(!isMatch(name)) return setPath({state.path, name});
|
||||
state.response.append(string{state.path, name, "/"});
|
||||
}
|
||||
|
||||
if(state.action == "saveFile") {
|
||||
string name = fileName.text();
|
||||
if(!name && selectedItems) name = selectedItems.first()->cell(0)->text();
|
||||
if(!name && batched) name = batched.first()->cell(0)->text();
|
||||
if(!name || isFolder(name)) return;
|
||||
if(file::exists({state.path, name})) {
|
||||
if(MessageDialog("File already exists; overwrite it?").question() != "Yes") return;
|
||||
@@ -63,8 +63,8 @@ auto BrowserDialogWindow::accept() -> void {
|
||||
state.response.append(string{state.path, name});
|
||||
}
|
||||
|
||||
if(state.action == "selectFolder" && selectedItems) {
|
||||
string name = selectedItems.first()->cell(0)->text();
|
||||
if(state.action == "selectFolder" && batched) {
|
||||
string name = batched.first()->cell(0)->text();
|
||||
if(isFolder(name)) state.response.append(string{state.path, name, "/"});
|
||||
}
|
||||
|
||||
@@ -162,7 +162,9 @@ auto BrowserDialogWindow::setPath(string path) -> void {
|
||||
pathName.setText(state.path = path);
|
||||
|
||||
view.reset();
|
||||
view.append(ListViewColumn().setExpandable());
|
||||
view.append(ListViewHeader().setVisible(false)
|
||||
.append(ListViewColumn().setExpandable())
|
||||
);
|
||||
|
||||
auto contents = directory::icontents(path);
|
||||
bool folderMode = state.action == "openFolder";
|
||||
|
@@ -9,7 +9,7 @@ auto mFixedLayout::append(sSizable sizable, Geometry geometry) -> type& {
|
||||
|
||||
auto mFixedLayout::minimumSize() const -> Size {
|
||||
signed width = Size::Minimum, height = Size::Minimum;
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
width = max(width, sizable(n)->minimumSize().width());
|
||||
height = max(height, sizable(n)->minimumSize().height());
|
||||
}
|
||||
@@ -30,7 +30,7 @@ auto mFixedLayout::reset() -> type& {
|
||||
|
||||
auto mFixedLayout::setEnabled(bool enabled) -> type& {
|
||||
mLayout::setEnabled(enabled);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setEnabled(sizable(n)->enabled());
|
||||
}
|
||||
return *this;
|
||||
@@ -38,7 +38,7 @@ auto mFixedLayout::setEnabled(bool enabled) -> type& {
|
||||
|
||||
auto mFixedLayout::setFont(const string& font) -> type& {
|
||||
mLayout::setFont(font);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setFont(sizable(n)->font());
|
||||
}
|
||||
return *this;
|
||||
@@ -46,7 +46,7 @@ auto mFixedLayout::setFont(const string& font) -> type& {
|
||||
|
||||
auto mFixedLayout::setVisible(bool visible) -> type& {
|
||||
mLayout::setVisible(visible);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setVisible(sizable(n)->visible());
|
||||
}
|
||||
return *this;
|
||||
|
@@ -9,7 +9,7 @@ auto mHorizontalLayout::append(sSizable sizable, Size size, signed spacing) -> t
|
||||
auto mHorizontalLayout::minimumSize() const -> Size {
|
||||
signed width = 0, height = 0;
|
||||
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
if(child.width == Size::Minimum || child.width == Size::Maximum) {
|
||||
width += sizable(n)->minimumSize().width();
|
||||
@@ -19,7 +19,7 @@ auto mHorizontalLayout::minimumSize() const -> Size {
|
||||
if(&child != &properties.last()) width += child.spacing;
|
||||
}
|
||||
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
if(child.height == Size::Minimum || child.height == Size::Maximum) {
|
||||
height = max(height, sizable(n)->minimumSize().height());
|
||||
@@ -50,7 +50,7 @@ auto mHorizontalLayout::setAlignment(double alignment) -> type& {
|
||||
|
||||
auto mHorizontalLayout::setEnabled(bool enabled) -> type& {
|
||||
mLayout::setEnabled(enabled);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setEnabled(sizable(n)->enabled());
|
||||
}
|
||||
return *this;
|
||||
@@ -58,7 +58,7 @@ auto mHorizontalLayout::setEnabled(bool enabled) -> type& {
|
||||
|
||||
auto mHorizontalLayout::setFont(const string& font) -> type& {
|
||||
mLayout::setFont(font);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setFont(sizable(n)->font());
|
||||
}
|
||||
return *this;
|
||||
@@ -68,7 +68,7 @@ auto mHorizontalLayout::setGeometry(Geometry containerGeometry) -> type& {
|
||||
mLayout::setGeometry(containerGeometry);
|
||||
|
||||
auto properties = this->properties;
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
if(child.width == Size::Minimum) child.width = sizable(n)->minimumSize().width();
|
||||
if(child.height == Size::Minimum) child.height = sizable(n)->minimumSize().height();
|
||||
@@ -95,7 +95,7 @@ auto mHorizontalLayout::setGeometry(Geometry containerGeometry) -> type& {
|
||||
signed maximumHeight = 0;
|
||||
for(auto& child : properties) maximumHeight = max(maximumHeight, child.height);
|
||||
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
signed pivot = (maximumHeight - child.height) * settings.alignment;
|
||||
Geometry childGeometry = {geometry.x(), geometry.y() + pivot, child.width, child.height};
|
||||
@@ -120,7 +120,7 @@ auto mHorizontalLayout::setSpacing(signed spacing) -> type& {
|
||||
|
||||
auto mHorizontalLayout::setVisible(bool visible) -> type& {
|
||||
mLayout::setVisible(visible);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setVisible(sizable(n)->visible());
|
||||
}
|
||||
return *this;
|
||||
|
@@ -9,7 +9,7 @@ auto mVerticalLayout::append(sSizable sizable, Size size, signed spacing) -> typ
|
||||
auto mVerticalLayout::minimumSize() const -> Size {
|
||||
signed width = 0, height = 0;
|
||||
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
if(child.width == Size::Minimum || child.width == Size::Maximum) {
|
||||
width = max(width, sizable(n)->minimumSize().width());
|
||||
@@ -18,7 +18,7 @@ auto mVerticalLayout::minimumSize() const -> Size {
|
||||
width = max(width, child.width);
|
||||
}
|
||||
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
if(child.height == Size::Minimum || child.height == Size::Maximum) {
|
||||
height += sizable(n)->minimumSize().height();
|
||||
@@ -50,7 +50,7 @@ auto mVerticalLayout::setAlignment(double alignment) -> type& {
|
||||
|
||||
auto mVerticalLayout::setEnabled(bool enabled) -> type& {
|
||||
mLayout::setEnabled(enabled);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setEnabled(sizable(n)->enabled());
|
||||
}
|
||||
return *this;
|
||||
@@ -58,7 +58,7 @@ auto mVerticalLayout::setEnabled(bool enabled) -> type& {
|
||||
|
||||
auto mVerticalLayout::setFont(const string& font) -> type& {
|
||||
mLayout::setFont(font);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setFont(sizable(n)->font());
|
||||
}
|
||||
return *this;
|
||||
@@ -68,7 +68,7 @@ auto mVerticalLayout::setGeometry(Geometry containerGeometry) -> type& {
|
||||
mLayout::setGeometry(containerGeometry);
|
||||
|
||||
auto properties = this->properties;
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
if(child.width == Size::Minimum) child.width = sizable(n)->minimumSize().width();
|
||||
if(child.height == Size::Minimum) child.height = sizable(n)->minimumSize().height();
|
||||
@@ -95,7 +95,7 @@ auto mVerticalLayout::setGeometry(Geometry containerGeometry) -> type& {
|
||||
signed maximumWidth = 0;
|
||||
for(auto& child : properties) maximumWidth = max(maximumWidth, child.width);
|
||||
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
auto& child = properties[sizable(n)->offset()];
|
||||
signed pivot = (maximumWidth - child.width) * settings.alignment;
|
||||
Geometry childGeometry = {geometry.x() + pivot, geometry.y(), child.width, child.height};
|
||||
@@ -122,7 +122,7 @@ auto mVerticalLayout::setSpacing(signed spacing) -> type& {
|
||||
|
||||
auto mVerticalLayout::setVisible(bool visible) -> type& {
|
||||
mLayout::setVisible(visible);
|
||||
for(auto n : range(sizables())) {
|
||||
for(auto n : range(sizableCount())) {
|
||||
sizable(n)->setVisible(sizable(n)->visible());
|
||||
}
|
||||
return *this;
|
||||
|
Reference in New Issue
Block a user