Use the hand/pointer cursor in the browser

Also, fix the build.
This commit is contained in:
Přemysl Eric Janouch 2021-11-13 09:20:37 +01:00
parent d20c6469c0
commit 7dba21c6d8
Signed by: p
GPG Key ID: A0420B94F92B9493
2 changed files with 24 additions and 3 deletions

View File

@ -335,7 +335,7 @@ fastiv_browser_realize(GtkWidget *widget)
.visual = gtk_widget_get_visual(widget), .visual = gtk_widget_get_visual(widget),
.event_mask = gtk_widget_get_events(widget) | GDK_KEY_PRESS_MASK | .event_mask = gtk_widget_get_events(widget) | GDK_KEY_PRESS_MASK |
GDK_BUTTON_PRESS_MASK, GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK,
}; };
// We need this window to receive input events at all. // We need this window to receive input events at all.
@ -401,6 +401,26 @@ fastiv_browser_button_press_event(GtkWidget *widget, GdkEventButton *event)
return TRUE; return TRUE;
} }
gboolean
fastiv_browser_motion_notify_event(GtkWidget *widget, GdkEventMotion *event)
{
FastivBrowser *self = FASTIV_BROWSER(widget);
if (event->state != 0)
return FALSE;
const Entry *entry = entry_at(self, event->x, event->y);
GdkWindow *window = gtk_widget_get_window(widget);
if (entry) {
GdkCursor *cursor =
gdk_cursor_new_from_name(gdk_window_get_display(window), "pointer");
gdk_window_set_cursor(window, cursor);
g_object_unref(cursor);
} else {
gdk_window_set_cursor(window, NULL);
}
return TRUE;
}
static void static void
fastiv_browser_style_updated(GtkWidget *widget) fastiv_browser_style_updated(GtkWidget *widget)
{ {
@ -476,6 +496,7 @@ fastiv_browser_class_init(FastivBrowserClass *klass)
widget_class->draw = fastiv_browser_draw; widget_class->draw = fastiv_browser_draw;
widget_class->size_allocate = fastiv_browser_size_allocate; widget_class->size_allocate = fastiv_browser_size_allocate;
widget_class->button_press_event = fastiv_browser_button_press_event; widget_class->button_press_event = fastiv_browser_button_press_event;
widget_class->motion_notify_event = fastiv_browser_motion_notify_event;
widget_class->style_updated = fastiv_browser_style_updated; widget_class->style_updated = fastiv_browser_style_updated;
browser_signals[ITEM_ACTIVATED] = browser_signals[ITEM_ACTIVATED] =

View File

@ -32,10 +32,10 @@ executable('fastiv', 'fastiv.c', 'fastiv-view.c', 'fastiv-io.c',
install : true, install : true,
dependencies : [dependencies]) dependencies : [dependencies])
if gdk_pixbuf.found() if gdkpixbuf.found()
executable('io-benchmark', 'fastiv-io-benchmark.c', 'fastiv-io.c', 'xdg.c', executable('io-benchmark', 'fastiv-io-benchmark.c', 'fastiv-io.c', 'xdg.c',
build_by_default : false, build_by_default : false,
dependencies : [dependencies, gdk_pixbuf]) dependencies : [dependencies, gdkpixbuf])
endif endif
install_data('fastiv.desktop', install_data('fastiv.desktop',