From e7e9b9c07d884c1d412b15f0069117ddc7d0e635 Mon Sep 17 00:00:00 2001 From: Rafostar <40623528+Rafostar@users.noreply.github.com> Date: Wed, 23 Sep 2020 15:14:32 +0200 Subject: [PATCH] Use virtual functions --- clapper_src/app.js | 79 +++++++++++++++++++++--------------------- clapper_src/buttons.js | 6 ++-- clapper_src/window.js | 14 ++++---- 3 files changed, 47 insertions(+), 52 deletions(-) diff --git a/clapper_src/app.js b/clapper_src/app.js index e398e701..98b1397e 100644 --- a/clapper_src/app.js +++ b/clapper_src/app.js @@ -40,9 +40,46 @@ var App = GObject.registerClass({ this.interface = null; this.player = null; this.dragStartReady = false; + } - this.connect('startup', this._buildUI.bind(this)); - this.connect('activate', this._openWindow.bind(this)); + vfunc_startup() + { + super.vfunc_startup(); + this.window = new Window(this, APP_NAME); + + this.windowRealizeSignal = this.window.connect( + 'realize', this._onWindowRealize.bind(this) + ); + this.window.connect( + 'key-press-event', this._onWindowKeyPressEvent.bind(this) + ); + this.window.connect( + 'fullscreen-changed', this._onWindowFullscreenChanged.bind(this) + ); + + this.interface = new Interface(); + let headerBar = new Gtk.HeaderBar({ + title: APP_NAME, + show_close_button: true, + }); + headerBar.pack_end(this.interface.controls.openMenuButton); + headerBar.pack_end(this.interface.controls.fullscreenButton); + this.interface.addHeaderBar(headerBar, APP_NAME); + this.interface.controls.fullscreenButton.connect( + 'clicked', () => this._onInterfaceToggleFullscreenClicked(true) + ); + this.interface.controls.unfullscreenButton.connect( + 'clicked', () => this._onInterfaceToggleFullscreenClicked(false) + ); + + this.window.set_titlebar(this.interface.headerBar); + this.window.add(this.interface); + } + + vfunc_activate() + { + super.vfunc_activate(); + this.window.show_all(); } run(arr) @@ -105,44 +142,6 @@ var App = GObject.registerClass({ debug('cleared update time interval'); } - _buildUI() - { - this.window = new Window(this, APP_NAME); - - this.windowRealizeSignal = this.window.connect( - 'realize', this._onWindowRealize.bind(this) - ); - this.window.connect( - 'key-press-event', this._onWindowKeyPressEvent.bind(this) - ); - this.window.connect( - 'fullscreen-changed', this._onWindowFullscreenChanged.bind(this) - ); - - this.interface = new Interface(); - let headerBar = new Gtk.HeaderBar({ - title: APP_NAME, - show_close_button: true, - }); - headerBar.pack_end(this.interface.controls.openMenuButton); - headerBar.pack_end(this.interface.controls.fullscreenButton); - this.interface.addHeaderBar(headerBar, APP_NAME); - this.interface.controls.fullscreenButton.connect( - 'clicked', () => this._onInterfaceToggleFullscreenClicked(true) - ); - this.interface.controls.unfullscreenButton.connect( - 'clicked', () => this._onInterfaceToggleFullscreenClicked(false) - ); - - this.window.set_titlebar(this.interface.headerBar); - this.window.add(this.interface); - } - - _openWindow() - { - this.window.show_all(); - } - _onWindowRealize() { this.window.disconnect(this.windowRealizeSignal); diff --git a/clapper_src/buttons.js b/clapper_src/buttons.js index 92fcaf08..a4597396 100644 --- a/clapper_src/buttons.js +++ b/clapper_src/buttons.js @@ -81,9 +81,7 @@ class BoxedPopoverButton extends BoxedIconButton }); this.popover.add(this.popoverBox); this.popoverBox.show(); - this.connect( - 'clicked', this._onPopoverButtonClicked.bind(this) - ); + if(this.isFullscreen) this.popover.get_style_context().add_class('osd'); } @@ -99,7 +97,7 @@ class BoxedPopoverButton extends BoxedIconButton super.setFullscreenMode(isEnabled); } - _onPopoverButtonClicked() + vfunc_clicked() { this.popover.popup(); } diff --git a/clapper_src/window.js b/clapper_src/window.js index 153f22a2..1625f48d 100644 --- a/clapper_src/window.js +++ b/clapper_src/window.js @@ -20,10 +20,6 @@ var Window = GObject.registerClass({ height_request: 642 }); this.isFullscreen = false; - - this.connect( - 'window-state-event', this._onWindowStateEvent.bind(this) - ); } toggleFullscreen() @@ -32,12 +28,14 @@ var Window = GObject.registerClass({ this[`${un}fullscreen`](); } - _onWindowStateEvent(self, event) + vfunc_window_state_event(event) { - let window = event.get_window(); - let state = window.get_state(); + super.vfunc_window_state_event(event); - let isFullscreen = Boolean(state & Gdk.WindowState.FULLSCREEN); + let isFullscreen = Boolean( + event.new_window_state + & Gdk.WindowState.FULLSCREEN + ); if(this.isFullscreen === isFullscreen) return;