diff options
author | myheroyuki <myheroyuki@outlook.com> | 2022-11-12 15:37:54 +0300 |
---|---|---|
committer | myheroyuki <myheroyuki@outlook.com> | 2022-11-12 15:37:54 +0300 |
commit | fb04a9763ca261872bd784323f8c9d4beea084db (patch) | |
tree | 63a2023986dee1a680ffebc570377cf6bd4ffbf8 /plugins | |
parent | a99610c5165731e96610b7fd04347f3a7b1c1000 (diff) |
[Rem-2682] Added view-only mode for RDP
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/rdp/rdp_event.c | 17 | ||||
-rw-r--r-- | plugins/rdp/rdp_plugin.c | 3 |
2 files changed, 20 insertions, 0 deletions
diff --git a/plugins/rdp/rdp_event.c b/plugins/rdp/rdp_event.c index 7b2484133..53ead09aa 100644 --- a/plugins/rdp/rdp_event.c +++ b/plugins/rdp/rdp_event.c @@ -561,6 +561,11 @@ static gboolean remmina_rdp_event_on_motion(GtkWidget *widget, GdkEventMotion *e { TRACE_CALL(__func__); RemminaPluginRdpEvent rdp_event = { 0 }; + RemminaFile *remminafile; + + remminafile = remmina_plugin_service->protocol_plugin_get_file(gp); + if (remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE)) + return FALSE; rdp_event.type = REMMINA_RDP_EVENT_TYPE_MOUSE; rdp_event.mouse_event.flags = PTR_FLAGS_MOVE; @@ -583,6 +588,8 @@ static gboolean remmina_rdp_event_on_button(GtkWidget *widget, GdkEventButton *e RemminaFile *remminafile; remminafile = remmina_plugin_service->protocol_plugin_get_file(gp); + if (remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE)) + return FALSE; /* We bypass 2button-press and 3button-press events */ if ((event->type != GDK_BUTTON_PRESS) && (event->type != GDK_BUTTON_RELEASE)) @@ -647,6 +654,11 @@ static gboolean remmina_rdp_event_on_scroll(GtkWidget *widget, GdkEventScroll *e gint flag; RemminaPluginRdpEvent rdp_event = { 0 }; float windows_delta; + RemminaFile *remminafile; + + remminafile = remmina_plugin_service->protocol_plugin_get_file(gp); + if (remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE)) + return FALSE; flag = 0; rdp_event.type = REMMINA_RDP_EVENT_TYPE_MOUSE; @@ -734,12 +746,17 @@ static gboolean remmina_rdp_event_on_key(GtkWidget *widget, GdkEventKey *event, rfContext *rfi = GET_PLUGIN_DATA(gp); RemminaPluginRdpEvent rdp_event; RemminaPluginRdpKeymapEntry *kep; + RemminaFile *remminafile; DWORD scancode = 0; int ik; if (!rfi || !rfi->connected || rfi->is_reconnecting) return FALSE; + remminafile = remmina_plugin_service->protocol_plugin_get_file(gp); + if (remmina_plugin_service->file_get_int(remminafile, "viewonly", FALSE)) + return FALSE; + #ifdef ENABLE_GTK_INSPECTOR_KEY /* GTK inspector key is propagated up. Disabled by default. * enable it by defining ENABLE_GTK_INSPECTOR_KEY */ diff --git a/plugins/rdp/rdp_plugin.c b/plugins/rdp/rdp_plugin.c index 105dd743a..a48819ea6 100644 --- a/plugins/rdp/rdp_plugin.c +++ b/plugins/rdp/rdp_plugin.c @@ -96,6 +96,7 @@ #define REMMINA_RDP_FEATURE_TOOL_SENDCTRLALTDEL 4 #define REMMINA_RDP_FEATURE_DYNRESUPDATE 5 #define REMMINA_RDP_FEATURE_MULTIMON 6 +#define REMMINA_RDP_FEATURE_VIEWONLY 7 #define REMMINA_CONNECTION_TYPE_NONE 0 @@ -2901,6 +2902,8 @@ static const RemminaProtocolSetting remmina_rdp_advanced_settings[] = * The last element of the array must be REMMINA_PROTOCOL_FEATURE_TYPE_END. */ static const RemminaProtocolFeature remmina_rdp_features[] = { + { REMMINA_PROTOCOL_FEATURE_TYPE_PREF, REMMINA_RDP_FEATURE_VIEWONLY, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), "viewonly", + N_("View only") }, { REMMINA_PROTOCOL_FEATURE_TYPE_TOOL, REMMINA_RDP_FEATURE_TOOL_REFRESH, N_("Refresh"), NULL, NULL }, { REMMINA_PROTOCOL_FEATURE_TYPE_SCALE, REMMINA_RDP_FEATURE_SCALE, NULL, NULL, NULL }, { REMMINA_PROTOCOL_FEATURE_TYPE_DYNRESUPDATE, REMMINA_RDP_FEATURE_DYNRESUPDATE, NULL, NULL, NULL }, |