Handle mouse clicks on dictionary names

This commit is contained in:
Přemysl Eric Janouch 2016-09-28 05:27:53 +02:00
parent 1f60d096ea
commit b3458d84a0
Signed by: p
GPG Key ID: B715679E3A361BE6
1 changed files with 25 additions and 10 deletions

View File

@ -52,6 +52,7 @@
#define CTRL_KEY(x) ((x) - 'A' + 1)
#define TOP_BAR_CUTOFF 2 ///< How many lines are reserved on top
#define APP_TITLE PROJECT_NAME " " ///< Left top corner
// --- Utilities ---------------------------------------------------------------
@ -873,7 +874,7 @@ app_redraw_top (Application *self)
{
attrset (APP_ATTR (HEADER));
mvwhline (stdscr, 0, 0, APP_ATTR (HEADER), COLS);
gsize indent = app_add_utf8_string (self, PROJECT_NAME " ", A_BOLD, -1);
gsize indent = app_add_utf8_string (self, APP_TITLE, A_BOLD, -1);
attrset (0);
for (guint i = 0; i < self->dictionaries->len; i++)
@ -1280,14 +1281,6 @@ app_goto_dictionary (Application *self, guint n)
return TRUE;
}
#define SAVE_CURSOR \
int last_x, last_y; \
getyx (stdscr, last_y, last_x);
#define RESTORE_CURSOR \
move (last_y, last_x); \
refresh ();
/// The terminal has been resized, make appropriate changes.
static gboolean
app_process_resize (Application *self)
@ -1345,6 +1338,14 @@ enum user_action
USER_ACTION_COUNT
};
#define SAVE_CURSOR \
int last_x, last_y; \
getyx (stdscr, last_y, last_x);
#define RESTORE_CURSOR \
move (last_y, last_x); \
refresh ();
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
static gboolean
@ -1668,7 +1669,21 @@ app_process_left_mouse_click (Application *self, int line, int column)
{
SAVE_CURSOR
if (line == 0)
; // At the moment there's nothing useful for us to do
{
int indent = strlen (APP_TITLE);
if (column < indent)
return;
Dictionary *dicts = (Dictionary *) self->dictionaries->data;
for (guint i = 0; i < self->dictionaries->len; i++)
{
if (column < (indent += dicts[i].name_width))
{
app_goto_dictionary (self, i);
return;
}
}
}
else if (line == 1)
{
// FIXME: this is only an approximation