diff --git a/xkeymap.c b/xkeymap.c index 2794497..a9f8085 100644 --- a/xkeymap.c +++ b/xkeymap.c @@ -44,6 +44,8 @@ extern int g_keyboard_subtype; extern int g_keyboard_functionkeys; extern int g_win_button_size; extern RD_BOOL g_enable_compose; +extern RD_BOOL g_seamless_rdp; +extern RD_BOOL g_seamless_active; extern RDP_VERSION g_rdp_version; extern RD_BOOL g_numlock_sync; @@ -644,7 +646,21 @@ handle_special_keys(uint32 keysym, unsigned int state, uint32 ev_time, RD_BOOL p { /* Ctrl-Alt-Enter: toggle full screen */ if (pressed) - xwin_toggle_fullscreen(); + { + if (!g_seamless_rdp) + { + /* only allow toggle fullscreen when not running + rdesktop in seamless mode */ + xwin_toggle_fullscreen(); + } + else + { + /* deactivate seamless mode for debug purpose, one can + not activate seamless mode again */ + if (g_seamless_active) + ui_seamless_toggle(); + } + } return True; } break; diff --git a/xwin.c b/xwin.c index 1df1a8a..cb64064 100644 --- a/xwin.c +++ b/xwin.c @@ -101,7 +101,7 @@ typedef struct _seamless_window static seamless_window *g_seamless_windows = NULL; static unsigned long g_seamless_focused = 0; static RD_BOOL g_seamless_started = False; /* Server end is up and running */ -static RD_BOOL g_seamless_active = False; /* We are currently in seamless mode */ +RD_BOOL g_seamless_active = False; /* We are currently in seamless mode */ static RD_BOOL g_seamless_hidden = False; /* Desktop is hidden on server */ static RD_BOOL g_seamless_broken_restack = False; /* WM does not properly restack */ extern RD_BOOL g_seamless_rdp; @@ -2257,9 +2257,9 @@ xwin_toggle_fullscreen(void) { Pixmap contents = 0; - if (g_seamless_active) - /* Turn off SeamlessRDP mode */ - ui_seamless_toggle(); + /* When running rdesktop in seamless mode, toggling of fullscreen is not allowed */ + if (g_seamless_rdp) + return; if (!g_ownbackstore) {