Compare commits
3 Commits
e461189f0e
...
dd7b258698
Author | SHA1 | Date | |
---|---|---|---|
dd7b258698 | |||
aa3ad12d44 | |||
82accaf200 |
20
src/sdgui.c
20
src/sdgui.c
@ -195,15 +195,9 @@ on_key_press (G_GNUC_UNUSED GtkWidget *widget, GdkEvent *event,
|
||||
// Can't use gtk_widget_add_accelerator() to change-current-page(-1/+1)
|
||||
// because that signal has arguments, which cannot be passed.
|
||||
if (event->key.keyval == GDK_KEY_Page_Up)
|
||||
{
|
||||
gtk_notebook_prev_page (GTK_NOTEBOOK (g.notebook));
|
||||
return TRUE;
|
||||
}
|
||||
return gtk_notebook_prev_page (GTK_NOTEBOOK (g.notebook)), TRUE;
|
||||
if (event->key.keyval == GDK_KEY_Page_Down)
|
||||
{
|
||||
gtk_notebook_next_page (GTK_NOTEBOOK (g.notebook));
|
||||
return TRUE;
|
||||
}
|
||||
return gtk_notebook_next_page (GTK_NOTEBOOK (g.notebook)), TRUE;
|
||||
}
|
||||
if (mods == GDK_MOD1_MASK)
|
||||
{
|
||||
@ -216,6 +210,14 @@ on_key_press (G_GNUC_UNUSED GtkWidget *widget, GdkEvent *event,
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
if (mods == 0)
|
||||
{
|
||||
StardictView *view = STARDICT_VIEW (g.view);
|
||||
if (event->key.keyval == GDK_KEY_Page_Up)
|
||||
return stardict_view_scroll (view, GTK_SCROLL_PAGES, -0.5), TRUE;
|
||||
if (event->key.keyval == GDK_KEY_Page_Down)
|
||||
return stardict_view_scroll (view, GTK_SCROLL_PAGES, +0.5), TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -341,8 +343,6 @@ main (int argc, char *argv[])
|
||||
// TODO: make the entry have a background colour, rather than transparency
|
||||
gtk_entry_set_has_frame (GTK_ENTRY (g.entry), FALSE);
|
||||
|
||||
// TODO: supposedly attach to "key-press-event" here and react to
|
||||
// PageUp/PageDown and up/down arrow keys... either here or in the Entry
|
||||
g.window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_default_size (GTK_WINDOW (g.window), 300, 600);
|
||||
g_signal_connect (g.window, "destroy",
|
||||
|
@ -395,8 +395,9 @@ stardict_view_realize (GtkWidget *widget)
|
||||
// Input-only would presumably also work (as in GtkPathBar, e.g.),
|
||||
// but it merely seems to involve more work.
|
||||
.wclass = GDK_INPUT_OUTPUT,
|
||||
|
||||
.visual = gtk_widget_get_visual (widget),
|
||||
|
||||
// GDK_SMOOTH_SCROLL_MASK is useless, will stop sending UP/DOWN
|
||||
.event_mask = gtk_widget_get_events (widget) | GDK_SCROLL_MASK,
|
||||
};
|
||||
|
||||
@ -481,15 +482,16 @@ stardict_view_scroll_event (GtkWidget *widget, GdkEventScroll *event)
|
||||
switch (event->direction)
|
||||
{
|
||||
case GDK_SCROLL_UP:
|
||||
self->top_offset -= 3 * natural_row_size (widget);
|
||||
adjust_for_offset (self);
|
||||
stardict_view_scroll (self, GTK_SCROLL_STEPS, -3);
|
||||
return TRUE;
|
||||
case GDK_SCROLL_DOWN:
|
||||
self->top_offset += 3 * natural_row_size (widget);
|
||||
stardict_view_scroll (self, GTK_SCROLL_STEPS, +3);
|
||||
return TRUE;
|
||||
case GDK_SCROLL_SMOOTH:
|
||||
self->top_offset += event->delta_y;
|
||||
adjust_for_offset (self);
|
||||
return TRUE;
|
||||
default:
|
||||
// GDK_SCROLL_SMOOTH doesn't fit the intended way of usage
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
@ -555,3 +557,24 @@ stardict_view_set_matched (StardictView *self, const gchar *matched)
|
||||
self->matched = g_strdup (matched);
|
||||
reload (self);
|
||||
}
|
||||
|
||||
void
|
||||
stardict_view_scroll (StardictView *self, GtkScrollStep step, gdouble amount)
|
||||
{
|
||||
g_return_if_fail (STARDICT_IS_VIEW (self));
|
||||
|
||||
GtkWidget *widget = GTK_WIDGET (self);
|
||||
switch (step)
|
||||
{
|
||||
case GTK_SCROLL_STEPS:
|
||||
self->top_offset += amount * natural_row_size (widget);
|
||||
break;
|
||||
case GTK_SCROLL_PAGES:
|
||||
self->top_offset += amount * gtk_widget_get_allocated_height (widget);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
adjust_for_offset (self);
|
||||
}
|
||||
|
@ -30,5 +30,7 @@ GtkWidget *stardict_view_new (void);
|
||||
void stardict_view_set_position (StardictView *view,
|
||||
StardictDict *dict, guint position);
|
||||
void stardict_view_set_matched (StardictView *view, const gchar *matched);
|
||||
void stardict_view_scroll (StardictView *view,
|
||||
GtkScrollStep step, gdouble amount);
|
||||
|
||||
#endif // ! STARDICT_VIEW_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user