[gnome-shell-extensions/wip/fmuellner/gtk4: 49/55] auto-move-windows: Port to GTK4
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell-extensions/wip/fmuellner/gtk4: 49/55] auto-move-windows: Port to GTK4
- Date: Thu, 3 Dec 2020 02:06:39 +0000 (UTC)
commit bbf1a412f0683a32959bc4257bf29d83e61cfda4
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Apr 15 23:32:20 2020 +0200
auto-move-windows: Port to GTK4
Just like the previous ports, this consists mostly of
replacing the old Gtk.Container methods.
extensions/auto-move-windows/prefs.js | 74 +++++++++++++++--------------------
1 file changed, 32 insertions(+), 42 deletions(-)
---
diff --git a/extensions/auto-move-windows/prefs.js b/extensions/auto-move-windows/prefs.js
index 1324451..5db6c85 100644
--- a/extensions/auto-move-windows/prefs.js
+++ b/extensions/auto-move-windows/prefs.js
@@ -29,9 +29,9 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
margin_start: 36,
margin_end: 36,
});
- this.add(box);
+ this.set_child(box);
- box.add(new Gtk.Label({
+ box.append(new Gtk.Label({
label: '<b>%s</b>'.format(_('Workspace Rules')),
use_markup: true,
halign: Gtk.Align.START,
@@ -42,7 +42,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
valign: Gtk.Align.START,
});
this._list.set_header_func(this._updateHeader.bind(this));
- box.add(this._list);
+ box.append(this._list);
const context = this._list.get_style_context();
const cssProvider = new Gtk.CssProvider();
@@ -53,7 +53,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
context.add_class('frame');
- this._list.add(new NewRuleRow());
+ this._list.append(new NewRuleRow());
this._actionGroup = new Gio.SimpleActionGroup();
this._list.insert_action_group('rules', this._actionGroup);
@@ -84,12 +84,10 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
this._sync();
this.connect('destroy', () => this._settings.run_dispose());
-
- this.show_all();
}
_onAddActivated() {
- const dialog = new NewRuleDialog(this.get_toplevel());
+ const dialog = new NewRuleDialog(this.get_root());
dialog.connect('response', (dlg, id) => {
const appInfo = id === Gtk.ResponseType.OK
? dialog.get_widget().get_app_info() : null;
@@ -101,6 +99,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
}
dialog.destroy();
});
+ dialog.show();
}
_onRemoveActivated(action, param) {
@@ -113,7 +112,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
}
_getRuleRows() {
- return this._list.get_children().filter(row => !!row.id);
+ return [...this._list].filter(row => !!row.id);
}
_sync() {
@@ -139,7 +138,7 @@ class AutoMoveSettingsWidget extends Gtk.ScrolledWindow {
const removed = oldRules.filter(
({ id }) => !newRules.find(r => r.id === id));
- removed.forEach(r => r.destroy());
+ removed.forEach(r => this._list.remove(r));
this._settings.unblock_signal_handler(this._changedId);
this._updateAction.enabled = true;
@@ -165,12 +164,6 @@ const RuleRow = GObject.registerClass({
},
}, class RuleRow extends Gtk.ListBoxRow {
_init(appInfo, value) {
- super._init({
- activatable: false,
- value,
- });
- this._appInfo = appInfo;
-
const box = new Gtk.Box({
spacing: 6,
margin_top: 6,
@@ -179,12 +172,19 @@ const RuleRow = GObject.registerClass({
margin_end: 6,
});
+ super._init({
+ activatable: false,
+ value,
+ child: box,
+ });
+ this._appInfo = appInfo;
+
const icon = new Gtk.Image({
gicon: appInfo.get_icon(),
pixel_size: 32,
});
icon.get_style_context().add_class('icon-dropshadow');
- box.add(icon);
+ box.append(icon);
const label = new Gtk.Label({
label: appInfo.get_display_name(),
@@ -193,7 +193,7 @@ const RuleRow = GObject.registerClass({
max_width_chars: 20,
ellipsize: Pango.EllipsizeMode.END,
});
- box.add(label);
+ box.append(label);
const spinButton = new Gtk.SpinButton({
adjustment: new Gtk.Adjustment({
@@ -207,26 +207,20 @@ const RuleRow = GObject.registerClass({
this.bind_property('value',
spinButton, 'value',
GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
- box.add(spinButton);
+ box.append(spinButton);
const button = new Gtk.Button({
action_name: 'rules.remove',
action_target: new GLib.Variant('s', this.id),
- image: new Gtk.Image({
+ child: new Gtk.Image({
icon_name: 'edit-delete-symbolic',
pixel_size: 16,
}),
});
- box.add(button);
-
- this.add(box);
-
- this.connect('notify::value', () => {
- const actionGroup = this.get_action_group('rules');
- actionGroup.activate_action('update', null);
- });
+ box.append(button);
- this.show_all();
+ this.connect('notify::value',
+ () => this.activate_action('rules.update', null));
}
get id() {
@@ -239,19 +233,17 @@ class NewRuleRow extends Gtk.ListBoxRow {
_init() {
super._init({
action_name: 'rules.add',
+ child: new Gtk.Image({
+ icon_name: 'list-add-symbolic',
+ pixel_size: 16,
+ margin_top: 12,
+ margin_bottom: 12,
+ margin_start: 12,
+ margin_end: 12,
+ }),
});
- this.get_accessible().set_name(_('Add Rule'));
-
- this.add(new Gtk.Image({
- icon_name: 'list-add-symbolic',
- pixel_size: 16,
- margin_top: 12,
- margin_bottom: 12,
- margin_start: 12,
- margin_end: 12,
- }));
-
- this.show_all();
+ this.update_property(
+ [Gtk.AccessibleProperty.LABEL], [_('Add Rule')]);
}
});
@@ -273,8 +265,6 @@ class NewRuleDialog extends Gtk.AppChooserDialog {
this.get_widget().connect('application-selected',
this._updateSensitivity.bind(this));
this._updateSensitivity();
-
- this.show();
}
_updateSensitivity() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]