Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Ports
kcm_sddm
0001-Session-file-parser-Support-sections-and-r...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Session-file-parser-Support-sections-and-respect-the.patch of Package kcm_sddm
From 65dc9de7c45d5ea4affaa6bf9e6601a000c3e321 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fabian@ritter-vogt.de> Date: Tue, 11 Jul 2017 13:05:37 +0200 Subject: [PATCH 1/2] Session file parser: Support sections and respect the Hidden property Summary: Some desktop files have multiple sections, but for now we're only interested in [Desktop Entry]. Without this patch, every entry was seen as part of the [Desktop Entry] session, resulting in values getting overwritten. Additionally, the Hidden=true property specifies that the desktop file needs to be treated like it was non-existant. Same as https://github.com/sddm/sddm/pull/821 for sddm. BUG: 381982 Test Plan: Installed the KCM, now there are no duplicate sessions and the right Name is shown for icewm-session.desktop. Reviewers: #plasma Subscribers: plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D6626 --- src/sessionmodel.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/sessionmodel.cpp b/src/sessionmodel.cpp index a308ee6..036711f 100644 --- a/src/sessionmodel.cpp +++ b/src/sessionmodel.cpp @@ -53,18 +53,36 @@ SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new if (!inputFile.open(QIODevice::ReadOnly)) continue; SessionPtr si { new Session { session, "", "", "" } }; + bool isHidden = false; + QString current_section; QTextStream in(&inputFile); while (!in.atEnd()) { QString line = in.readLine(); + + if (line.startsWith(QLatin1String("["))) { + // The section name ends before the last ] before the start of a comment + int end = line.lastIndexOf(QLatin1Char(']'), line.indexOf(QLatin1Char('#'))); + if (end != -1) + current_section = line.mid(1, end - 1); + } + + if (current_section != QLatin1String("Desktop Entry")) + continue; // We are only interested in the "Desktop Entry" section + if (line.startsWith("Name=")) si->name = line.mid(5); if (line.startsWith("Exec=")) si->exec = line.mid(5); if (line.startsWith("Comment=")) si->comment = line.mid(8); + if (line.startsWith(QLatin1String("Hidden="))) + isHidden = line.mid(7).toLower() == QLatin1String("true"); } - // add to sessions list - d->sessions.push_back(si); + if (!isHidden) { + // add to sessions list + d->sessions.push_back(si); + } + // close file inputFile.close(); } -- 2.13.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor