Compare commits

...

2 Commits

2 changed files with 26 additions and 3 deletions

View File

@ -100,7 +100,7 @@ fastiv_view_realize(GtkWidget *widget)
// than what we get automatically. // than what we get automatically.
.visual = gtk_widget_get_visual(widget), .visual = gtk_widget_get_visual(widget),
.event_mask = gtk_widget_get_events(widget) | GDK_SCROLL_MASK | .event_mask = gtk_widget_get_events(widget) | GDK_SCROLL_MASK |
GDK_KEY_PRESS_MASK, GDK_KEY_PRESS_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.
@ -169,6 +169,8 @@ fastiv_view_draw(GtkWidget *widget, cairo_t *cr)
return TRUE; return TRUE;
} }
#define SCALE_STEP 1.4
static gboolean static gboolean
fastiv_view_scroll_event(GtkWidget *widget, GdkEventScroll *event) fastiv_view_scroll_event(GtkWidget *widget, GdkEventScroll *event)
{ {
@ -178,11 +180,11 @@ fastiv_view_scroll_event(GtkWidget *widget, GdkEventScroll *event)
switch (event->direction) { switch (event->direction) {
case GDK_SCROLL_UP: case GDK_SCROLL_UP:
self->scale *= 1.4; self->scale *= SCALE_STEP;
gtk_widget_queue_resize(widget); gtk_widget_queue_resize(widget);
return TRUE; return TRUE;
case GDK_SCROLL_DOWN: case GDK_SCROLL_DOWN:
self->scale /= 1.4; self->scale /= SCALE_STEP;
gtk_widget_queue_resize(widget); gtk_widget_queue_resize(widget);
return TRUE; return TRUE;
default: default:
@ -202,6 +204,14 @@ fastiv_view_key_press_event(GtkWidget *widget, GdkEventKey *event)
self->scale = 1; self->scale = 1;
gtk_widget_queue_resize(widget); gtk_widget_queue_resize(widget);
return TRUE; return TRUE;
case GDK_KEY_plus:
self->scale *= SCALE_STEP;
gtk_widget_queue_resize(widget);
return TRUE;
case GDK_KEY_minus:
self->scale /= SCALE_STEP;
gtk_widget_queue_resize(widget);
return TRUE;
} }
return FALSE; return FALSE;
} }

View File

@ -317,6 +317,17 @@ on_key_press_view(G_GNUC_UNUSED GtkWidget *widget, GdkEventKey *event,
return FALSE; return FALSE;
} }
static gboolean
on_button_press_view(G_GNUC_UNUSED GtkWidget *widget, GdkEventButton *event)
{
if (!(event->state & gtk_accelerator_get_default_mod_mask()) &&
event->button == 8 /* back */) {
gtk_stack_set_visible_child(GTK_STACK(g.stack), g.browser_scroller);
return TRUE;
}
return FALSE;
}
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
@ -377,6 +388,8 @@ main(int argc, char *argv[])
gtk_widget_set_hexpand(g.view, TRUE); gtk_widget_set_hexpand(g.view, TRUE);
g_signal_connect(g.view, "key-press-event", g_signal_connect(g.view, "key-press-event",
G_CALLBACK(on_key_press_view), NULL); G_CALLBACK(on_key_press_view), NULL);
g_signal_connect(g.view, "button-press-event",
G_CALLBACK(on_button_press_view), NULL);
gtk_container_add(GTK_CONTAINER(g.view_scroller), g.view); gtk_container_add(GTK_CONTAINER(g.view_scroller), g.view);
gtk_widget_show_all(g.view_scroller); gtk_widget_show_all(g.view_scroller);