Ticket #7735: browser_color_v1.patch

File browser_color_v1.patch, 2.1 KB (added by lordhoto, 15 years ago)

Patch against trunk r43556

  • gui/browser.cpp

    diff --git a/gui/browser.cpp b/gui/browser.cpp
    index f4719f4..3cf8bbc 100644
    a b void BrowserDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data  
    186186                        int selection = _fileList->getSelected();
    187187                        if (selection >= 0) {
    188188                                _choice = _nodeContent[selection];
     189
     190                                // If the user selected a file, when the browser is a directory
     191                                // browser, we select the current dir as result instead.
     192                                // TODO: We might think of changing this behavior.
     193                                if (!_choice.isDirectory() && _isDirBrowser)
     194                                        _choice = _node;
    189195                        } else {
    190196                                _choice = _node;
    191197                        }
    void BrowserDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data  
    214220                if (_nodeContent[data].isDirectory()) {
    215221                        _node = _nodeContent[data];
    216222                        updateListing();
    217                 } else {
     223                } else if (!_isDirBrowser) {
    218224                        _choice = _nodeContent[data];
    219225                        setResult(1);
    220226                        close();
    void BrowserDialog::updateListing() {  
    233239        ConfMan.set("browser_lastpath", _node.getPath());
    234240
    235241        // Read in the data from the file system
    236         Common::FSNode::ListMode listMode =
    237                  _isDirBrowser ? Common::FSNode::kListDirectoriesOnly
    238                                : Common::FSNode::kListAll;
    239         if (!_node.getChildren(_nodeContent, listMode)) {
     242        if (!_node.getChildren(_nodeContent, Common::FSNode::kListAll))
    240243                _nodeContent.clear();
    241         } else {
     244        else
    242245                Common::sort(_nodeContent.begin(), _nodeContent.end());
    243         }
    244246
    245247        // Populate the ListWidget
    246248        Common::StringList list;
     249        ListWidget::ColorList colors;
    247250        for (Common::FSList::iterator i = _nodeContent.begin(); i != _nodeContent.end(); ++i) {
    248                 if (!_isDirBrowser && i->isDirectory())
     251                if (i->isDirectory())
    249252                        list.push_back(i->getDisplayName() + "/");
    250253                else
    251254                        list.push_back(i->getDisplayName());
     255
     256                if (_isDirBrowser) {
     257                        if (i->isDirectory())
     258                                colors.push_back(ThemeEngine::kFontColorNormal);
     259                        else
     260                                colors.push_back(ThemeEngine::kFontColorAlternate);
     261                }
    252262        }
    253         _fileList->setList(list);
     263
     264        if (_isDirBrowser)
     265                _fileList->setList(list, &colors);
     266        else
     267                _fileList->setList(list);
    254268        _fileList->scrollTo(0);
    255269
    256270        // Finally, redraw