[gnome-shell] st/settings: Add magnifier activation property and bind to settings
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] st/settings: Add magnifier activation property and bind to settings
- Date: Tue, 2 Apr 2019 20:43:45 +0000 (UTC)
commit 5357e0a18cf94486cb3ad20ec0bc65c8ac932193
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date: Tue Mar 12 21:41:18 2019 +0000
st/settings: Add magnifier activation property and bind to settings
The same code for reading the current magnifier state is repeated in both
shell-recorder, shell-screenshot and magnifier itself.
So to move this inside a property of st-settings so that we can refer to it
all over the places removing duplications.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/473
js/ui/magnifier.js | 18 ++++++------------
src/shell-recorder.c | 22 +++++++++++-----------
src/shell-screenshot.c | 11 ++++++-----
src/st/st-settings.c | 30 ++++++++++++++++++++++++++++++
4 files changed, 53 insertions(+), 28 deletions(-)
---
diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js
index 4717bb82c..021dbd812 100644
--- a/js/ui/magnifier.js
+++ b/js/ui/magnifier.js
@@ -18,9 +18,6 @@ var NO_CHANGE = 0.0;
var POINTER_REST_TIME = 1000; // milliseconds
// Settings
-const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
-const SHOW_KEY = 'screen-magnifier-enabled';
-
const MAGNIFIER_SCHEMA = 'org.gnome.desktop.a11y.magnifier';
const SCREEN_POSITION_KEY = 'screen-position';
const MAG_FACTOR_KEY = 'mag-factor';
@@ -117,12 +114,16 @@ var Magnifier = class Magnifier {
let aZoomRegion = new ZoomRegion(this, this._cursorRoot);
this._zoomRegions.push(aZoomRegion);
- let showAtLaunch = this._settingsInit(aZoomRegion);
+ this._settingsInit(aZoomRegion);
aZoomRegion.scrollContentsTo(this.xMouse, this.yMouse);
+ St.Settings.get().connect('notify::magnifier-active', () => {
+ this.setActive(St.Settings.get().magnifier_active);
+ });
+
// Export to dbus.
magDBusService = new MagnifierDBus.ShellMagnifier();
- this.setActive(showAtLaunch);
+ this.setActive(St.Settings.get().magnifier_active);
}
/**
@@ -501,13 +502,8 @@ var Magnifier = class Magnifier {
}
_settingsInit(zoomRegion) {
- this._appSettings = new Gio.Settings({ schema_id: APPLICATIONS_SCHEMA });
this._settings = new Gio.Settings({ schema_id: MAGNIFIER_SCHEMA });
- this._appSettings.connect('changed::' + SHOW_KEY, () => {
- this.setActive(this._appSettings.get_boolean(SHOW_KEY));
- });
-
this._settings.connect('changed::' + SCREEN_POSITION_KEY,
this._updateScreenPosition.bind(this));
this._settings.connect('changed::' + MAG_FACTOR_KEY,
@@ -614,8 +610,6 @@ var Magnifier = class Magnifier {
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
this.addCrosshairs();
this.setCrosshairsVisible(showCrosshairs);
-
- return this._appSettings.get_boolean(SHOW_KEY);
}
_updateScreenPosition() {
diff --git a/src/shell-recorder.c b/src/shell-recorder.c
index c2e83412c..0203ecf1c 100644
--- a/src/shell-recorder.c
+++ b/src/shell-recorder.c
@@ -17,15 +17,13 @@
#include <meta/meta-cursor-tracker.h>
#include <meta/display.h>
#include <meta/compositor-mutter.h>
+#include <st/st.h>
#include "shell-global.h"
#include "shell-recorder-src.h"
#include "shell-recorder.h"
#include "shell-util.h"
-#define A11Y_APPS_SCHEMA "org.gnome.desktop.a11y.applications"
-#define MAGNIFIER_ACTIVE_KEY "screen-magnifier-enabled"
-
typedef enum {
RECORDER_STATE_CLOSED,
RECORDER_STATE_RECORDING
@@ -58,7 +56,6 @@ struct _ShellRecorder {
int pointer_x;
int pointer_y;
- GSettings *a11y_settings;
gboolean draw_cursor;
MetaCursorTracker *cursor_tracker;
cairo_surface_t *cursor_image;
@@ -213,8 +210,6 @@ shell_recorder_init (ShellRecorder *recorder)
recorder->memory_target = get_memory_target();
- recorder->a11y_settings = g_settings_new (A11Y_APPS_SCHEMA);
-
recorder->state = RECORDER_STATE_CLOSED;
recorder->framerate = DEFAULT_FRAMES_PER_SECOND;
recorder->draw_cursor = TRUE;
@@ -239,8 +234,6 @@ shell_recorder_finalize (GObject *object)
recorder_remove_redraw_timeout (recorder);
- g_clear_object (&recorder->a11y_settings);
-
G_OBJECT_CLASS (shell_recorder_parent_class)->finalize (object);
}
@@ -465,9 +458,16 @@ recorder_record_frame (ShellRecorder *recorder,
GST_BUFFER_PTS(buffer) = now;
- if (recorder->draw_cursor &&
- !g_settings_get_boolean (recorder->a11y_settings, MAGNIFIER_ACTIVE_KEY))
- recorder_draw_cursor (recorder, buffer);
+ if (recorder->draw_cursor)
+ {
+ StSettings *settings = st_settings_get ();
+ gboolean magnifier_active = FALSE;
+
+ g_object_get (settings, "magnifier-active", &magnifier_active, NULL);
+
+ if (magnifier_active)
+ recorder_draw_cursor (recorder, buffer);
+ }
shell_recorder_src_add_buffer (SHELL_RECORDER_SRC (recorder->current_pipeline->src), buffer);
gst_buffer_unref (buffer);
diff --git a/src/shell-screenshot.c b/src/shell-screenshot.c
index c9743f42d..40481c7cf 100644
--- a/src/shell-screenshot.c
+++ b/src/shell-screenshot.c
@@ -7,14 +7,12 @@
#include <meta/meta-plugin.h>
#include <meta/meta-shaped-texture.h>
#include <meta/meta-cursor-tracker.h>
+#include <st/st.h>
#include "shell-global.h"
#include "shell-screenshot.h"
#include "shell-util.h"
-#define A11Y_APPS_SCHEMA "org.gnome.desktop.a11y.applications"
-#define MAGNIFIER_ACTIVE_KEY "screen-magnifier-enabled"
-
typedef struct _ShellScreenshotPrivate ShellScreenshotPrivate;
struct _ShellScreenshot
@@ -271,9 +269,12 @@ should_draw_cursor_image (ShellScreenshotMode mode)
{
if (mode == SHELL_SCREENSHOT_WINDOW || !meta_is_wayland_compositor ())
{
- g_autoptr (GSettings) settings = g_settings_new (A11Y_APPS_SCHEMA);
+ StSettings *settings = st_settings_get ();
+ gboolean magnifier_active = FALSE;
+
+ g_object_get (settings, "magnifier-active", &magnifier_active, NULL);
- if (!g_settings_get_boolean (settings, MAGNIFIER_ACTIVE_KEY))
+ if (!magnifier_active)
return TRUE;
}
diff --git a/src/st/st-settings.c b/src/st/st-settings.c
index 4c2d61fe3..17f2c466e 100644
--- a/src/st/st-settings.c
+++ b/src/st/st-settings.c
@@ -30,6 +30,7 @@
#define KEY_DRAG_THRESHOLD "drag-threshold"
#define KEY_GTK_THEME "gtk-theme"
#define KEY_GTK_ICON_THEME "icon-theme"
+#define KEY_MAGNIFIER_ACTIVE "screen-magnifier-enabled"
enum {
PROP_0,
@@ -38,6 +39,7 @@ enum {
PROP_DRAG_THRESHOLD,
PROP_GTK_THEME,
PROP_GTK_ICON_THEME,
+ PROP_MAGNIFIER_ACTIVE,
N_PROPS
};
@@ -48,11 +50,13 @@ struct _StSettings
GObject parent_object;
GSettings *interface_settings;
GSettings *mouse_settings;
+ GSettings *a11y_settings;
gchar *gtk_theme;
gchar *gtk_icon_theme;
gboolean enable_animations;
gboolean primary_paste;
+ gboolean magnifier_active;
gint drag_threshold;
};
@@ -105,6 +109,9 @@ st_settings_get_property (GObject *object,
case PROP_GTK_ICON_THEME:
g_value_set_string (value, settings->gtk_icon_theme);
break;
+ case PROP_MAGNIFIER_ACTIVE:
+ g_value_set_boolean (value, settings->magnifier_active);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
@@ -144,6 +151,11 @@ st_settings_class_init (StSettingsClass *klass)
"GTK+ Icon Theme",
"",
G_PARAM_READABLE);
+ props[PROP_MAGNIFIER_ACTIVE] = g_param_spec_boolean("magnifier-active",
+ "Magnifier is active",
+ "Weather the a11y magnifier is active",
+ FALSE,
+ G_PARAM_READABLE);
g_object_class_install_properties (object_class, N_PROPS, props);
}
@@ -190,6 +202,18 @@ on_mouse_settings_changed (GSettings *g_settings,
}
}
+static void
+on_a11y_settings_changed (GSettings *g_settings,
+ const gchar *key,
+ StSettings *settings)
+{
+ if (g_str_equal (key, KEY_MAGNIFIER_ACTIVE))
+ {
+ settings->magnifier_active = g_settings_get_boolean (g_settings, key);
+ g_object_notify_by_pspec (G_OBJECT (settings), props[PROP_MAGNIFIER_ACTIVE]);
+ }
+}
+
static void
st_settings_init (StSettings *settings)
{
@@ -201,6 +225,10 @@ st_settings_init (StSettings *settings)
g_signal_connect (settings->interface_settings, "changed",
G_CALLBACK (on_mouse_settings_changed), settings);
+ settings->a11y_settings = g_settings_new ("org.gnome.desktop.a11y.applications");
+ g_signal_connect (settings->a11y_settings, "changed",
+ G_CALLBACK (on_a11y_settings_changed), settings);
+
settings->enable_animations = g_settings_get_boolean (settings->interface_settings,
KEY_ENABLE_ANIMATIONS);
settings->primary_paste = g_settings_get_boolean (settings->interface_settings,
@@ -211,6 +239,8 @@ st_settings_init (StSettings *settings)
KEY_GTK_ICON_THEME);
settings->drag_threshold = g_settings_get_int (settings->mouse_settings,
KEY_DRAG_THRESHOLD);
+ settings->magnifier_active = g_settings_get_boolean (settings->a11y_settings,
+ KEY_MAGNIFIER_ACTIVE);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]