static bool special_key(int vk, unsigned flags) { switch (vk) { case VK_RETURN: if (flags & (1<<29)) { fullscreen_cb(); return true; } break; case VK_SHIFT: case VK_CONTROL: case VK_CAPITAL: case VK_MENU: case VK_LWIN: case VK_RWIN: case VK_SNAPSHOT: case VK_PAUSE: return false; } if (vk > 0x90) return false; /* Numeric keypad. */ if ((vk >= 0x60) && (vk <= 0x6f)) return false; if ((vk == ' ') || isdigit(vk) || isupper(vk)) { if (flags & (1<<29)) { /* ALT pressed */ dpy_queuekey(-27); dpy_queuekey(vk); return true; } return false; } if (GetKeyState(VK_CONTROL) & 0x8000) vk |= VKM_CTRL; if (GetKeyState(VK_SHIFT) & 0x8000) vk |= VKM_SHIFT; dpy_queuekey(-vk); return true; }
static void impl_attach_window (EphyExtension *extension, EphyWindow *window) { GtkUIManager *manager; GtkActionGroup *action_group; GtkAction *action; GSettings *settings; EphyLocationController *location_controller; g_signal_connect (EPHY_SETTINGS_LOCKDOWN, "changed::" EPHY_PREFS_LOCKDOWN_FULLSCREEN, G_CALLBACK (fullscreen_cb), window); g_signal_connect (EPHY_SETTINGS_LOCKDOWN, "changed::" EPHY_PREFS_LOCKDOWN_ARBITRARY_URL, G_CALLBACK (arbitrary_url_cb), window); /* Trigger an initial state on these elements. */ fullscreen_cb (EPHY_SETTINGS_LOCKDOWN, EPHY_PREFS_LOCKDOWN_FULLSCREEN, window); arbitrary_url_cb (EPHY_SETTINGS_LOCKDOWN, EPHY_PREFS_LOCKDOWN_ARBITRARY_URL, window); manager = GTK_UI_MANAGER (ephy_window_get_ui_manager (window)); action_group = find_action_group (manager, "WindowActions"); bind_settings_and_actions (EPHY_SETTINGS_LOCKDOWN, action_group, window_actions, G_N_ELEMENTS (window_actions)); action_group = find_action_group (manager, "PopupsActions"); bind_settings_and_actions (EPHY_SETTINGS_LOCKDOWN, action_group, popup_actions, G_N_ELEMENTS (popup_actions)); action = gtk_action_group_get_action (action_group, "SetImageAsBackground"); settings = ephy_settings_get ("org.gnome.desktop.background"); g_settings_bind_writable (settings, "picture-filename", action, "sensitive", FALSE); action_group = find_action_group (manager, "SpecialToolbarActions"); bind_settings_and_actions (EPHY_SETTINGS_LOCKDOWN, action_group, special_toolbar_actions, G_N_ELEMENTS (special_toolbar_actions)); location_controller = ephy_window_get_location_controller (window); bind_location_controller (EPHY_SETTINGS_LOCKDOWN, location_controller); }
static LRESULT CALLBACK window_cb(HWND window, UINT message, WPARAM wparam, LPARAM lparam) { dpy_flushkeys(); switch (message) { case WM_CLOSE: return 0; case WM_EXITSIZEMOVE: if (!isfullscreen) { window_geometry_valid = true; GetWindowRect(window, &window_geometry); write_window_geometry(); } break; case WM_SIZE: if (!window_created) { create_cb(); window_created = true; } resize_buffer(); break; case WM_SIZING: sizing_cb(wparam, (RECT*) lparam); goto delegate; case WM_ERASEBKGND: return 1; case WM_PAINT: { PAINTSTRUCT ps; BeginPaint(window, &ps); paint_cb(window, &ps, ps.hdc); EndPaint(window, &ps); break; } case WM_PRINTCLIENT: { PAINTSTRUCT ps; ps.hdc = (HDC) wparam; GetClientRect(window, &ps.rcPaint); paint_cb(window, &ps, ps.hdc); break; } case WM_CHAR: { unicode_key(wparam, lparam); break; } case WM_KEYDOWN: case WM_SYSKEYDOWN: { if (special_key(wparam, lparam)) return 1; break; } case WM_SYSCOMMAND: { switch (wparam) { case MENUITEM_SETFONT: setfont_cb(); break; case MENUITEM_FULLSCREEN: fullscreen_cb(); break; } goto delegate; } case WM_TIMER: { if (wparam == TIMEOUT_TIMER_ID) { dpy_queuekey(-VK_TIMEOUT); break; } goto delegate; } delegate: default: return DefWindowProcW(window, message, wparam, lparam); } return 0; }