shellMountDialog: Switch to new ListLayout for processes dialog
Since there is a generic layout for dialogs like that now, use it. Also remove the functionality of focussing a window when clicking a list item, it's not discoverable at all and pretty unexpected. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/961
This commit is contained in:
parent
d5dbc28f77
commit
7224afd32a
@ -70,66 +70,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* ShellMountOperation Dialogs */
|
||||
.shell-mount-operation-icon {
|
||||
icon-size: $base_icon_size * 3;
|
||||
}
|
||||
|
||||
.mount-dialog {
|
||||
spacing: 24px;
|
||||
|
||||
.message-dialog-title {
|
||||
padding-top: 10px;
|
||||
padding-left: 17px;
|
||||
padding-bottom: 6px;
|
||||
max-width: 34em;
|
||||
}
|
||||
|
||||
.message-dialog-title:rtl {
|
||||
padding-left: 0px;
|
||||
padding-right: 17px;
|
||||
}
|
||||
|
||||
.message-dialog-description {
|
||||
padding-left: 17px;
|
||||
width: 28em;
|
||||
}
|
||||
|
||||
.message-dialog-description:rtl {
|
||||
padding-left: 0px;
|
||||
padding-right: 17px;
|
||||
}
|
||||
}
|
||||
|
||||
.mount-dialog-app-list {
|
||||
max-height: 200px;
|
||||
padding-top: 24px;
|
||||
padding-left: 49px;
|
||||
padding-right: 32px;
|
||||
}
|
||||
|
||||
.mount-dialog-app-list:rtl {
|
||||
padding-right: 49px;
|
||||
padding-left: 32px;
|
||||
}
|
||||
|
||||
.mount-dialog-app-list-item {
|
||||
color: lighten($fg_color,10%);
|
||||
&:hover { color: $fg_color; }
|
||||
&:ltr { padding-right: 1em; }
|
||||
&:rtl { padding-left: 1em; }
|
||||
}
|
||||
|
||||
.mount-dialog-app-list-item-icon {
|
||||
&:ltr { padding-right: 17px; }
|
||||
&:rtl { padding-left: 17px; }
|
||||
}
|
||||
|
||||
.mount-dialog-app-list-item-name {
|
||||
@include fontsize($base_font_size - 1);
|
||||
}
|
||||
|
||||
|
||||
/* Password or Authentication Dialog */
|
||||
|
||||
.prompt-dialog {
|
||||
|
@ -43,41 +43,6 @@ function _setLabelsForMessage(content, message) {
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
var ListItem = GObject.registerClass({
|
||||
Signals: { 'activate': {} },
|
||||
}, class ListItem extends St.Button {
|
||||
_init(app) {
|
||||
let layout = new St.BoxLayout({ vertical: false });
|
||||
super._init({
|
||||
style_class: 'mount-dialog-app-list-item',
|
||||
can_focus: true,
|
||||
child: layout,
|
||||
reactive: true,
|
||||
});
|
||||
|
||||
this._app = app;
|
||||
|
||||
this._icon = this._app.create_icon_texture(LIST_ITEM_ICON_SIZE);
|
||||
|
||||
let iconBin = new St.Bin({ style_class: 'mount-dialog-app-list-item-icon',
|
||||
child: this._icon });
|
||||
layout.add(iconBin);
|
||||
|
||||
this._nameLabel = new St.Label({
|
||||
text: this._app.get_name(),
|
||||
style_class: 'mount-dialog-app-list-item-name',
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
});
|
||||
let labelBin = new St.Bin({ child: this._nameLabel });
|
||||
layout.add(labelBin);
|
||||
}
|
||||
|
||||
vfunc_clicked() {
|
||||
this.emit('activate');
|
||||
this._app.activate();
|
||||
}
|
||||
});
|
||||
|
||||
var ShellMountOperation = class {
|
||||
constructor(source, params) {
|
||||
params = Params.parse(params, { existingDialog: null });
|
||||
@ -258,7 +223,7 @@ var ShellMountQuestionDialog = GObject.registerClass({
|
||||
Signals: { 'response': { param_types: [GObject.TYPE_INT] } },
|
||||
}, class ShellMountQuestionDialog extends ModalDialog.ModalDialog {
|
||||
_init() {
|
||||
super._init({ styleClass: 'mount-dialog' });
|
||||
super._init({ styleClass: 'mount-question-dialog' });
|
||||
|
||||
this._content = new Dialog.MessageDialogContent();
|
||||
this.contentLayout.add_child(this._content);
|
||||
@ -496,38 +461,22 @@ var ShellProcessesDialog = GObject.registerClass({
|
||||
Signals: { 'response': { param_types: [GObject.TYPE_INT] } },
|
||||
}, class ShellProcessesDialog extends ModalDialog.ModalDialog {
|
||||
_init() {
|
||||
super._init({ styleClass: 'mount-dialog' });
|
||||
super._init({ styleClass: 'processes-dialog' });
|
||||
|
||||
this._content = new Dialog.MessageDialogContent();
|
||||
this.contentLayout.add_child(this._content);
|
||||
|
||||
let scrollView = new St.ScrollView({
|
||||
style_class: 'mount-dialog-app-list',
|
||||
x_expand: true,
|
||||
y_expand: true,
|
||||
});
|
||||
scrollView.set_policy(St.PolicyType.NEVER,
|
||||
St.PolicyType.AUTOMATIC);
|
||||
this.contentLayout.add_child(scrollView);
|
||||
scrollView.hide();
|
||||
this._applicationSection = new Dialog.ListSection();
|
||||
this._applicationSection.hide();
|
||||
this.contentLayout.add_child(this._applicationSection);
|
||||
}
|
||||
|
||||
this._applicationList = new St.BoxLayout({ vertical: true });
|
||||
scrollView.add_actor(this._applicationList);
|
||||
|
||||
this._applicationList.connect('actor-added', () => {
|
||||
if (this._applicationList.get_n_children() == 1)
|
||||
scrollView.show();
|
||||
});
|
||||
|
||||
this._applicationList.connect('actor-removed', () => {
|
||||
if (this._applicationList.get_n_children() == 0)
|
||||
scrollView.hide();
|
||||
});
|
||||
}
|
||||
|
||||
_setAppsForPids(pids) {
|
||||
// remove all the items
|
||||
this._applicationList.destroy_all_children();
|
||||
this._applicationSection.list.destroy_all_children();
|
||||
|
||||
pids.forEach(pid => {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
@ -536,14 +485,15 @@ var ShellProcessesDialog = GObject.registerClass({
|
||||
if (!app)
|
||||
return;
|
||||
|
||||
let item = new ListItem(app);
|
||||
this._applicationList.add_child(item);
|
||||
let listItem = new Dialog.ListSectionItem({
|
||||
icon_actor: app.create_icon_texture(LIST_ITEM_ICON_SIZE),
|
||||
title: app.get_name(),
|
||||
});
|
||||
this._applicationSection.list.add_child(listItem);
|
||||
});
|
||||
|
||||
item.connect('activate', () => {
|
||||
// use -1 to indicate Cancel
|
||||
this.emit('response', -1);
|
||||
});
|
||||
});
|
||||
this._applicationSection.visible =
|
||||
this._applicationSection.list.get_n_children() > 0;
|
||||
}
|
||||
|
||||
update(message, processes, choices) {
|
||||
|
Loading…
Reference in New Issue
Block a user