mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-26 17:14:38 +02:00
eeshow/gui/: bring back scrolling of the history
Now it's more usable than before, since clicking between commits won't close the history.
This commit is contained in:
parent
547e7059ae
commit
fc1fbece43
@ -390,6 +390,8 @@ static void do_revision_overlays(struct gui_ctx *ctx);
|
|||||||
|
|
||||||
static void hide_history(struct gui_ctx *ctx)
|
static void hide_history(struct gui_ctx *ctx)
|
||||||
{
|
{
|
||||||
|
input_pop();
|
||||||
|
|
||||||
ctx->showing_history = 0;
|
ctx->showing_history = 0;
|
||||||
do_revision_overlays(ctx);
|
do_revision_overlays(ctx);
|
||||||
redraw(ctx);
|
redraw(ctx);
|
||||||
@ -515,16 +517,6 @@ static void click_history(void *user)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void drag_overlay(void *user, int dx, int dy)
|
|
||||||
{
|
|
||||||
const struct gui_hist *h = user;
|
|
||||||
struct gui_ctx *ctx = h->ctx;
|
|
||||||
|
|
||||||
ctx->hist_y_offset += dy;
|
|
||||||
redraw(ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void ignore_click(void *user)
|
static void ignore_click(void *user)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -549,7 +541,6 @@ static struct gui_hist *skip_history(struct gui_ctx *ctx, struct gui_hist *h)
|
|||||||
|
|
||||||
h->over = overlay_add(&ctx->hist_overlays, &ctx->aois,
|
h->over = overlay_add(&ctx->hist_overlays, &ctx->aois,
|
||||||
NULL, ignore_click, h);
|
NULL, ignore_click, h);
|
||||||
overlay_draggable(h->over, drag_overlay);
|
|
||||||
overlay_text(h->over, "<small>%u commits without changes</small>", n);
|
overlay_text(h->over, "<small>%u commits without changes</small>", n);
|
||||||
|
|
||||||
style.width = 0;
|
style.width = 0;
|
||||||
@ -561,10 +552,15 @@ static struct gui_hist *skip_history(struct gui_ctx *ctx, struct gui_hist *h)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const struct input_ops history_input_ops;
|
||||||
|
|
||||||
|
|
||||||
static void show_history(struct gui_ctx *ctx, enum selecting sel)
|
static void show_history(struct gui_ctx *ctx, enum selecting sel)
|
||||||
{
|
{
|
||||||
struct gui_hist *h = ctx->hist;
|
struct gui_hist *h = ctx->hist;
|
||||||
|
|
||||||
|
input_push(&history_input_ops, ctx);
|
||||||
|
|
||||||
ctx->showing_history = 1;
|
ctx->showing_history = 1;
|
||||||
ctx->hist_y_offset = 0;
|
ctx->hist_y_offset = 0;
|
||||||
ctx->selecting = sel;
|
ctx->selecting = sel;
|
||||||
@ -573,7 +569,6 @@ static void show_history(struct gui_ctx *ctx, enum selecting sel)
|
|||||||
h = skip_history(ctx, h);
|
h = skip_history(ctx, h);
|
||||||
h->over = overlay_add(&ctx->hist_overlays, &ctx->aois,
|
h->over = overlay_add(&ctx->hist_overlays, &ctx->aois,
|
||||||
hover_history, click_history, h);
|
hover_history, click_history, h);
|
||||||
overlay_draggable(h->over, drag_overlay);
|
|
||||||
hover_history(h, 0);
|
hover_history(h, 0);
|
||||||
set_history_style(h, 0);
|
set_history_style(h, 0);
|
||||||
}
|
}
|
||||||
@ -897,7 +892,7 @@ static void sheet_key(void *user, int x, int y, int keyval)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct input_ops input_sheet_ops = {
|
static const struct input_ops sheet_input_ops = {
|
||||||
.click = sheet_click,
|
.click = sheet_click,
|
||||||
.hover_begin = sheet_hover_update,
|
.hover_begin = sheet_hover_update,
|
||||||
.hover_update = sheet_hover_update,
|
.hover_update = sheet_hover_update,
|
||||||
@ -910,6 +905,34 @@ static const struct input_ops input_sheet_ops = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* ----- Input: history ---------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
static void history_drag_move(void *user, int dx, int dy)
|
||||||
|
{
|
||||||
|
struct gui_ctx *ctx = user;
|
||||||
|
|
||||||
|
ctx->hist_y_offset += dy;
|
||||||
|
redraw(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @@@ under construction */
|
||||||
|
|
||||||
|
|
||||||
|
static const struct input_ops history_input_ops = {
|
||||||
|
.click = sheet_click,
|
||||||
|
.hover_begin = sheet_hover_update,
|
||||||
|
.hover_update = sheet_hover_update,
|
||||||
|
.hover_click = sheet_click,
|
||||||
|
.hover_end = sheet_hover_end,
|
||||||
|
.scroll = sheet_scroll,
|
||||||
|
.drag_begin = input_accept,
|
||||||
|
.drag_move = history_drag_move,
|
||||||
|
.key = sheet_key,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* ----- Event handlers ---------------------------------------------------- */
|
/* ----- Event handlers ---------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
@ -1451,7 +1474,7 @@ int gui(unsigned n_args, char **args, bool recurse, int limit)
|
|||||||
go_to_sheet(&ctx, ctx.new_hist->sheets);
|
go_to_sheet(&ctx, ctx.new_hist->sheets);
|
||||||
gtk_widget_show_all(window);
|
gtk_widget_show_all(window);
|
||||||
|
|
||||||
input_push(&input_sheet_ops, &ctx);
|
input_push(&sheet_input_ops, &ctx);
|
||||||
|
|
||||||
/* for performance testing, use -N-depth */
|
/* for performance testing, use -N-depth */
|
||||||
if (limit >= 0)
|
if (limit >= 0)
|
||||||
|
@ -147,7 +147,8 @@ static gboolean button_release_event(GtkWidget *widget, GdkEventButton *event,
|
|||||||
|
|
||||||
switch (sp->state) {
|
switch (sp->state) {
|
||||||
case input_normal:
|
case input_normal:
|
||||||
abort();
|
/* hover_click changed the input configuration */
|
||||||
|
break;
|
||||||
case input_clicking:
|
case input_clicking:
|
||||||
sp->state = input_normal;
|
sp->state = input_normal;
|
||||||
if (sp->ops->click)
|
if (sp->ops->click)
|
||||||
|
Loading…
Reference in New Issue
Block a user