mirror of
https://github.com/Rafostar/clapper.git
synced 2025-08-31 00:11:59 +02:00
Auto hide cursor on player window
This commit is contained in:
@@ -39,6 +39,21 @@ var App = GObject.registerClass({
|
|||||||
super.run(arr);
|
super.run(arr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setHideCursorTimeout()
|
||||||
|
{
|
||||||
|
if(this.hideCursorTimeout)
|
||||||
|
GLib.source_remove(this.hideCursorTimeout);
|
||||||
|
|
||||||
|
this.hideCursorTimeout = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1, () => {
|
||||||
|
this.hideCursorTimeout = null;
|
||||||
|
|
||||||
|
if(this.isCursorInPlayer)
|
||||||
|
this.playerWindow.set_cursor(this.blankCursor);
|
||||||
|
|
||||||
|
return GLib.SOURCE_REMOVE;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
_buildUI()
|
_buildUI()
|
||||||
{
|
{
|
||||||
this.window = new Window(this, APP_NAME);
|
this.window = new Window(this, APP_NAME);
|
||||||
@@ -60,31 +75,14 @@ var App = GObject.registerClass({
|
|||||||
this.window.show_all();
|
this.window.show_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
_handlePrimaryButtonPress(event, button)
|
|
||||||
{
|
|
||||||
let eventType = event.get_event_type();
|
|
||||||
|
|
||||||
switch(eventType) {
|
|
||||||
case Gdk.EventType.BUTTON_PRESS:
|
|
||||||
let [res, x, y] = event.get_root_coords();
|
|
||||||
if(!res)
|
|
||||||
break;
|
|
||||||
this.dragStartX = x;
|
|
||||||
this.dragStartY = y;
|
|
||||||
this.dragStartReady = true;
|
|
||||||
break;
|
|
||||||
case Gdk.EventType.DOUBLE_BUTTON_PRESS:
|
|
||||||
this.window.toggleFullscreen();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_onWindowRealize()
|
_onWindowRealize()
|
||||||
{
|
{
|
||||||
this.player = new Player();
|
this.player = new Player();
|
||||||
this.player.widget.add_events(Gdk.EventMask.SCROLL_MASK);
|
this.player.widget.add_events(
|
||||||
|
Gdk.EventMask.SCROLL_MASK
|
||||||
|
| Gdk.EventMask.ENTER_NOTIFY_MASK
|
||||||
|
| Gdk.EventMask.LEAVE_NOTIFY_MASK
|
||||||
|
);
|
||||||
this.interface.addPlayer(this.player);
|
this.interface.addPlayer(this.player);
|
||||||
|
|
||||||
this.player.connect('warning', this._onPlayerWarning.bind(this));
|
this.player.connect('warning', this._onPlayerWarning.bind(this));
|
||||||
@@ -99,15 +97,39 @@ var App = GObject.registerClass({
|
|||||||
this.player.widget.connect(
|
this.player.widget.connect(
|
||||||
'scroll-event', this._onPlayerScrollEvent.bind(this)
|
'scroll-event', this._onPlayerScrollEvent.bind(this)
|
||||||
);
|
);
|
||||||
|
this.player.widget.connect(
|
||||||
|
'enter-notify-event', this._onPlayerEnterNotifyEvent.bind(this)
|
||||||
|
);
|
||||||
|
this.player.widget.connect(
|
||||||
|
'leave-notify-event', this._onPlayerLeaveNotifyEvent.bind(this)
|
||||||
|
);
|
||||||
this.player.widget.connect(
|
this.player.widget.connect(
|
||||||
'motion-notify-event', this._onPlayerMotionNotifyEvent.bind(this)
|
'motion-notify-event', this._onPlayerMotionNotifyEvent.bind(this)
|
||||||
);
|
);
|
||||||
|
this.player.widget.connect(
|
||||||
this.player.widget.show_all();
|
'realize', this._onPlayerRealize.bind(this)
|
||||||
this.emit('ready', true);
|
);
|
||||||
|
|
||||||
if(this.playlist.length)
|
if(this.playlist.length)
|
||||||
this.player.set_uri(this.playlist[0]);
|
this.player.set_uri(this.playlist[0]);
|
||||||
|
|
||||||
|
this.player.widget.show_all();
|
||||||
|
this.emit('ready', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
_onPlayerRealize()
|
||||||
|
{
|
||||||
|
let display = this.player.widget.get_display();
|
||||||
|
|
||||||
|
this.defaultCursor = Gdk.Cursor.new_from_name(
|
||||||
|
display, 'default'
|
||||||
|
);
|
||||||
|
this.blankCursor = Gdk.Cursor.new_for_display(
|
||||||
|
display, Gdk.CursorType.BLANK_CURSOR
|
||||||
|
);
|
||||||
|
|
||||||
|
this.playerWindow = this.player.widget.get_window();
|
||||||
|
this.setHideCursorTimeout();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWindowFullscreenChanged(window, isFullscreen)
|
_onWindowFullscreenChanged(window, isFullscreen)
|
||||||
@@ -164,6 +186,27 @@ var App = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_handlePrimaryButtonPress(event, button)
|
||||||
|
{
|
||||||
|
let eventType = event.get_event_type();
|
||||||
|
|
||||||
|
switch(eventType) {
|
||||||
|
case Gdk.EventType.BUTTON_PRESS:
|
||||||
|
let [res, x, y] = event.get_root_coords();
|
||||||
|
if(!res)
|
||||||
|
break;
|
||||||
|
this.dragStartX = x;
|
||||||
|
this.dragStartY = y;
|
||||||
|
this.dragStartReady = true;
|
||||||
|
break;
|
||||||
|
case Gdk.EventType.DOUBLE_BUTTON_PRESS:
|
||||||
|
this.window.toggleFullscreen();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_onPlayerScrollEvent(self, event)
|
_onPlayerScrollEvent(self, event)
|
||||||
{
|
{
|
||||||
let [res, direction] = event.get_scroll_direction();
|
let [res, direction] = event.get_scroll_direction();
|
||||||
@@ -200,9 +243,22 @@ var App = GObject.registerClass({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_onPlayerEnterNotifyEvent(self, event)
|
||||||
|
{
|
||||||
|
this.isCursorInPlayer = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
_onPlayerLeaveNotifyEvent(self, event)
|
||||||
|
{
|
||||||
|
this.isCursorInPlayer = false;
|
||||||
|
}
|
||||||
|
|
||||||
_onPlayerMotionNotifyEvent(self, event)
|
_onPlayerMotionNotifyEvent(self, event)
|
||||||
{
|
{
|
||||||
if(!this.dragStartReady)
|
this.playerWindow.set_cursor(this.defaultCursor);
|
||||||
|
this.setHideCursorTimeout();
|
||||||
|
|
||||||
|
if(!this.dragStartReady || this.window.isFullscreen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let [res, x, y] = event.get_root_coords();
|
let [res, x, y] = event.get_root_coords();
|
||||||
|
Reference in New Issue
Block a user