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