data_source_cancelled
};
+static void
+fullscreen_handler(struct window *window, void *data)
+{
+ struct terminal *terminal = data;
+
+ terminal->fullscreen ^= 1;
+ window_set_fullscreen(window, terminal->fullscreen);
+}
+
static int
handle_bound_key(struct terminal *terminal,
struct input *input, uint32_t sym, uint32_t time)
return;
switch (sym) {
- case XKB_KEY_F11:
- if (state == WL_KEYBOARD_KEY_STATE_RELEASED)
- break;
- terminal->fullscreen ^= 1;
- window_set_fullscreen(window, terminal->fullscreen);
- break;
-
case XKB_KEY_BackSpace:
if (modifiers & MOD_ALT_MASK)
ch[len++] = 0x1b;
window_set_key_handler(terminal->window, key_handler);
window_set_keyboard_focus_handler(terminal->window,
keyboard_focus_handler);
+ window_set_fullscreen_handler(terminal->window, fullscreen_handler);
+
widget_set_redraw_handler(terminal->widget, redraw_handler);
widget_set_resize_handler(terminal->widget, resize_handler);
widget_set_button_handler(terminal->widget, button_handler);
}
static void
+fullscreen_handler(struct window *window, void *data)
+{
+ struct view *view = data;
+
+ view->fullscreen ^= 1;
+ window_set_fullscreen(window, view->fullscreen);
+}
+
+static void
key_handler(struct window *window, struct input *input, uint32_t time,
uint32_t key, uint32_t unicode,
enum wl_keyboard_key_state state, void *data)
return;
switch (key) {
- case KEY_F11:
- view->fullscreen ^= 1;
- window_set_fullscreen(window, view->fullscreen);
- break;
case KEY_SPACE:
case KEY_PAGEDOWN:
case KEY_RIGHT:
window_set_key_handler(view->window, key_handler);
window_set_keyboard_focus_handler(view->window,
keyboard_focus_handler);
+ window_set_fullscreen_handler(view->window, fullscreen_handler);
+
widget_set_button_handler(view->widget, button_handler);
widget_set_resize_handler(view->widget, resize_handler);
widget_set_redraw_handler(view->widget, redraw_handler);
window_data_handler_t data_handler;
window_drop_handler_t drop_handler;
window_close_handler_t close_handler;
+ window_fullscreen_handler_t fullscreen_handler;
struct frame *frame;
struct widget *widget;
break;
case 1: /* fullscreen */
/* we don't have a way to get out of fullscreen for now */
- window_set_fullscreen(window, 1);
+ if (window->fullscreen_handler)
+ window->fullscreen_handler(window, window->user_data);
break;
case 2: /* rotate */
case 3: /* scale */
if (state == WL_KEYBOARD_KEY_STATE_PRESSED)
window_set_maximized(window,
window->type != TYPE_MAXIMIZED);
+ } else if (sym == XKB_KEY_F11 &&
+ window->fullscreen_handler &&
+ state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ window->fullscreen_handler(window, window->user_data);
} else if (window->key_handler) {
(*window->key_handler)(window, input, time, key,
sym, state, window->user_data);
}
void
+window_set_fullscreen_handler(struct window *window,
+ window_fullscreen_handler_t handler)
+{
+ window->fullscreen_handler = handler;
+}
+
+void
window_set_title(struct window *window, const char *title)
{
free(window->title);
int32_t x, int32_t y, void *data);
typedef void (*window_close_handler_t)(struct window *window, void *data);
+typedef void (*window_fullscreen_handler_t)(struct window *window, void *data);
typedef void (*widget_resize_handler_t)(struct widget *widget,
int32_t width, int32_t height,
void
window_set_close_handler(struct window *window,
window_close_handler_t handler);
+void
+window_set_fullscreen_handler(struct window *window,
+ window_fullscreen_handler_t handler);
void
window_set_title(struct window *window, const char *title);