144
static void vnc_grab(GtkWidget *vncdisplay, GtkWidget *window)
152
vnc_disable_modifiers(GtkWindow *window)
154
GtkSettings *settings = gtk_settings_get_default();
161
/* This stops F10 activating menu bar */
162
memset(&empty, 0, sizeof empty);
163
g_value_init(&empty, G_TYPE_STRING);
164
g_object_get_property(G_OBJECT(settings), "gtk-menu-bar-accel", &accel_setting);
165
g_object_set_property(G_OBJECT(settings), "gtk-menu-bar-accel", &empty);
167
/* This stops global accelerators like Ctrl+Q == Quit */
168
for (accels = accel_list ; accels ; accels = accels->next) {
169
if (accel_group == accels->data)
171
gtk_window_remove_accel_group(GTK_WINDOW(window), accels->data);
174
/* This stops menu bar shortcuts like Alt+F == File */
175
g_object_get(settings,
176
"gtk-enable-mnemonics", &enable_mnemonics_save,
178
g_object_set(settings,
179
"gtk-enable-mnemonics", FALSE,
182
accel_enabled = FALSE;
187
vnc_enable_modifiers(GtkWindow *window)
189
GtkSettings *settings = gtk_settings_get_default();
195
/* This allows F10 activating menu bar */
196
g_object_set_property(G_OBJECT(settings), "gtk-menu-bar-accel", &accel_setting);
198
/* This allows global accelerators like Ctrl+Q == Quit */
199
for (accels = accel_list ; accels ; accels = accels->next) {
200
if (accel_group == accels->data)
202
gtk_window_add_accel_group(GTK_WINDOW(window), accels->data);
205
/* This allows menu bar shortcuts like Alt+F == File */
206
g_object_set(settings,
207
"gtk-enable-mnemonics", enable_mnemonics_save,
210
accel_enabled = TRUE;
214
static void vnc_key_grab(GtkWidget *vncdisplay G_GNUC_UNUSED, GtkWidget *window)
216
vnc_disable_modifiers(GTK_WINDOW(window));
219
static void vnc_key_ungrab(GtkWidget *vncdisplay G_GNUC_UNUSED, GtkWidget *window)
221
vnc_enable_modifiers(GTK_WINDOW(window));
224
static void vnc_mouse_grab(GtkWidget *vncdisplay, GtkWidget *window)
146
226
set_title(VNC_DISPLAY(vncdisplay), window, TRUE);
149
static void vnc_ungrab(GtkWidget *vncdisplay, GtkWidget *window)
229
static void vnc_mouse_ungrab(GtkWidget *vncdisplay, GtkWidget *window)
151
231
set_title(VNC_DISPLAY(vncdisplay), window, FALSE);
689
770
gtk_container_add(GTK_CONTAINER(window), layout);
690
771
gtk_widget_realize(vnc);
773
g_value_init(&accel_setting, G_TYPE_STRING);
775
accels = gtk_accel_groups_from_object(G_OBJECT(window));
777
for ( ; accels ; accels = accels->next) {
778
accel_list = g_slist_append(accel_list, accels->data);
779
g_object_ref(G_OBJECT(accels->data));
692
782
#ifdef HAVE_GIOUNIX
693
783
if (strchr(args[0], '/')) {
694
784
GSocketAddress *addr = g_unix_socket_address_new_with_type
725
815
vnc_display_set_keyboard_grab(VNC_DISPLAY(vnc), TRUE);
726
816
vnc_display_set_pointer_grab(VNC_DISPLAY(vnc), TRUE);
817
vnc_display_set_pointer_local(VNC_DISPLAY(vnc), TRUE);
728
819
if (!gtk_widget_is_composited(window)) {
729
820
vnc_display_set_scaling(VNC_DISPLAY(vnc), TRUE);
747
838
G_CALLBACK(vnc_desktop_resize), NULL);
749
840
g_signal_connect(vnc, "vnc-pointer-grab",
750
G_CALLBACK(vnc_grab), window);
841
G_CALLBACK(vnc_mouse_grab), window);
751
842
g_signal_connect(vnc, "vnc-pointer-ungrab",
752
G_CALLBACK(vnc_ungrab), window);
843
G_CALLBACK(vnc_mouse_ungrab), window);
845
g_signal_connect(vnc, "vnc-keyboard-grab",
846
G_CALLBACK(vnc_key_grab), window);
847
g_signal_connect(vnc, "vnc-keyboard-ungrab",
848
G_CALLBACK(vnc_key_ungrab), window);
754
851
g_signal_connect(window, "key-press-event",
755
852
G_CALLBACK(vnc_screenshot), vnc);