Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Louis Dupond <jean-louis@dupond.be>2012-05-29 16:32:44 +0400
committerJean-Louis Dupond <jean-louis@dupond.be>2012-05-29 16:32:44 +0400
commit46814a0d90dace85fa127c2d2b623d6c02a654c0 (patch)
tree6a8f8861745ab5200c88a13fbe196ee3a75495a8 /remmina-plugins/rdp/rdp_event.c
parenta193737f3829878c88a827a5b7dd6ac72db9e941 (diff)
Also add SCROLL_LOCK state and fix GTK2 compatibility
Diffstat (limited to 'remmina-plugins/rdp/rdp_event.c')
-rw-r--r--remmina-plugins/rdp/rdp_event.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/remmina-plugins/rdp/rdp_event.c b/remmina-plugins/rdp/rdp_event.c
index f204b21bc..761be0c1c 100644
--- a/remmina-plugins/rdp/rdp_event.c
+++ b/remmina-plugins/rdp/rdp_event.c
@@ -31,18 +31,35 @@ static void remmina_rdp_event_on_focus_in(GtkWidget* widget, GdkEventKey* event,
{
rfContext* rfi;
rdpInput* input;
+ GdkModifierType state;
+#if GTK_VERSION == 3
+ GdkDeviceManager *manager;
+ GdkDevice *keyboard = NULL;
+#endif
rfi = GET_DATA(gp);
input = rfi->instance->input;
uint32 toggle_keys_state = 0;
- if (gdk_keymap_get_num_lock_state(gdk_keymap_get_default()))
+#if GTK_VERSION == 3
+ manager = gdk_display_get_device_manager(gdk_display_get_default());
+ keyboard = gdk_device_manager_get_client_pointer(manager);
+ gdk_window_get_device_position(gdk_get_default_root_window(), keyboard, NULL, NULL, &state);
+#else
+ gdk_window_get_pointer(gdk_get_default_root_window(), NULL, NULL, &state);
+#endif
+
+ if (state & GDK_LOCK_MASK)
+ {
+ toggle_keys_state |= KBD_SYNC_CAPS_LOCK;
+ }
+ if (state & GDK_MOD2_MASK)
{
toggle_keys_state |= KBD_SYNC_NUM_LOCK;
}
- if (gdk_keymap_get_caps_lock_state(gdk_keymap_get_default()))
+ if (state & GDK_MOD5_MASK)
{
- toggle_keys_state |= KBD_SYNC_CAPS_LOCK;
+ toggle_keys_state |= KBD_SYNC_SCROLL_LOCK;
}
input->SynchronizeEvent(input, toggle_keys_state);