Consider panel y offset when calculate tile bounds; add keybind to hide terminal by moving it up

This commit is contained in:
Kevin Lange 2015-10-15 16:14:55 -07:00
parent e8f9447d47
commit 2959d53e3e
2 changed files with 32 additions and 0 deletions

View File

@ -1396,6 +1396,9 @@ static void window_tile(yutani_globals_t * yg, yutani_server_window_t * window,
yutani_server_window_t * panel = yg->top_z;
if (panel) {
panel_h = panel->height;
if (panel->y < 1) {
panel_h += panel->y; /* We can move the panel up to "hide" it. */
}
}
if (!window->tiled) {

View File

@ -162,6 +162,26 @@ static int new_focused = -1;
static int title_width = 0;
static void toggle_hide_panel(void) {
static int panel_hidden = 0;
if (panel_hidden) {
/* Unhide the panel */
for (int i = PANEL_HEIGHT-1; i >= 0; i--) {
yutani_window_move(yctx, panel, 0, -i);
usleep(10000);
}
panel_hidden = 0;
} else {
/* Hide the panel */
for (int i = 1; i <= PANEL_HEIGHT-1; i++) {
yutani_window_move(yctx, panel, 0, -i);
usleep(10000);
}
panel_hidden = 1;
}
}
static sprite_t * icon_get(char * name);
static void redraw_appmenu(int item);
@ -398,6 +418,13 @@ static void handle_key_event(struct yutani_msg_key_event * ke) {
launch_application("terminal");
}
if ((ke->event.modifiers & KEY_MOD_LEFT_CTRL) &&
(ke->event.keycode == KEY_F11) &&
(ke->event.action == KEY_ACTION_DOWN)) {
fprintf(stderr, "[panel] Toggling visibility.\n");
toggle_hide_panel();
}
if ((was_tabbing) && (ke->event.keycode == 0 || ke->event.keycode == KEY_LEFT_ALT) &&
(ke->event.modifiers == 0) && (ke->event.action == KEY_ACTION_UP)) {
@ -990,6 +1017,8 @@ int main (int argc, char ** argv) {
yutani_key_bind(yctx, '\t', KEY_MOD_LEFT_ALT, YUTANI_BIND_STEAL);
yutani_key_bind(yctx, '\t', KEY_MOD_LEFT_ALT | KEY_MOD_LEFT_SHIFT, YUTANI_BIND_STEAL);
yutani_key_bind(yctx, KEY_F11, KEY_MOD_LEFT_CTRL, YUTANI_BIND_STEAL);
/* This lets us receive all just-modifier key releases */
yutani_key_bind(yctx, KEY_LEFT_ALT, 0, YUTANI_BIND_PASSTHROUGH);