diff options
author | bhatman1441 <blackhat1441@protonmail.com> | 2024-01-03 16:14:45 +0300 |
---|---|---|
committer | bhatman1441 <blackhat1441@protonmail.com> | 2024-01-03 16:14:45 +0300 |
commit | 3ae90eb77ed6d2bdc09e5f73c049f3361e1559c4 (patch) | |
tree | d94c72eaddd1ae42b2bdaf1916b4eba33b0fa30a /plugins/rdp | |
parent | 94db9006db34a2e3e9c03ae36d55d07fc1fe1739 (diff) |
[freerdp] Fix segfault from opening Preferences menu
Diffstat (limited to 'plugins/rdp')
-rw-r--r-- | plugins/rdp/rdp_settings.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/plugins/rdp/rdp_settings.c b/plugins/rdp/rdp_settings.c index b0110c66e..7a3d4aa41 100644 --- a/plugins/rdp/rdp_settings.c +++ b/plugins/rdp/rdp_settings.c @@ -221,9 +221,24 @@ static void remmina_rdp_settings_grid_load_layout(RemminaPluginRdpsetGrid *grid) #if FREERDP_VERSION_MAJOR >= 3 size_t layout_count = 0; layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD | RDP_KEYBOARD_LAYOUT_TYPE_VARIANT, &layout_count); + + for (DWORD i = 0; i < layout_count; i++) { + s = g_strdup_printf("%08X - %s", layouts[i].code, layouts[i].name); + gtk_list_store_append(grid->keyboard_layout_store, &iter); + gtk_list_store_set(grid->keyboard_layout_store, &iter, 0, layouts[i].code, 1, s, -1); + + if (rdp_keyboard_layout == layouts[i].code) + gtk_combo_box_set_active(GTK_COMBO_BOX(grid->keyboard_layout_combo), i + 1); + + if (keyboard_layout == layouts[i].code) + gtk_label_set_text(GTK_LABEL(grid->keyboard_layout_label), s); + + g_free(s); + } + + freerdp_keyboard_layouts_free(layouts, layout_count); #else layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD | RDP_KEYBOARD_LAYOUT_TYPE_VARIANT); -#endif for (DWORD i = 0; layouts[i].code; i++) { s = g_strdup_printf("%08X - %s", layouts[i].code, layouts[i].name); @@ -239,9 +254,6 @@ static void remmina_rdp_settings_grid_load_layout(RemminaPluginRdpsetGrid *grid) g_free(s); } -#if FREERDP_VERSION_MAJOR >= 3 - freerdp_keyboard_layouts_free(layouts, layout_count); -#else freerdp_keyboard_layouts_free(layouts); #endif } |