window_handler.c
来自「CS架构的多平台的GUI系统」· C语言 代码 · 共 478 行 · 第 1/2 页
C
478 行
/*************************************************************************** begin : Mon Aug 9 2004 copyright : (C) 2004 - 2005 by Alper Akcan email : distchx@yahoo.com ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation; either version 2.1 of the * * License, or (at your option) any later version. * * * ***************************************************************************/#include "../lib/xynth_.h"#include "server.h"#define s_server_window_btn_y(a)\ int id = s_server_pri_id(0);\ if (id < 0) {\ return;\ }\ if (id == server->cursor.xyid) {\ s_server_mouse_setcursor(a);\ } else {\ s_server_mouse_setcursor(MOUSE_CURSOR_ARROW);\ }void s_server_window_btn_resize_oh (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_mouse_setcursor(MOUSE_CURSOR_ARROW);}void s_server_window_btn_resize_u_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZEV);}void s_server_window_btn_resize_ur_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZES);}void s_server_window_btn_resize_r_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZEH);}void s_server_window_btn_resize_dr_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZEB);}void s_server_window_btn_resize_d_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZEV);}void s_server_window_btn_resize_dl_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZES);}void s_server_window_btn_resize_l_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZEH);}void s_server_window_btn_resize_ul_o (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_y(MOUSE_CURSOR_SIZEB);}#define s_server_window_btn_x(a, b)\ int id;\ s_rect_t coor;\ id = s_server_pri_id(0);\ if (id < 0) {\ return;\ }\ coor.x = server->client[id].button[b].x;\ coor.y = server->client[id].button[b].y;\ coor.w = server->client[id].button[b].w;\ coor.h = server->client[id].button[b].h;\ s_server_putbox(window, id, &coor, coor.x, coor.y, &server->theme.button[a][b]);\ s_server_surface_update(&coor);#define s_server_window_btn_x_(a, b)\ if ((event->mouse->px >= handler->mouse.x) &&\ (event->mouse->px <= (handler->mouse.x + handler->mouse.w)) &&\ (event->mouse->py >= handler->mouse.y) &&\ (event->mouse->py <= (handler->mouse.y + handler->mouse.h))) {\ s_server_window_btn_x(a, b);\ }void s_server_window_btn_menu_p (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(2, MENU);}void s_server_window_btn_menu_ho (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x_(2, MENU);}void s_server_window_btn_menu_oh (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(1, MENU);}void s_server_window_btn_menu_r (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_menu_oh(window, event, handler);}void s_server_window_btn_hide_p (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(2, HIDE);}void s_server_window_btn_hide_ho (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x_(2, HIDE);}void s_server_window_btn_hide_oh (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(1, HIDE);}void s_server_window_btn_hide_r (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_hide_oh(window, event, handler);}void s_server_window_btn_maximize_p (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(2, MAXIMIZE);}void s_server_window_btn_maximize_ho (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x_(2, MAXIMIZE);}void s_server_window_btn_maximize_oh (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(1, MAXIMIZE);}void s_server_window_btn_maximize_r (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_maximize_oh(window, event, handler); s_server_window_maximize(window);}void s_server_window_btn_close_p (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(2, CLOSE);}void s_server_window_btn_close_ho (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x_(2, CLOSE);}void s_server_window_btn_close_oh (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_btn_x(1, CLOSE);}void s_server_window_btn_close_r (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_close(window);}void s_server_window_btn_move (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_move(window);}void s_server_window_btn_resize_up (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_up(window);}void s_server_window_btn_resize_up_left (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_up_left(window);}void s_server_window_btn_resize_up_right (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_up_right(window);}void s_server_window_btn_resize_left (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_left(window);}void s_server_window_btn_resize_right (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_right(window);}void s_server_window_btn_resize_down (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_down(window);}void s_server_window_btn_resize_down_left (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_down_left(window);}void s_server_window_btn_resize_down_right (s_window_t *window, s_event_t *event, s_handler_t *handler){ s_server_window_resize_down_right(window);}void s_server_window_handlers_del_mouse (void){ int i; for (i = 0; i < 20; i++) { s_handler_del(server->window, server->whndl[i]); }}void s_server_window_handlers_add_mouse (int id){ int v = 1; s_handler_t *hndl; /* menu */ hndl = server->whndl[0]; hndl->type = MOUSE_HANDLER; hndl->mouse.x = server->client[id].button[MENU].x + server->theme.button[v][MENU].handler.x; hndl->mouse.y = server->client[id].button[MENU].y + server->theme.button[v][MENU].handler.y; hndl->mouse.w = server->theme.button[v][MENU].handler.w; hndl->mouse.h = server->theme.button[v][MENU].handler.h; hndl->mouse.button = MOUSE_LEFTBUTTON; hndl->mouse.p = s_server_window_btn_menu_p; hndl->mouse.r = s_server_window_btn_menu_r; hndl->mouse.oh = s_server_window_btn_menu_oh; hndl->mouse.ho = s_server_window_btn_menu_ho; hndl->mouse.hoh = s_server_window_btn_menu_oh; s_handler_add(server->window, hndl); /* hide */ hndl = server->whndl[1]; hndl->type = MOUSE_HANDLER; hndl->mouse.x = server->client[id].button[HIDE].x + server->theme.button[v][HIDE].handler.x; hndl->mouse.y = server->client[id].button[HIDE].y + server->theme.button[v][HIDE].handler.y; hndl->mouse.w = server->theme.button[v][HIDE].handler.w; hndl->mouse.h = server->theme.button[v][HIDE].handler.h; hndl->mouse.button = MOUSE_LEFTBUTTON; hndl->mouse.p = s_server_window_btn_hide_p; hndl->mouse.r = s_server_window_btn_hide_r; hndl->mouse.oh = s_server_window_btn_hide_oh; hndl->mouse.ho = s_server_window_btn_hide_ho; hndl->mouse.hoh = s_server_window_btn_hide_oh; s_handler_add(server->window, hndl); /* close */ hndl = server->whndl[2]; hndl->type = MOUSE_HANDLER;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?