From 72292c41f62e082b2c1b72dee0fdd984facb01da Mon Sep 17 00:00:00 2001 From: abakkk Date: Mon, 11 Mar 2019 19:07:01 +0100 Subject: [PATCH] hide container when area is empty --- draw.js | 10 +++++++--- extension.js | 9 ++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/draw.js b/draw.js index 2a4f0ff..f9c20b7 100644 --- a/draw.js +++ b/draw.js @@ -171,9 +171,9 @@ var DrawingArea = new Lang.Class({ _onKeyPressed: function(actor, event) { if (event.get_key_symbol() == Clutter.Escape) { - this.hide(); - this.emitter.emit('stop-drawing'); + this.emitter.emit('stop-drawing', true); return Clutter.EVENT_STOP; + } else if (this.currentElement && this.currentElement.shape == Shapes.TEXT) { if (event.get_key_symbol() == Clutter.KEY_BackSpace) { this.currentElement.text = this.currentElement.text.slice(0, -1); @@ -197,6 +197,7 @@ var DrawingArea = new Lang.Class({ } this._redisplay(); return Clutter.EVENT_STOP; + } else { return Clutter.EVENT_PROPAGATE; } @@ -463,8 +464,11 @@ var DrawingArea = new Lang.Class({ this.helper.showHelp(); }, + get isEmpty() { + return this.elements.length == 0; + }, + enterDrawingMode: function() { - this.show(); this.keyPressedHandler = this.connect('key-press-event', this._onKeyPressed.bind(this)); this.buttonPressedHandler = this.connect('button-press-event', this._onButtonPressed.bind(this)); this.scrollHandler = this.connect('scroll-event', this._onScroll.bind(this)); diff --git a/extension.js b/extension.js index 4b35eff..db9fcab 100644 --- a/extension.js +++ b/extension.js @@ -111,6 +111,8 @@ var AreaManager = new Lang.Class({ container.set_position(monitor.x, monitor.y); container.set_size(monitor.width, monitor.height); area.set_size(monitor.width, monitor.height); + if (area.isEmpty) + container.hide(); area.emitter.stopDrawingHandler = area.emitter.connect('stop-drawing', this.toggleDrawing.bind(this)); area.emitter.showOsdHandler = area.emitter.connect('show-osd', this.showOsd.bind(this)); this.areas.push(area); @@ -183,6 +185,7 @@ var AreaManager = new Lang.Class({ eraseDrawing: function() { for (let i = 0; i < this.areas.length; i++) { this.areas[i].erase(); + this.areas[i].get_parent().hide(); } }, @@ -220,11 +223,12 @@ var AreaManager = new Lang.Class({ } }, - toggleDrawing: function() { + toggleDrawing: function(emitter, hide) { if (this.activeArea) { let activeIndex = this.areas.indexOf(this.activeArea); let activeContainer = this.activeArea.get_parent(); let save = activeIndex == Main.layoutManager.primaryIndex && this.settings.get_boolean('persistent-drawing'); + hide = hide || this.activeArea.isEmpty; if (this.hiddenList) this.togglePanelAndDockOpacity(); @@ -241,6 +245,9 @@ var AreaManager = new Lang.Class({ else Main.uiGroup.insert_child_above(activeContainer, global.window_group); + if (hide) + activeContainer.hide(); + // check display or screen (API changes) if (global.display.set_cursor) global.display.set_cursor(Meta.Cursor.DEFAULT);