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:
authormyheroyuki <myheroyuki@outlook.com>2022-11-12 15:37:54 +0300
committermyheroyuki <myheroyuki@outlook.com>2022-11-12 15:37:54 +0300
commitfb04a9763ca261872bd784323f8c9d4beea084db (patch)
tree63a2023986dee1a680ffebc570377cf6bd4ffbf8 /plugins
parenta99610c5165731e96610b7fd04347f3a7b1c1000 (diff)
[Rem-2682] Added view-only mode for RDP
Diffstat (limited to 'plugins')
-rw-r--r--plugins/rdp/rdp_event.c17
-rw-r--r--plugins/rdp/rdp_plugin.c3
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 },