diff --git a/data/Makefile.am b/data/Makefile.am index bffb349b7..5d54a5bbf 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -46,7 +46,10 @@ dist_theme_DATA = \ theme/ws-switch-arrow-left.svg \ theme/ws-switch-arrow-right.svg -gsettings_SCHEMAS = org.gnome.shell.gschema.xml +gsettings_SCHEMAS = \ + org.gnome.accessibility.magnifier.gschema.xml \ + org.gnome.shell.gschema.xml + @INTLTOOL_XML_NOMERGE_RULE@ @GSETTINGS_RULES@ @@ -77,6 +80,7 @@ EXTRA_DIST = \ gnome-shell-clock-preferences.desktop.in.in \ $(menu_DATA) \ $(gconfschema_DATA) \ + org.gnome.accessibility.magnifier.xml.in \ org.gnome.shell.gschema.xml.in CLEANFILES = \ diff --git a/data/gnome-shell.schemas b/data/gnome-shell.schemas index 17373a5b9..72c4751e9 100644 --- a/data/gnome-shell.schemas +++ b/data/gnome-shell.schemas @@ -28,199 +28,5 @@ - - - /schemas/desktop/gnome/accessibility/magnifier/show_magnifier - /desktop/gnome/accessibility/magnifier/show_magnifier - gnome-shell - bool - false - - Show or hide the magnifier - - Show or hide the magnifier and all of its zoom regions. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/mouse_tracking - /desktop/gnome/accessibility/magnifier/mouse_tracking - gnome-shell - int - 1 - - Mouse Tracking Mode - - Determines the position of the magnified mouse image within - the magnified view and how it reacts to system mouse movement. - The values are 0 - none: no mouse tracking; 1 - centered: the - mouse image is displayed at the center of the zoom region - (which also represents the point under the system mouse) and the - magnified contents are scrolled as the system mouse moves; 2 - - proportional: the position of the magnified mouse in the zoom - region is proportionally the same as the position of the system - mouse on screen; or 3 - push: when the magnified mouse - intersects a boundary of the zoom region, the contents are - scrolled into view. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/screen_position - /desktop/gnome/accessibility/magnifier/screen_position - gnome-shell - int - 3 - - Screen position - - The magnified view either fills the entire screen (1), or - occupies the top-half (2), bottom-half (3), left-half (4), or - right-half (5) of the screen. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/mag_factor - /desktop/gnome/accessibility/magnifier/mag_factor - gnome-shell - float - 2.0 - - Magnification factor - - The power of the magnification. A value of 1.0 means no - magnification. A value of 2.0 doubles the size. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/lens_mode - /desktop/gnome/accessibility/magnifier/lens_mode - gnome-shell - bool - false - - Enable lens mode - - Whether the magnified view should be centered over the location - of the system mouse and move with it. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/scroll_at_edges - /desktop/gnome/accessibility/magnifier/scroll_at_edges - gnome-shell - bool - false - - Scroll magnified contents beyond the edges of the desktop - - For centered mouse tracking, when the system pointer is at - or near the edge of the screen, the magnified contents continue - to scroll such that the screen edge moves into the magnified - view. - - - - - - - /schemas/desktop/gnome/accessibility/magnifier/show_cross_hairs - /desktop/gnome/accessibility/magnifier/show_cross_hairs - gnome-shell - bool - false - - Show or hide crosshairs - - Enables/disables display of crosshairs centered on the magnified mouse - sprite. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/cross_hairs_thickness - /desktop/gnome/accessibility/magnifier/cross_hairs_thickness - gnome-shell - int - 8 - - Thickness of the crosshairs - - Width of the vertical and horizontal lines that make up the - crosshairs. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/cross_hairs_color - /desktop/gnome/accessibility/magnifier/cross_hairs_color - gnome-shell - string - #ff0000 - - Color of the crosshairs - - The color of the the vertical and horizontal lines that make up - the crosshairs. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/cross_hairs_opacity - /desktop/gnome/accessibility/magnifier/cross_hairs_opacity - gnome-shell - int - 169 - - Opacity of the crosshairs - - Determines the transparency of the crosshairs, from fully opaque - to fully transparent. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/cross_hairs_length - /desktop/gnome/accessibility/magnifier/cross_hairs_length - gnome-shell - int - 4096 - - Length of the crosshairs - - Determines the length of the vertical and horizontal lines that - make up the crosshairs. - - - - - - /schemas/desktop/gnome/accessibility/magnifier/cross_hairs_clip - /desktop/gnome/accessibility/magnifier/cross_hairs_clip - gnome-shell - bool - false - - Clip the crosshairs at the center - - Determines whether the crosshairs intersect the magnified mouse - sprite, or are clipped such that the ends of the horizontal - and vertical lines surround the mouse image. - - - - diff --git a/data/org.gnome.accessibility.magnifier.gschema.xml.in b/data/org.gnome.accessibility.magnifier.gschema.xml.in new file mode 100644 index 000000000..aa2d4fbcf --- /dev/null +++ b/data/org.gnome.accessibility.magnifier.gschema.xml.in @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + false + <_summary>Show or hide the magnifier + <_description> + Show or hide the magnifier and all of its zoom regions. + + + + 'centered' + <_summary>Mouse Tracking Mode + <_description> + Determines the position of the magnified mouse image within the + magnified view and how it reacts to system mouse movement. The values + are + - none: no mouse tracking; + - centered: the mouse image is + displayed at the center of the zoom region (which also represents + the point under the system mouse) and the magnified contents are + scrolled as the system mouse moves; + - proportional: the position of the magnified mouse in the zoom region + is proportionally the same as the position of the system mouse on screen; + - push: when the magnified mouse intersects a boundary of the zoom + region, the contents are scrolled into view. + + + + 'bottom-half' + <_summary>Screen position + <_description> + The magnified view either fills the entire screen, or occupies the + top-half, bottom-half, left-half, or right-half of the screen. + + + + 2.0 + <_summary>Magnification factor + <_description> + The power of the magnification. A value of 1.0 means no magnification. + A value of 2.0 doubles the size. + + + + false + <_summary>Enable lens mode + <_description> + Whether the magnified view should be centered over the location of + the system mouse and move with it. + + + + false + <_summary> + Scroll magnified contents beyond the edges of the desktop + + <_description> + For centered mouse tracking, when the system pointer is at or near the + edge of the screen, the magnified contents continue to scroll such that + the screen edge moves into the magnified view. + + + + + + false + <_summary>Show or hide crosshairs + <_description> + Enables/disables display of crosshairs centered on the magnified + mouse sprite. + + + + 8 + <_summary>Thickness of the crosshairs + <_description> + Width of the vertical and horizontal lines that make up the crosshairs. + + + + '#ff0000' + <_summary>Color of the crosshairs + <_description> + The color of the the vertical and horizontal lines that make up + the crosshairs. + + + + 169 + <_summary>Opacity of the crosshairs + <_description> + Determines the transparency of the crosshairs, from fully opaque + to fully transparent. + + + + 4096 + <_summary>Length of the crosshairs + <_description> + Determines the length of the vertical and horizontal lines that + make up the crosshairs. + + + + false + <_summary>Clip the crosshairs at the center + <_description> + Determines whether the crosshairs intersect the magnified mouse sprite, + or are clipped such that the ends of the horizontal and vertical lines + surround the mouse image. + + + + diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js index d29197432..9f42ae86c 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js @@ -1,7 +1,7 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ -const GConf = imports.gi.GConf; const Clutter = imports.gi.Clutter; +const Gio = imports.gi.Gio; const Shell = imports.gi.Shell; const St = imports.gi.St; const Lang = imports.lang; @@ -9,6 +9,7 @@ const Mainloop = imports.mainloop; const Main = imports.ui.main; const MagnifierDBus = imports.ui.magnifierDBus; +// Keep enums in sync with GSettings schemas const MouseTrackingMode = { NONE: 0, CENTERED: 1, @@ -25,38 +26,22 @@ const ScreenPosition = { RIGHT_HALF: 5 }; -// Default settings -const DEFAULT_X_MAGFACTOR = 2; -const DEFAULT_Y_MAGFACTOR = 2; -const DEFAULT_MOUSE_POLL_FREQUENCY = 50; -const DEFAULT_LENS_MODE = false; -const DEFAULT_SCREEN_POSITION = ScreenPosition.BOTTOM_HALF; -const DEFAULT_MOUSE_TRACKING_MODE = MouseTrackingMode.CENTERED; -const DEFAULT_CLAMP_SCROLLING_AT_EDGES = true; +const MOUSE_POLL_FREQUENCY = 50; +const CROSSHAIRS_CLIP_SIZE = [100, 100]; -const DEFAULT_SHOW_CROSSHAIRS = false; -const DEFAULT_CROSSHAIRS_THICKNESS = 8; -const DEFAULT_CROSSHAIRS_OPACITY = 169; // 66% -const DEFAULT_CROSSHAIRS_LENGTH = 4096; -const DEFAULT_CROSSHAIRS_CLIP = false; -const DEFAULT_CROSSHAIRS_CLIP_SIZE = [100, 100]; -const DEFAULT_CROSSHAIRS_COLOR = new Clutter.Color(); -DEFAULT_CROSSHAIRS_COLOR.from_string('Red'); - -// GConf settings -const A11Y_MAG_PREFS_DIR = '/desktop/gnome/accessibility/magnifier'; -const SHOW_KEY = A11Y_MAG_PREFS_DIR + '/show_magnifier'; -const SCREEN_POSITION_KEY = A11Y_MAG_PREFS_DIR + '/screen_position'; -const MAG_FACTOR_KEY = A11Y_MAG_PREFS_DIR + '/mag_factor'; -const LENS_MODE_KEY = A11Y_MAG_PREFS_DIR + '/lens_mode'; -const CLAMP_MODE_KEY = A11Y_MAG_PREFS_DIR + '/scroll_at_edges'; -const MOUSE_TRACKING_KEY = A11Y_MAG_PREFS_DIR + '/mouse_tracking'; -const SHOW_CROSS_HAIRS_KEY = A11Y_MAG_PREFS_DIR + '/show_cross_hairs'; -const CROSS_HAIRS_THICKNESS_KEY = A11Y_MAG_PREFS_DIR + '/cross_hairs_thickness'; -const CROSS_HAIRS_COLOR_KEY = A11Y_MAG_PREFS_DIR + '/cross_hairs_color'; -const CROSS_HAIRS_OPACITY_KEY = A11Y_MAG_PREFS_DIR + '/cross_hairs_opacity'; -const CROSS_HAIRS_LENGTH_KEY = A11Y_MAG_PREFS_DIR + '/cross_hairs_length'; -const CROSS_HAIRS_CLIP_KEY = A11Y_MAG_PREFS_DIR + '/cross_hairs_clip'; +// Settings +const SHOW_KEY = 'show-magnifier'; +const SCREEN_POSITION_KEY = 'screen-position'; +const MAG_FACTOR_KEY = 'mag-factor'; +const LENS_MODE_KEY = 'lens-mode'; +const CLAMP_MODE_KEY = 'scroll-at-edges'; +const MOUSE_TRACKING_KEY = 'mouse-tracking'; +const SHOW_CROSS_HAIRS_KEY = 'show-cross-hairs'; +const CROSS_HAIRS_THICKNESS_KEY = 'cross-hairs-thickness'; +const CROSS_HAIRS_COLOR_KEY = 'cross-hairs-color'; +const CROSS_HAIRS_OPACITY_KEY = 'cross-hairs-opacity'; +const CROSS_HAIRS_LENGTH_KEY = 'cross-hairs-length'; +const CROSS_HAIRS_CLIP_KEY = 'cross-hairs-clip'; let magDBusService = null; @@ -77,11 +62,11 @@ Magnifier.prototype = { this._cursorRoot.add_actor(this._mouseSprite); // Create the first ZoomRegion and initialize it according to the - // magnification GConf settings. + // magnification settings. let [xMouse, yMouse, mask] = global.get_pointer(); let aZoomRegion = new ZoomRegion(this, this._cursorRoot); this._zoomRegions.push(aZoomRegion); - let showAtLaunch = this._gConfInit(aZoomRegion); + let showAtLaunch = this._settingsInit(aZoomRegion); aZoomRegion.scrollContentsTo(xMouse, yMouse); xfixesCursor.connect('cursor-change', Lang.bind(this, this._updateMouseSprite)); @@ -151,7 +136,7 @@ Magnifier.prototype = { let prevCoord = { x: NaN, y: NaN }; if (!this._mouseTrackingId) this._mouseTrackingId = Mainloop.timeout_add( - DEFAULT_MOUSE_POLL_FREQUENCY, + MOUSE_POLL_FREQUENCY, Lang.bind(this, this.scrollToMousePos, prevCoord) ); }, @@ -281,18 +266,17 @@ Magnifier.prototype = { /** * addCrosshairs: * Add and show a cross hair centered on the magnified mouse. - * @thickness: The thickness of the vertical and horizontal lines of the - * crosshair. - * @color: The color of the crosshairs - * @opacity: The opacity. - * @length: The length of each hair. - * @clip: Whether the crosshairs intersection is clipped by the - * magnified mouse image. */ - addCrosshairs: function(thickness, color, opacity, length, clip) { + addCrosshairs: function() { if (!this._crossHairs) this._crossHairs = new Crosshairs(); + let thickness = this._settings.get_int(CROSS_HAIRS_THICKNESS_KEY); + let color = this._settings.get_string(CROSS_HAIRS_COLOR_KEY); + let opacity = this._settings.get_int(CROSS_HAIRS_OPACITY_KEY); + let length = this._settings.get_int(CROSS_HAIRS_LENGTH_KEY); + let clip = this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY); + this.setCrosshairsThickness(thickness); this.setCrosshairsColor(color); this.setCrosshairsOpacity(opacity); @@ -313,7 +297,7 @@ Magnifier.prototype = { setCrosshairsVisible: function(visible) { if (visible) { if (!this._crossHairs) - this.addCrosshairs(DEFAULT_CROSSHAIRS_THICKNESS, DEFAULT_CROSSHAIRS_COLOR, DEFAULT_CROSSHAIRS_OPACITY, DEFAULT_CROSSHAIRS_CLIP); + this.addCrosshairs(); this._crossHairs.show(); } else { @@ -425,7 +409,7 @@ Magnifier.prototype = { setCrosshairsClip: function(clip) { if (clip) { if (this._crossHairs) - this._crossHairs.setClip(DEFAULT_CROSSHAIRS_CLIP_SIZE); + this._crossHairs.setClip(CROSSHAIRS_CLIP_SIZE); } else { // Setting no clipping on crosshairs means a zero sized clip @@ -458,61 +442,84 @@ Magnifier.prototype = { this._mouseSprite.set_anchor_point(xHot, yHot); }, - _gConfInit: function(zoomRegion) { - let gConf = GConf.Client.get_default(); + _settingsInit: function(zoomRegion) { + this._settings = new Gio.Settings({ schema: 'org.gnome.accessibility.magnifier' }); + if (zoomRegion) { // Mag factor is accurate to two decimal places. - let aPref = parseFloat(gConf.get_float(MAG_FACTOR_KEY).toFixed(2)); + let aPref = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2)); if (aPref != 0.0) zoomRegion.setMagFactor(aPref, aPref); - aPref = gConf.get_int(SCREEN_POSITION_KEY); + aPref = this._settings.get_enum(SCREEN_POSITION_KEY); if (aPref) zoomRegion.setScreenPosition(aPref); - zoomRegion.setLensMode(gConf.get_bool(LENS_MODE_KEY)); - zoomRegion.setClampScrollingAtEdges(!gConf.get_bool(CLAMP_MODE_KEY)); + zoomRegion.setLensMode(this._settings.get_boolean(LENS_MODE_KEY)); + zoomRegion.setClampScrollingAtEdges(!this._settings.get_boolean(CLAMP_MODE_KEY)); - aPref = gConf.get_int(MOUSE_TRACKING_KEY); + aPref = this._settings.get_enum(MOUSE_TRACKING_KEY); if (aPref) zoomRegion.setMouseTrackingMode(aPref); } - let showCrosshairs = gConf.get_bool(SHOW_CROSS_HAIRS_KEY); - let thickness = gConf.get_int(CROSS_HAIRS_THICKNESS_KEY); - let color = gConf.get_string(CROSS_HAIRS_COLOR_KEY); - let opacity = gConf.get_int(CROSS_HAIRS_OPACITY_KEY); - let length = gConf.get_int(CROSS_HAIRS_LENGTH_KEY); - let clip = gConf.get_bool(CROSS_HAIRS_CLIP_KEY); - this.addCrosshairs(thickness, color, opacity, length, clip); + + let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY); + this.addCrosshairs(); this.setCrosshairsVisible(showCrosshairs); - gConf.add_dir(A11Y_MAG_PREFS_DIR, GConf.ClientPreloadType.PRELOAD_ONELEVEL); - gConf.notify_add(SHOW_KEY, Lang.bind(this, this._updateShowHide)); - gConf.notify_add(SCREEN_POSITION_KEY, Lang.bind(this, this._updateScreenPosition)); - gConf.notify_add(MAG_FACTOR_KEY, Lang.bind(this, this._updateMagFactor)); - gConf.notify_add(LENS_MODE_KEY, Lang.bind(this, this._updateLensMode)); - gConf.notify_add(CLAMP_MODE_KEY, Lang.bind(this, this._updateClampMode)); - gConf.notify_add(MOUSE_TRACKING_KEY, Lang.bind(this, this._updateMouseTrackingMode)); - gConf.notify_add(SHOW_CROSS_HAIRS_KEY, Lang.bind(this, this._updateShowCrosshairs)); - gConf.notify_add(CROSS_HAIRS_THICKNESS_KEY, Lang.bind(this, this._updateCrosshairsThickness)); - gConf.notify_add(CROSS_HAIRS_COLOR_KEY, Lang.bind(this, this._updateCrosshairsColor)); - gConf.notify_add(CROSS_HAIRS_OPACITY_KEY, Lang.bind(this, this._updateCrosshairsOpacity)); - gConf.notify_add(CROSS_HAIRS_LENGTH_KEY, Lang.bind(this, this._updateCrosshairsLength)); - gConf.notify_add(CROSS_HAIRS_CLIP_KEY, Lang.bind(this, this._updateCrosshairsClip)); + this._settings.connect('changed::' + SHOW_KEY, + Lang.bind(this, function() { + this.setActive(this._settings.get_boolean(SHOW_KEY)); + })); - return gConf.get_bool(SHOW_KEY); + this._settings.connect('changed::' + SCREEN_POSITION_KEY, + Lang.bind(this, this._updateScreenPosition)); + this._settings.connect('changed::' + MAG_FACTOR_KEY, + Lang.bind(this, this._updateMagFactor)); + this._settings.connect('changed::' + LENS_MODE_KEY, + Lang.bind(this, this._updateLensMode)); + this._settings.connect('changed::' + CLAMP_MODE_KEY, + Lang.bind(this, this._updateClampMode)); + this._settings.connect('changed::' + MOUSE_TRACKING_KEY, + Lang.bind(this, this._updateMouseTrackingMode)); + + this._settings.connect('changed::' + SHOW_CROSS_HAIRS_KEY, + Lang.bind(this, function() { + this.setCrosshairsVisible(this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY)); + })); + + this._settings.connect('changed::' + CROSS_HAIRS_THICKNESS_KEY, + Lang.bind(this, function() { + this.setCrosshairsThickness(this._settings.get_int(CROSS_HAIRS_THICKNESS_KEY)); + })); + + this._settings.connect('changed::' + CROSS_HAIRS_COLOR_KEY, + Lang.bind(this, function() { + this.setCrosshairsColor(this._settings.get_string(CROSS_HAIRS_COLOR_KEY)); + })); + + this._settings.connect('changed::' + CROSS_HAIRS_OPACITY_KEY, + Lang.bind(this, function() { + this.setCrosshairsOpacity(this._settings.get_int(CROSS_HAIRS_OPACITY_KEY)); + })); + + this._settings.connect('changed::' + CROSS_HAIRS_LENGTH_KEY, + Lang.bind(this, function() { + this.setCrosshairsLength(this._settings.get_int(CROSS_HAIRS_LENGTH_KEY)); + })); + + this._settings.connect('changed::' + CROSS_HAIRS_CLIP_KEY, + Lang.bind(this, function() { + this.setCrosshairsClip(this._settings.get_boolean(CROSS_HAIRS_CLIP_KEY)); + })); + + return this._settings.get_boolean(SHOW_KEY); }, - _updateShowHide: function() { - let gConf = GConf.Client.get_default(); - this.setActive(gConf.get_bool(SHOW_KEY)); - }, - _updateScreenPosition: function() { // Applies only to the first zoom region. if (this._zoomRegions.length) { - let gConf = GConf.Client.get_default(); - let position = gConf.get_int(SCREEN_POSITION_KEY); + let position = this._settings.get_enum(SCREEN_POSITION_KEY); this._zoomRegions[0].setScreenPosition(position); if (position != ScreenPosition.FULL_SCREEN) this._updateLensMode(); @@ -522,9 +529,8 @@ Magnifier.prototype = { _updateMagFactor: function() { // Applies only to the first zoom region. if (this._zoomRegions.length) { - let gConf = GConf.Client.get_default(); // Mag factor is accurate to two decimal places. - let magFactor = parseFloat(gConf.get_float(MAG_FACTOR_KEY).toFixed(2)); + let magFactor = parseFloat(this._settings.get_double(MAG_FACTOR_KEY).toFixed(2)); this._zoomRegions[0].setMagFactor(magFactor, magFactor); } }, @@ -532,17 +538,15 @@ Magnifier.prototype = { _updateLensMode: function() { // Applies only to the first zoom region. if (this._zoomRegions.length) { - let gConf = GConf.Client.get_default(); - this._zoomRegions[0].setLensMode(gConf.get_bool(LENS_MODE_KEY)); + this._zoomRegions[0].setLensMode(this._settings.get_boolean(LENS_MODE_KEY)); } }, _updateClampMode: function() { // Applies only to the first zoom region. if (this._zoomRegions.length) { - let gConf = GConf.Client.get_default(); this._zoomRegions[0].setClampScrollingAtEdges( - !gConf.get_bool(CLAMP_MODE_KEY) + !this._settings.get_boolean(CLAMP_MODE_KEY) ); } }, @@ -550,41 +554,10 @@ Magnifier.prototype = { _updateMouseTrackingMode: function() { // Applies only to the first zoom region. if (this._zoomRegions.length) { - let gConf = GConf.Client.get_default(); this._zoomRegions[0].setMouseTrackingMode( - gConf.get_int(MOUSE_TRACKING_KEY) + this._settings.get_enum(MOUSE_TRACKING_KEY) ); } - }, - - _updateShowCrosshairs: function() { - let gConf = GConf.Client.get_default(); - this.setCrosshairsVisible(gConf.get_bool(SHOW_CROSS_HAIRS_KEY)); - }, - - _updateCrosshairsThickness: function() { - let gConf = GConf.Client.get_default(); - this.setCrosshairsThickness(gConf.get_int(CROSS_HAIRS_THICKNESS_KEY)); - }, - - _updateCrosshairsColor: function() { - let gConf = GConf.Client.get_default(); - this.setCrosshairsColor(gConf.get_string(CROSS_HAIRS_COLOR_KEY)); - }, - - _updateCrosshairsOpacity: function() { - let gConf = GConf.Client.get_default(); - this.setCrosshairsOpacity(gConf.get_int(CROSS_HAIRS_OPACITY_KEY)); - }, - - _updateCrosshairsLength: function() { - let gConf = GConf.Client.get_default(); - this.setCrosshairsLength(gConf.get_int(CROSS_HAIRS_LENGTH_KEY)); - }, - - _updateCrosshairsClip: function() { - let gConf = GConf.Client.get_default(); - this.setCrosshairsClip(gConf.get_bool(CROSS_HAIRS_CLIP_KEY)); } }; @@ -626,12 +599,6 @@ ZoomRegion.prototype = { this._mouseRoot = mouseRoot; this._mainGroup.add_actor(this._mouseRoot); this._crossHairs = null; - - this.setMagFactor(DEFAULT_X_MAGFACTOR, DEFAULT_Y_MAGFACTOR); - this.setScreenPosition(DEFAULT_SCREEN_POSITION); - this.setLensMode(DEFAULT_LENS_MODE); - this.setClampScrollingAtEdges(DEFAULT_CLAMP_SCROLLING_AT_EDGES); - this.setMouseTrackingMode(DEFAULT_MOUSE_TRACKING_MODE); }, /** @@ -1212,35 +1179,16 @@ Crosshairs.prototype = { // length (i.e., extend beyond the edges of the view they appear in). let groupWidth = global.screen_width * 3; let groupHeight = global.screen_height * 3; + this._actor = new Clutter.Group({ clip_to_allocation: false, width: groupWidth, height: groupHeight }); - this._horizLeftHair = new Clutter.Rectangle({ - color: DEFAULT_CROSSHAIRS_COLOR, - width: groupWidth / 2, - height: DEFAULT_CROSSHAIRS_THICKNESS, - opacity: DEFAULT_CROSSHAIRS_OPACITY - }); - this._horizRightHair = new Clutter.Rectangle({ - color: DEFAULT_CROSSHAIRS_COLOR, - width: groupWidth / 2, - height: DEFAULT_CROSSHAIRS_THICKNESS, - opacity: DEFAULT_CROSSHAIRS_OPACITY - }); - this._vertTopHair = new Clutter.Rectangle({ - color: DEFAULT_CROSSHAIRS_COLOR, - width: DEFAULT_CROSSHAIRS_THICKNESS, - height: groupHeight / 2, - opacity: DEFAULT_CROSSHAIRS_OPACITY - }); - this._vertBottomHair = new Clutter.Rectangle({ - color: DEFAULT_CROSSHAIRS_COLOR, - width: DEFAULT_CROSSHAIRS_THICKNESS, - height: groupHeight / 2, - opacity: DEFAULT_CROSSHAIRS_OPACITY - }); + this._horizLeftHair = new Clutter.Rectangle(); + this._horizRightHair = new Clutter.Rectangle(); + this._vertTopHair = new Clutter.Rectangle(); + this._vertBottomHair = new Clutter.Rectangle(); this._actor.add_actor(this._horizLeftHair); this._actor.add_actor(this._horizRightHair); this._actor.add_actor(this._vertTopHair);