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

gitlab.com/Remmina/remminadoc.gitlab.io.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/public
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2023-04-04 14:59:40 +0300
committerAntenore Gatta <antenore@simbiosi.org>2023-04-04 14:59:40 +0300
commit80bf2f3c5ee42710e33b5c4dd74173c911121cf2 (patch)
tree062bf82d308d9147d42b5b62357b3d55b272399e /public
parent1cb7f48025caa51692f89a9daa83d70e00665543 (diff)
Automatic doc build by remmina-ci
Diffstat (limited to 'public')
-rw-r--r--public/_remmina-_r_d_p-and-_hi_d_p_i-scaling_8md_source.html2
-rw-r--r--public/functions_f.html4
-rw-r--r--public/functions_r.html5
-rw-r--r--public/functions_vars_f.html6
-rw-r--r--public/functions_vars_r.html5
-rw-r--r--public/md__builds__remmina_remmina-ci__remmina_8wiki__problems-and-tweaks__remmina-_r_d_p-and-_hi_d_p_i-scaling.html3
-rw-r--r--public/navtreedata.js8
-rw-r--r--public/navtreeindex0.js2
-rw-r--r--public/navtreeindex14.js16
-rw-r--r--public/navtreeindex15.js4
-rw-r--r--public/navtreeindex16.js4
-rw-r--r--public/navtreeindex17.js4
-rw-r--r--public/navtreeindex18.js1
-rw-r--r--public/plugin_8h_source.html2
-rw-r--r--public/rcw_8c_source.html62
-rw-r--r--public/remmina__masterthread__exec_8c_source.html14
-rw-r--r--public/remmina__plugin__manager_8c_source.html98
-rw-r--r--public/remmina__protocol__widget_8c.html220
-rw-r--r--public/remmina__protocol__widget_8c_source.html287
-rw-r--r--public/remmina__protocol__widget_8h.html150
-rw-r--r--public/remmina__protocol__widget_8h_source.html158
-rw-r--r--public/remmina__ssh_8c_source.html12
-rw-r--r--public/remmina__ssh__plugin_8c_source.html2
-rw-r--r--public/search/all_12.js1
-rw-r--r--public/search/all_14.js2
-rw-r--r--public/search/all_6.js2
-rw-r--r--public/search/variables_11.js1
-rw-r--r--public/search/variables_13.js2
-rw-r--r--public/search/variables_6.js2
-rw-r--r--public/struct___remmina_protocol_widget_priv.html34
-rw-r--r--public/struct___remmina_protocol_widget_priv.js1
-rw-r--r--public/struct___remmina_protocol_widget_signal_data.html6
-rw-r--r--public/struct_mp_run_info.html10
-rw-r--r--public/structremmina__protocol__widget__dialog__mt__data__t.html26
34 files changed, 595 insertions, 561 deletions
diff --git a/public/_remmina-_r_d_p-and-_hi_d_p_i-scaling_8md_source.html b/public/_remmina-_r_d_p-and-_hi_d_p_i-scaling_8md_source.html
index 213552118..e737c57b4 100644
--- a/public/_remmina-_r_d_p-and-_hi_d_p_i-scaling_8md_source.html
+++ b/public/_remmina-_r_d_p-and-_hi_d_p_i-scaling_8md_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('_remmina-_r_d_p-and-_hi_d_p_i-scaling_
<div class="title">Remmina-RDP-and-HiDPI-scaling.md</div> </div>
</div><!--header-->
<div class="contents">
-<a href="_remmina-_r_d_p-and-_hi_d_p_i-scaling_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;TL;DR all the RDP remote desktops are blurred on a HiDPI monitor with scaling enabled. And there is no way to fix it under Gnome Shell. Read issues #1778 #1878 to find a workaround for gnome shell, or switch to KDE desktop.</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;## How is it supposed to work</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;The RDP protocol, starting with Windows 8.1, requires that scaling be done at the server-side. Your local Remmina client should simply draw unscaled the bitmaps it receives from the server.</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;## Why it does not work</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;GTK3 and Gnome Shell have a horrible implementation of HiDPI scaling.</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;When you enable scaling on your Gnome Shell settings, you enable an integer scaling factor, i.e. 1x 2x 3x. After enabling scaling under Gnome Shell, GTK 3 will scale all bitmaps we draw to a GtkDrawingArea by that scaling factor. It will also scale all cursor bitmaps and mouse positions/movement.</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;As we told before, RDP requires that all those scaling operations to be done at the server-side by windows, not by the client.</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;We tried to neutralize GTK integral scaling factor for Remmina application, but we did not reach acceptable results:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;* Neutralize bitmap scaling: can be done in code with cairo, but requires some dozen lines of code in various Remmina parts</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;* Neutralize cursor position scaling: can be done just by multiplying by the scaling factor, but we lose precision in mouse position.</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;* Neutralize window dimension/allocation scaling: again this can be done by multiplying or dividing by the scaling factor the GtkDrawingArea width and height. But we lose precision.</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;* Neutralize cursor scaling: seems to be impossible to do with GTK. So we could scale down the cursor bitmap, but it will be shown pixelated due to the duplication of pixels done by GTK.</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;All this effort took around 100 lines of code, 3-4 hours of development and many hours of testing. And the result is really bad: cursor is still bad, code became more complex, a bit of mouse precision is lost.</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;Note that the first problem &quot;neutralize bitmap scaling&quot; could be also partially solved using the current Remmina scaler and a fix remote resolution, provided that every time you change the remote resolution you should recalculate your local window size. A simpler approach is to enable the Remmina scaler, set the remote resolution as your monitor full resolution and use Remmina full screen only. But cursors are still not scaled See [issue 1878](https://gitlab.com/Remmina/Remmina/issues/1878).</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;## Even worse: fractional scaling experimental feature</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;Recently an experimental feature has been added to Gnome Shell to enable fractional scaling (i.e: 1.7x), both for X.Org and Wayland. This feature seems to set GTK scaling to 2x and then apply a global screen scaling via Xrandr or similar (the compositor).</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;This makes Remmina impossible to correctly deal with local scaling: Remmina can no longer disable scaling done by Xrandr, and is also unable to determine your current monitor scaling factor to send to the remote server. The result is very blurry.</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;## How should it work</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;Windows 10, MacOS, KDE/Qt have a simple approach to HiDPI: an application can declare itself to be HiDPI aware. When the application declares itself HiDPI aware, all graphical drawings to the monitor are not scaled, all pointer motions are not scaled, all mouse cursor are not scaled. But all wigets of the application, like buttons, texts are still correctly rendered at bigger dimensions. Under Qt this can obtained with a single line of code: `QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);`</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;Unfortunately, Remmina is not a Qt application, it&#39;s a GTK application. And Gnome Shell is not Plasma.</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;## Updates</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;Freedesktop.org in 2022 implemented [wp-fractional-scale-v1](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/143) in the Wayland Protocol. But as said in that MR, &quot;GTK4 only has integer scaling, no expectation for this to change until at least GTK5&quot;. So we must wait GTK5 and see if GTK5 will also expose an API to disable automatic scaling.</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div></div><!-- fragment --></div><!-- contents -->
+<a href="_remmina-_r_d_p-and-_hi_d_p_i-scaling_8md.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;TL;DR all the RDP remote desktops are blurred on a HiDPI monitor with scaling enabled. And there is no way to fix it under Gnome Shell. Read issues #1778 #1878 to find a workaround for gnome shell, or switch to KDE desktop.</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;## How is it supposed to work</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;The RDP protocol, starting with Windows 8.1, requires that scaling be done at the server-side. Your local Remmina client should simply draw unscaled the bitmaps it receives from the server.</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;## Why it does not work</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;GTK3 and Gnome Shell have a horrible implementation of HiDPI scaling.</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;When you enable scaling on your Gnome Shell settings, you enable an integer scaling factor, i.e. 1x 2x 3x. After enabling scaling under Gnome Shell, GTK 3 will scale all bitmaps we draw to a GtkDrawingArea by that scaling factor. It will also scale all cursor bitmaps and mouse positions/movement.</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;As we told before, RDP requires that all those scaling operations to be done at the server-side by windows, not by the client.</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;We tried to neutralize GTK integral scaling factor for Remmina application, but we did not reach acceptable results:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;* Neutralize bitmap scaling: can be done in code with cairo, but requires some dozen lines of code in various Remmina parts</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;* Neutralize cursor position scaling: can be done just by multiplying by the scaling factor, but we lose precision in mouse position.</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;* Neutralize window dimension/allocation scaling: again this can be done by multiplying or dividing by the scaling factor the GtkDrawingArea width and height. But we lose precision.</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;* Neutralize cursor scaling: seems to be impossible to do with GTK. So we could scale down the cursor bitmap, but it will be shown pixelated due to the duplication of pixels done by GTK.</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;All this effort took around 100 lines of code, 3-4 hours of development and many hours of testing. And the result is really bad: cursor is still bad, code became more complex, a bit of mouse precision is lost.</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;Note that the first problem &quot;neutralize bitmap scaling&quot; could be also partially solved using the current Remmina scaler and a fix remote resolution, provided that every time you change the remote resolution you should recalculate your local window size. A simpler approach is to enable the Remmina scaler, set the remote resolution as your monitor full resolution and use Remmina full screen only. But cursors are still not scaled See [issue 1878](https://gitlab.com/Remmina/Remmina/issues/1878).</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;## Even worse: fractional scaling experimental feature</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;Recently an experimental feature has been added to Gnome Shell to enable fractional scaling (i.e: 1.7x), both for X.Org and Wayland. This feature seems to set GTK scaling to 2x and then apply a global screen scaling via Xrandr or similar (the compositor).</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;This makes Remmina impossible to correctly deal with local scaling: Remmina can no longer disable scaling done by Xrandr, and is also unable to determine your current monitor scaling factor to send to the remote server. The result is very blurry.</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;## How should it work</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;Windows 10, MacOS, KDE/Qt have a simple approach to HiDPI: an application can declare itself to be HiDPI aware. When the application declares itself HiDPI aware, all graphical drawings to the monitor are not scaled, all pointer motions are not scaled, all mouse cursor are not scaled. But all wigets of the application, like buttons, texts are still correctly rendered at bigger dimensions. Under Qt this can obtained with a single line of code: `QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);`</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;Unfortunately, Remmina is not a Qt application, it&#39;s a GTK application. And Gnome Shell is not Plasma.</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;## Updates</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;Freedesktop.org in 2022 implemented [wp-fractional-scale-v1](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/143) in the Wayland Protocol. But as said in that MR, &quot;GTK4 only has integer scaling, no expectation for this to change until at least GTK5&quot;. So we must wait GTK5 and see if GTK5 will also expose an API to disable automatic scaling.</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;April 2023: GTK is preparing to support HiDPI wayland fractional scale: [GTK MR5767](https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5767) and [GTK MR5763](https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5763)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
diff --git a/public/functions_f.html b/public/functions_f.html
index 221bb2e3f..bd02b4ec9 100644
--- a/public/functions_f.html
+++ b/public/functions_f.html
@@ -169,11 +169,13 @@ $(document).ready(function(){initNavTree('functions_f.html','');});
<li>flags
: <a class="el" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">_DialogData</a>
, <a class="el" href="struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c">PyGObject</a>
-, <a class="el" href="structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c">remmina_plugin_rdp_event</a>
</li>
<li>Flags
: <a class="el" href="structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114">remmina_plugin_rdp_event</a>
</li>
+<li>flags
+: <a class="el" href="structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c">remmina_plugin_rdp_event</a>
+</li>
<li>flags_add
: <a class="el" href="struct___py_g_object___functions.html#a16c1bbbcaa3751066da103df308a515d">_PyGObject_Functions</a>
</li>
diff --git a/public/functions_r.html b/public/functions_r.html
index 70bf0c052..cb99508b7 100644
--- a/public/functions_r.html
+++ b/public/functions_r.html
@@ -221,9 +221,12 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
<li>retptr
: <a class="el" href="structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24">remmina_plugin_rdp_ui_object</a>
</li>
+<li>retry_message_panel
+: <a class="el" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">_RemminaProtocolWidgetPriv</a>
+</li>
<li>retval
: <a class="el" href="struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235">_RemminaUnlockDialog</a>
-, <a class="el" href="structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07">remmina_masterthread_exec_data</a>
+, <a class="el" href="structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15">remmina_masterthread_exec_data</a>
, <a class="el" href="structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee">remmina_plugin_rdp_ui_object</a>
</li>
<li>reveal_button
diff --git a/public/functions_vars_f.html b/public/functions_vars_f.html
index 79a7335b7..4ca2eef05 100644
--- a/public/functions_vars_f.html
+++ b/public/functions_vars_f.html
@@ -169,11 +169,13 @@ $(document).ready(function(){initNavTree('functions_vars_f.html','');});
<li>flags
: <a class="el" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">_DialogData</a>
, <a class="el" href="struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c">PyGObject</a>
-, <a class="el" href="structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c">remmina_plugin_rdp_event</a>
</li>
<li>Flags
: <a class="el" href="structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114">remmina_plugin_rdp_event</a>
</li>
+<li>flags
+: <a class="el" href="structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c">remmina_plugin_rdp_event</a>
+</li>
<li>flags_add
: <a class="el" href="struct___py_g_object___functions.html#a16c1bbbcaa3751066da103df308a515d">_PyGObject_Functions</a>
</li>
@@ -224,7 +226,7 @@ $(document).ready(function(){initNavTree('functions_vars_f.html','');});
: <a class="el" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">_RemminaPref</a>
</li>
<li>func
-: <a class="el" href="structon_main_thread__cb__data.html#ab5a747d3d76631e059d736ef286a6c38">onMainThread_cb_data</a>
+: <a class="el" href="structon_main_thread__cb__data.html#aeb3812987b358af65f087a5c063814f6">onMainThread_cb_data</a>
, <a class="el" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">remmina_masterthread_exec_data</a>
, <a class="el" href="struct_remmina_plugin_loader.html#a89a0df31eaca09c7f3009d1100f3b078">RemminaPluginLoader</a>
</li>
diff --git a/public/functions_vars_r.html b/public/functions_vars_r.html
index 216465b17..34a804bf9 100644
--- a/public/functions_vars_r.html
+++ b/public/functions_vars_r.html
@@ -212,9 +212,12 @@ $(document).ready(function(){initNavTree('functions_vars_r.html','');});
<li>retptr
: <a class="el" href="structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24">remmina_plugin_rdp_ui_object</a>
</li>
+<li>retry_message_panel
+: <a class="el" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">_RemminaProtocolWidgetPriv</a>
+</li>
<li>retval
: <a class="el" href="struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235">_RemminaUnlockDialog</a>
-, <a class="el" href="structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07">remmina_masterthread_exec_data</a>
+, <a class="el" href="structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15">remmina_masterthread_exec_data</a>
, <a class="el" href="structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee">remmina_plugin_rdp_ui_object</a>
</li>
<li>reveal_button
diff --git a/public/md__builds__remmina_remmina-ci__remmina_8wiki__problems-and-tweaks__remmina-_r_d_p-and-_hi_d_p_i-scaling.html b/public/md__builds__remmina_remmina-ci__remmina_8wiki__problems-and-tweaks__remmina-_r_d_p-and-_hi_d_p_i-scaling.html
index 4e09cb832..41c751e2a 100644
--- a/public/md__builds__remmina_remmina-ci__remmina_8wiki__problems-and-tweaks__remmina-_r_d_p-and-_hi_d_p_i-scaling.html
+++ b/public/md__builds__remmina_remmina-ci__remmina_8wiki__problems-and-tweaks__remmina-_r_d_p-and-_hi_d_p_i-scaling.html
@@ -104,7 +104,8 @@ $(document).ready(function(){initNavTree('md__builds__remmina_remmina-ci__remmin
<h2>How should it work</h2>
<p>Windows 10, MacOS, KDE/Qt have a simple approach to HiDPI: an application can declare itself to be HiDPI aware. When the application declares itself HiDPI aware, all graphical drawings to the monitor are not scaled, all pointer motions are not scaled, all mouse cursor are not scaled. But all wigets of the application, like buttons, texts are still correctly rendered at bigger dimensions. Under Qt this can obtained with a single line of code: <code>QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);</code> Unfortunately, Remmina is not a Qt application, it's a GTK application. And Gnome Shell is not Plasma.</p>
<h2>Updates</h2>
-<p>Freedesktop.org in 2022 implemented <a href="https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/143">wp-fractional-scale-v1</a> in the Wayland Protocol. But as said in that MR, "GTK4 only has integer scaling, no expectation for this to change until at least GTK5". So we must wait GTK5 and see if GTK5 will also expose an API to disable automatic scaling. </p>
+<p>Freedesktop.org in 2022 implemented <a href="https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/143">wp-fractional-scale-v1</a> in the Wayland Protocol. But as said in that MR, "GTK4 only has integer scaling, no expectation for this to change until at least GTK5". So we must wait GTK5 and see if GTK5 will also expose an API to disable automatic scaling.</p>
+<p>April 2023: GTK is preparing to support HiDPI wayland fractional scale: <a href="https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5767">GTK MR5767</a> and <a href="https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5763">GTK MR5763</a> </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/public/navtreedata.js b/public/navtreedata.js
index 618be2054..f32e48a56 100644
--- a/public/navtreedata.js
+++ b/public/navtreedata.js
@@ -102,10 +102,10 @@ var NAVTREEINDEX =
"struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff",
"struct___remmina_plugin_service.html#a4eac7cd317ef677917c2fa7b1859a189",
"struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f",
-"struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed",
-"structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6",
-"structrf__context.html#ae6190d1c82045bcd08e22ff6e98148a3",
-"www__plugin_8c.html#af4c8fa778acc2d2f7dd9418e48c99f19"
+"struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb",
+"structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719",
+"structrf__context.html#adf05df0bd656d71f2a95c39ea96b7c6e",
+"www__plugin_8c.html#af1e5c3cccf8fcfb51c4518462b9b61ea"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/public/navtreeindex0.js b/public/navtreeindex0.js
index 5c40a604b..f1cd4c62e 100644
--- a/public/navtreeindex0.js
+++ b/public/navtreeindex0.js
@@ -160,8 +160,8 @@ var NAVTREEINDEX0 =
"globals_type.html":[61,1,3],
"globals_u.html":[61,1,0,21],
"globals_v.html":[61,1,0,22],
-"globals_vars.html":[61,1,2],
"globals_vars.html":[61,1,2,0],
+"globals_vars.html":[61,1,2],
"globals_vars_a.html":[61,1,2,1],
"globals_vars_b.html":[61,1,2,2],
"globals_vars_c.html":[61,1,2,3],
diff --git a/public/navtreeindex14.js b/public/navtreeindex14.js
index 32edee3cf..56e4b53e0 100644
--- a/public/navtreeindex14.js
+++ b/public/navtreeindex14.js
@@ -206,26 +206,27 @@ var NAVTREEINDEX14 =
"struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7":[60,0,64,17],
"struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f":[60,0,64,8],
"struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0":[60,0,64,18],
-"struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116":[60,0,64,25],
+"struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116":[60,0,64,26],
"struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e":[60,0,64,1],
"struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05":[60,0,64,4],
"struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211":[60,0,64,14],
-"struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93":[60,0,64,27],
+"struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93":[60,0,64,28],
"struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b":[60,0,64,0],
"struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483":[60,0,64,7],
"struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640":[60,0,64,15],
"struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d":[60,0,64,11],
-"struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791":[60,0,64,22],
+"struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791":[60,0,64,23],
"struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6":[60,0,64,6],
"struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca":[60,0,64,19],
-"struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c":[60,0,64,24],
-"struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533":[60,0,64,23],
+"struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c":[60,0,64,25],
+"struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533":[60,0,64,24],
"struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10":[60,0,64,20],
"struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4":[60,0,64,9],
"struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46":[60,0,64,16],
"struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326":[60,0,64,13],
"struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d":[60,0,64,10],
-"struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885":[60,0,64,26],
+"struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4":[60,0,64,22],
+"struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885":[60,0,64,27],
"struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0":[60,0,64,5],
"struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380":[60,0,64,12],
"struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4":[60,0,64,2],
@@ -248,6 +249,5 @@ var NAVTREEINDEX14 =
"struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5":[60,0,72,4],
"struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0":[60,0,72,5],
"struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed":[60,0,72,11],
-"struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa":[60,0,72,3],
-"struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb":[60,0,72,23]
+"struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa":[60,0,72,3]
};
diff --git a/public/navtreeindex15.js b/public/navtreeindex15.js
index ca6b6f487..c390aa9a8 100644
--- a/public/navtreeindex15.js
+++ b/public/navtreeindex15.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX15 =
{
+"struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb":[60,0,72,23],
"struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed":[60,0,72,7],
"struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3":[60,0,72,18],
"struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52":[60,0,72,19],
@@ -248,6 +249,5 @@ var NAVTREEINDEX15 =
"structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87":[60,0,87,20],
"structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46":[60,0,87,17],
"structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73":[60,0,87,22],
-"structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e":[60,0,87,18],
-"structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719":[60,0,87,1]
+"structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e":[60,0,87,18]
};
diff --git a/public/navtreeindex16.js b/public/navtreeindex16.js
index 6fab0afa9..7fd30fb8c 100644
--- a/public/navtreeindex16.js
+++ b/public/navtreeindex16.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX16 =
{
+"structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719":[60,0,87,1],
"structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6":[60,0,87,14],
"structmpchanger__params.html#a5c5b14d537a1b0685027d50d2a4cf9be":[60,0,87,11],
"structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742":[60,0,87,24],
@@ -248,6 +249,5 @@ var NAVTREEINDEX16 =
"structrf__context.html#ad06c1d1a2295fbdf455df0250dfb2523":[60,0,113,9],
"structrf__context.html#ad4ea260ce64d09deea422b9067ee70b4":[60,0,113,25],
"structrf__context.html#ada1ddaadc15cc017185d7114cbea4d56":[60,0,113,26],
-"structrf__context.html#adeee1ea1db2e19b99e4deb80b8a6a960":[60,0,113,23],
-"structrf__context.html#adf05df0bd656d71f2a95c39ea96b7c6e":[60,0,113,43]
+"structrf__context.html#adeee1ea1db2e19b99e4deb80b8a6a960":[60,0,113,23]
};
diff --git a/public/navtreeindex17.js b/public/navtreeindex17.js
index 1e66fe3fb..835538d99 100644
--- a/public/navtreeindex17.js
+++ b/public/navtreeindex17.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX17 =
{
+"structrf__context.html#adf05df0bd656d71f2a95c39ea96b7c6e":[60,0,113,43],
"structrf__context.html#ae6190d1c82045bcd08e22ff6e98148a3":[60,0,113,48],
"structrf__context.html#ae62cc5547984bf11865f93c7d63afdf0":[60,0,113,47],
"structrf__context.html#aedf6fcd090e6ba788956565ce312ab70":[60,0,113,37],
@@ -248,6 +249,5 @@ var NAVTREEINDEX17 =
"www__plugin_8c.html#ae6ccaf3df9ea3201521eb62dd9943b00":[61,0,169,11],
"www__plugin_8c.html#ae8ced85169ca68aae1ed7f14b488e5b8":[61,0,169,25],
"www__plugin_8c.html#ae91c9382d5bb29416eab7de18c6d6b8d":[61,0,169,13],
-"www__plugin_8c.html#ae9973fcef32044b1238648c4695c3f23":[61,0,169,14],
-"www__plugin_8c.html#af1e5c3cccf8fcfb51c4518462b9b61ea":[61,0,169,3]
+"www__plugin_8c.html#ae9973fcef32044b1238648c4695c3f23":[61,0,169,14]
};
diff --git a/public/navtreeindex18.js b/public/navtreeindex18.js
index 5d13a9f1c..c91a2cd3d 100644
--- a/public/navtreeindex18.js
+++ b/public/navtreeindex18.js
@@ -1,5 +1,6 @@
var NAVTREEINDEX18 =
{
+"www__plugin_8c.html#af1e5c3cccf8fcfb51c4518462b9b61ea":[61,0,169,3],
"www__plugin_8c.html#af4c8fa778acc2d2f7dd9418e48c99f19":[61,0,169,8],
"www__plugin_8c_source.html":[61,0,169],
"www__plugin_8h.html":[61,0,170],
diff --git a/public/plugin_8h_source.html b/public/plugin_8h_source.html
index 3e32427b8..a935ab948 100644
--- a/public/plugin_8h_source.html
+++ b/public/plugin_8h_source.html
@@ -136,7 +136,7 @@ $(document).ready(function(){initNavTree('plugin_8h_source.html','');});
<div class="ttc" id="struct___remmina_entry_plugin_html_a44723a4f75f1a2ac3e029212fe0e8533"><div class="ttname"><a href="struct___remmina_entry_plugin.html#a44723a4f75f1a2ac3e029212fe0e8533">_RemminaEntryPlugin::domain</a></div><div class="ttdeci">const gchar * domain</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00094">plugin.h:94</a></div></div>
<div class="ttc" id="struct___remmina_pref_plugin_html_a4a036be229f8b3797c3e0ad4913c7cdf"><div class="ttname"><a href="struct___remmina_pref_plugin.html#a4a036be229f8b3797c3e0ad4913c7cdf">_RemminaPrefPlugin::domain</a></div><div class="ttdeci">const gchar * domain</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00128">plugin.h:128</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a19da9a0d0eac2a2b7fcc926dee2eb368"><div class="ttname"><a href="remmina__log_8c.html#a19da9a0d0eac2a2b7fcc926dee2eb368">_remmina_audit</a></div><div class="ttdeci">void _remmina_audit(const gchar *fun, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00312">remmina_log.c:312</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01408">remmina_protocol_widget.c:1408</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01413">remmina_protocol_widget.c:1413</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a1de86485b3c4db138b0fcd264884483f"><div class="ttname"><a href="struct___remmina_file_plugin.html#a1de86485b3c4db138b0fcd264884483f">_RemminaFilePlugin::domain</a></div><div class="ttdeci">const gchar * domain</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00104">plugin.h:104</a></div></div>
<div class="ttc" id="struct___remmina_language_wrapper_plugin_html_ade9917bdf8e926b342900280b984fded"><div class="ttname"><a href="struct___remmina_language_wrapper_plugin.html#ade9917bdf8e926b342900280b984fded">_RemminaLanguageWrapperPlugin::type</a></div><div class="ttdeci">RemminaPluginType type</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00151">plugin.h:151</a></div></div>
<div class="ttc" id="struct___remmina_entry_plugin_html_a4c4f13e65c7b64ba2d8bc019fd00e6a1"><div class="ttname"><a href="struct___remmina_entry_plugin.html#a4c4f13e65c7b64ba2d8bc019fd00e6a1">_RemminaEntryPlugin::name</a></div><div class="ttdeci">const gchar * name</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00092">plugin.h:92</a></div></div>
diff --git a/public/rcw_8c_source.html b/public/rcw_8c_source.html
index af363a6c1..41923c19a 100644
--- a/public/rcw_8c_source.html
+++ b/public/rcw_8c_source.html
@@ -87,10 +87,10 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
</div><!--header-->
<div class="contents">
<a href="rcw_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;cairo/cairo-xlib.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;cairo/cairo.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;gdk/gdk.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkkeysyms.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina_8h.html">remmina.h</a>&quot;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__main_8h.html">remmina_main.h</a>&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__applet__menu__item_8h.html">remmina_applet_menu_item.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__applet__menu_8h.html">remmina_applet_menu.h</a>&quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__message__panel_8h.html">remmina_message_panel.h</a>&quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a>&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__scrolled__viewport_8h.html">remmina_scrolled_viewport.h</a>&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__unlock_8h.html">remmina_unlock.h</a>&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__utils_8h.html">remmina_utils.h</a>&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>&quot;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#define DEBUG_KB_GRABBING 0</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__exec_8h.html">remmina_exec.h</a>&quot;</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#af657fd4825d16d8d003a8b42fbd0c715"> 78</a></span>&#160;gchar *<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a29701ae152ba15f6d8921f395174d2df"> 79</a></span>&#160;<a class="code" href="struct___remmina_pref.html">RemminaPref</a> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="rcw_8c.html#a21e0a6e416667f30c2b1599b8b24faec"> 81</a></span>&#160;<a class="code" href="rcw_8c.html#a21e0a6e416667f30c2b1599b8b24faec">G_DEFINE_TYPE</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a>, rcw, GTK_TYPE_WINDOW)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#define MOTION_TIME 100</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">/* default timeout used to hide the floating toolbar when switching profile */</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor">#define TB_HIDE_TIME_TIME 1500</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor">#define FULL_SCREEN_TARGET_MONITOR_UNDEFINED -1</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">struct </span>_RemminaConnectionWindowPriv {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; GtkNotebook * notebook;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; GtkWidget * floating_toolbar_widget;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; GtkWidget * overlay;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; GtkWidget * revealer;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; GtkWidget * overlay_ftb_overlay;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; GtkWidget * floating_toolbar_label;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; gdouble floating_toolbar_opacity;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">/* Various delayed and timer event source ids */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; guint acs_eventsourceid; <span class="comment">// timeout</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; guint spf_eventsourceid; <span class="comment">// idle</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; guint grab_retry_eventsourceid; <span class="comment">// timeout</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; guint delayed_grab_eventsourceid;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; guint ftb_hide_eventsource; <span class="comment">// timeout</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; guint tar_eventsource; <span class="comment">// timeout</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; guint hidetb_eventsource; <span class="comment">// timeout</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; guint dwp_eventsourceid; <span class="comment">// timeout</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; GtkWidget * toolbar;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; GtkWidget * grid;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">/* Toolitems that need to be handled */</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; GtkToolItem * toolitem_menu;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; GtkToolItem * toolitem_autofit;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; GtkToolItem * toolitem_fullscreen;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; GtkToolItem * toolitem_switch_page;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; GtkToolItem * toolitem_dynres;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; GtkToolItem * toolitem_scale;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; GtkToolItem * toolitem_grab;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; GtkToolItem * toolitem_multimon;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; GtkToolItem * toolitem_preferences;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; GtkToolItem * toolitem_tools;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; GtkToolItem * toolitem_new;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; GtkToolItem * toolitem_duplicate;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; GtkToolItem * toolitem_screenshot;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; GtkWidget * fullscreen_option_button;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; GtkWidget * fullscreen_scaler_button;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; GtkWidget * scaler_option_button;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; GtkWidget * pin_button;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; gboolean pin_down;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; gboolean sticky;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">/* Flag to turn off toolbar signal handling when toolbar is</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> * reconfiguring, usually due to a tab switch */</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; gboolean toolbar_is_reconfiguring;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">/* This is the current view mode, i.e. VIEWPORT_FULLSCREEN_MODE,</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * as saved on the &quot;viwemode&quot; profile preference file */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; gint view_mode;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">/* Status variables used when in fullscreen mode. Needed</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> * to restore a fullscreen mode after coming from scrolled */</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; gint fss_view_mode;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">/* Status variables used when in scrolled window mode. Needed</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> * to restore a scrolled window mode after coming from fullscreen */</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; gint ss_width, ss_height;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; gboolean ss_maximized;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; gboolean kbcaptured;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; gboolean pointer_captured;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; gboolean hostkey_activated;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; gboolean hostkey_used;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; gboolean pointer_entered;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="rcw_8h.html#a2450dfe27d3ded59370ea879419f307f">RemminaConnectionWindowOnDeleteConfirmMode</a> on_delete_confirm_mode;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;};</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html"> 162</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_connection_object.html">_RemminaConnectionObject</a> {</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328"> 163</a></span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> * <a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c"> 164</a></span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * <a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995"> 166</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae"> 167</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d"> 168</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30"> 170</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#a1f3920f6710917d6944491ae1d7b1250"> 172</a></span>&#160; gboolean <a class="code" href="struct___remmina_connection_object.html#a1f3920f6710917d6944491ae1d7b1250">plugin_can_scale</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d"> 174</a></span>&#160; gboolean <a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#a71136a01b1cc4d14e0047b32ec4d8a4a"> 175</a></span>&#160; gboolean <a class="code" href="struct___remmina_connection_object.html#a71136a01b1cc4d14e0047b32ec4d8a4a">dynres_unlocked</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="struct___remmina_connection_object.html#a09f89d6c0e4e52905aba1dd093e5c7f2"> 177</a></span>&#160; gulong <a class="code" href="struct___remmina_connection_object.html#a09f89d6c0e4e52905aba1dd093e5c7f2">deferred_open_size_allocate_handler</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;} <a class="code" href="rcw_8c.html#a1cc1f656edfbe0d9c5483ac858b76517">RemminaConnectionObject</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7aa9941863b5633ddecb019f793f2f7668"> 181</a></span>&#160; <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7aa9941863b5633ddecb019f793f2f7668">TOOLBARPLACE_SIGNAL</a>,</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce"> 182</a></span>&#160; <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;};</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="rcw_8c.html#a2ea4e41deacf11e9b9b71e7eac06869e"> 185</a></span>&#160;<span class="keyword">static</span> guint <a class="code" href="rcw_8c.html#a2ea4e41deacf11e9b9b71e7eac06869e">rcw_signals</a>[<a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a>] =</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;{ 0 };</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *<a class="code" href="rcw_8c.html#a95c64795004c7778c56068abeb1a6bd0">rcw_create_scrolled</a>(gint width, gint height, gboolean maximize);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *<a class="code" href="rcw_8c.html#a11bb04a25b6c8a79af3cb34f22e28dd8">rcw_create_fullscreen</a>(GtkWindow *old, gint view_mode);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#acb1b2ab629603837e08f8d8de542316d">rcw_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, guint keyval, gboolean release);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#a1c40706e7ac542d396d2db99ba944dc6">rco_create_tab_page</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#a3928a83b083a55e3af1ed81da49b25eb">rco_create_tab_label</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a7189a0f1289a24fc5cc9fdfaf37244f3">rcw_grab_focus</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#a2caca4bce3a8ec22a99ede169746af86">rcw_create_toolbar</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, gint mode);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#afc62938ff8bcaad6b743f50ecf36d292">rcw_place_toolbar</a>(GtkToolbar *toolbar, GtkGrid *grid, GtkWidget *sibling, <span class="keywordtype">int</span> toolbar_placement);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a362cc1f55ba8365460c2ebfc0528e01c">rcw_keyboard_grab</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#ad5a67ac52028302d5681cceaf9ac46bc">rcw_append_new_page</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a73532ae8f8fa05711035bc3d4c82ac2a">rcw_ftb_drag_begin</a>(GtkWidget *widget, GdkDragContext *context, gpointer user_data);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="rcw_8c.html#a6515e726b5d3e4c0a9aefc3cf20f3d90"> 203</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> GtkTargetEntry <a class="code" href="rcw_8c.html#a6515e726b5d3e4c0a9aefc3cf20f3d90">dnd_targets_ftb</a>[] =</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; (<span class="keywordtype">char</span> *)<span class="stringliteral">&quot;text/x-remmina-ftb&quot;</span>,</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; GTK_TARGET_SAME_APP | GTK_TARGET_OTHER_WIDGET,</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; 0</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; },</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;};</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="rcw_8c.html#a7e71031254421ccb10e0c29699cc9523"> 212</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> GtkTargetEntry <a class="code" href="rcw_8c.html#a7e71031254421ccb10e0c29699cc9523">dnd_targets_tb</a>[] =</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;{</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; (<span class="keywordtype">char</span> *)<span class="stringliteral">&quot;text/x-remmina-tb&quot;</span>,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; GTK_TARGET_SAME_APP,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; 0</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; },</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;};</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="rcw_8c.html#a36b924d7fb7ccb1418912ea4c47620a4"> 221</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a36b924d7fb7ccb1418912ea4c47620a4">rcw_class_init</a>(<a class="code" href="struct___remmina_connection_window_class.html">RemminaConnectionWindowClass</a> *klass)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; GtkCssProvider *provider;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; provider = gtk_css_provider_new();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">/* It’s important to remove padding, border and shadow from GtkViewport or</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> * we will never know its internal area size, because GtkViweport::viewport_get_view_allocation,</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> * which returns the internal size of the GtkViewport, is private and we cannot access it */</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 14, 0)</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; gtk_css_provider_load_from_data(provider,</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="stringliteral">&quot;#remmina-cw-viewport, #remmina-cw-aspectframe {\n&quot;</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="stringliteral">&quot; padding:0;\n&quot;</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="stringliteral">&quot; border:0;\n&quot;</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="stringliteral">&quot; background-color: black;\n&quot;</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="stringliteral">&quot;GtkDrawingArea {\n&quot;</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="stringliteral">&quot;GtkToolbar {\n&quot;</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="stringliteral">&quot; -GtkWidget-window-dragging: 0;\n&quot;</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="stringliteral">&quot;#remmina-connection-window-fullscreen {\n&quot;</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="stringliteral">&quot; border-color: black;\n&quot;</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="stringliteral">&quot;#remmina-small-button {\n&quot;</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="stringliteral">&quot; outline-offset: 0;\n&quot;</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="stringliteral">&quot; outline-width: 0;\n&quot;</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="stringliteral">&quot; padding: 0;\n&quot;</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="stringliteral">&quot; border: 0;\n&quot;</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="stringliteral">&quot;#remmina-pin-button {\n&quot;</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="stringliteral">&quot; outline-offset: 0;\n&quot;</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="stringliteral">&quot; outline-width: 0;\n&quot;</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="stringliteral">&quot; padding: 2px;\n&quot;</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="stringliteral">&quot; border: 0;\n&quot;</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="stringliteral">&quot;#remmina-tab-page {\n&quot;</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="stringliteral">&quot; background-color: black;\n&quot;</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="stringliteral">&quot;#remmina-scrolled-container {\n&quot;</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="stringliteral">&quot;#remmina-scrolled-container.undershoot {\n&quot;</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="stringliteral">&quot; background: none;\n&quot;</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="stringliteral">&quot;#remmina-tab-page {\n&quot;</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="stringliteral">&quot;#ftbbox-upper {\n&quot;</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="stringliteral">&quot; background-color: white;\n&quot;</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="stringliteral">&quot; color: black;\n&quot;</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="stringliteral">&quot; border-style: none solid solid solid;\n&quot;</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="stringliteral">&quot; border-width: 1px;\n&quot;</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="stringliteral">&quot; border-radius: 4px;\n&quot;</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="stringliteral">&quot; padding: 0px;\n&quot;</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="stringliteral">&quot;#ftbbox-lower {\n&quot;</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="stringliteral">&quot; background-color: white;\n&quot;</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="stringliteral">&quot; color: black;\n&quot;</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="stringliteral">&quot; border-style: solid solid none solid;\n&quot;</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="stringliteral">&quot; border-width: 1px;\n&quot;</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="stringliteral">&quot; border-radius: 4px;\n&quot;</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="stringliteral">&quot; padding: 0px;\n&quot;</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="stringliteral">&quot;#ftb-handle {\n&quot;</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="stringliteral">&quot;.message_panel {\n&quot;</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="stringliteral">&quot; border: 0px solid;\n&quot;</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="stringliteral">&quot; padding: 20px 20px 20px 20px;\n&quot;</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="stringliteral">&quot;.message_panel entry {\n&quot;</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="stringliteral">&quot; background-image: none;\n&quot;</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="stringliteral">&quot; border-width: 4px;\n&quot;</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="stringliteral">&quot; border-radius: 8px;\n&quot;</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="stringliteral">&quot;.message_panel .title_label {\n&quot;</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="stringliteral">&quot; font-size: 2em; \n&quot;</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; , -1, NULL);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; gtk_css_provider_load_from_data(provider,</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="stringliteral">&quot;#remmina-cw-viewport, #remmina-cw-aspectframe {\n&quot;</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="stringliteral">&quot; padding:0;\n&quot;</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="stringliteral">&quot; border:0;\n&quot;</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="stringliteral">&quot; background-color: black;\n&quot;</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="stringliteral">&quot;#remmina-cw-message-panel {\n&quot;</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="stringliteral">&quot;GtkDrawingArea {\n&quot;</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="stringliteral">&quot;GtkToolbar {\n&quot;</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="stringliteral">&quot; -GtkWidget-window-dragging: 0;\n&quot;</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="stringliteral">&quot;#remmina-connection-window-fullscreen {\n&quot;</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="stringliteral">&quot; border-color: black;\n&quot;</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="stringliteral">&quot;#remmina-small-button {\n&quot;</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="stringliteral">&quot; -GtkWidget-focus-padding: 0;\n&quot;</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="stringliteral">&quot; -GtkWidget-focus-line-width: 0;\n&quot;</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="stringliteral">&quot; padding: 0;\n&quot;</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="stringliteral">&quot; border: 0;\n&quot;</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="stringliteral">&quot;#remmina-pin-button {\n&quot;</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="stringliteral">&quot; -GtkWidget-focus-padding: 0;\n&quot;</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="stringliteral">&quot; -GtkWidget-focus-line-width: 0;\n&quot;</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="stringliteral">&quot; padding: 2px;\n&quot;</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="stringliteral">&quot; border: 0;\n&quot;</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="stringliteral">&quot;#remmina-scrolled-container {\n&quot;</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="stringliteral">&quot;#remmina-scrolled-container.undershoot {\n&quot;</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="stringliteral">&quot; background: none\n&quot;</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="stringliteral">&quot;#remmina-tab-page {\n&quot;</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="stringliteral">&quot;#ftbbox-upper {\n&quot;</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="stringliteral">&quot; border-style: none solid solid solid;\n&quot;</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="stringliteral">&quot; border-width: 1px;\n&quot;</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="stringliteral">&quot; border-radius: 4px;\n&quot;</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="stringliteral">&quot; padding: 0px;\n&quot;</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="stringliteral">&quot;#ftbbox-lower {\n&quot;</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="stringliteral">&quot; border-style: solid solid none solid;\n&quot;</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="stringliteral">&quot; border-width: 1px;\n&quot;</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="stringliteral">&quot; border-radius: 4px;\n&quot;</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="stringliteral">&quot; padding: 0px;\n&quot;</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="stringliteral">&quot;#ftb-handle {\n&quot;</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="stringliteral">&quot;}\n&quot;</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; , -1, NULL);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; GTK_STYLE_PROVIDER(provider),</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; g_object_unref(provider);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">/* Define a signal used to notify all rcws of toolbar move */</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; rcw_signals[<a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7aa9941863b5633ddecb019f793f2f7668">TOOLBARPLACE_SIGNAL</a>] = g_signal_new(<span class="stringliteral">&quot;toolbar-place&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_connection_window_class.html">RemminaConnectionWindowClass</a>, toolbar_place), NULL, NULL,</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;}</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="rcw_8c.html#aaad3184fedef1eccd1f92d8ef43cca44"> 367</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="rcw_8c.html#aaad3184fedef1eccd1f92d8ef43cca44">rcw_get_cnnobj_at_page</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, gint npage)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;{</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; GtkWidget *po;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (!cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; po = gtk_notebook_get_nth_page(GTK_NOTEBOOK(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook), npage);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> g_object_get_data(G_OBJECT(po), <span class="stringliteral">&quot;cnnobj&quot;</span>);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;}</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47"> 377</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;{</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; gint np;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span> (cnnwin != NULL &amp;&amp; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a> != NULL &amp;&amp; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook != NULL) {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; np = gtk_notebook_get_current_page(GTK_NOTEBOOK(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (np &lt; 0)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#aaad3184fedef1eccd1f92d8ef43cca44">rcw_get_cnnobj_at_page</a>(cnnwin, np);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2"> 391</a></span>&#160;<span class="keyword">static</span> <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, gboolean *dynres_avail, gboolean *scale_avail)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; gboolean plugin_has_dynres, plugin_can_scale;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; scalemode = <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; plugin_has_dynres = <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a23e854b5f2eb0c8d3efa54cac0acb6cf">REMMINA_PROTOCOL_FEATURE_TYPE_DYNRESUPDATE</a>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; plugin_can_scale = <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f">REMMINA_PROTOCOL_FEATURE_TYPE_SCALE</a>);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="comment">/* Forbid scalemode REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES when not possible */</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> ((!plugin_has_dynres) &amp;&amp; scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; scalemode = <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="comment">/* Forbid scalemode REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED when not possible */</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> (!plugin_can_scale &amp;&amp; scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>)</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; scalemode = <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (scale_avail)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; *scale_avail = plugin_can_scale;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (dynres_avail)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; *dynres_avail = (plugin_has_dynres &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a71136a01b1cc4d14e0047b32ec4d8a4a">dynres_unlocked</a>);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">return</span> scalemode;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;}</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="rcw_8c.html#a2690c97a972e458dea9f5c0566ea50b9"> 421</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a2690c97a972e458dea9f5c0566ea50b9">rco_disconnect_current_page</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="comment">/* Disconnects the connection which is currently in view in the notebook */</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;}</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946"> 429</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;{</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; GdkDisplay *display;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; GdkSeat *seat;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; GdkDeviceManager *manager;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; GdkDevice *keyboard = NULL;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid) {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; g_source_remove(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid = 0;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid) {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; g_source_remove(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid = 0;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; display = gtk_widget_get_display(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; seat = gdk_display_get_default_seat(display);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">// keyboard = gdk_seat_get_pointer(seat);</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; manager = gdk_display_get_device_manager(display);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; keyboard = gdk_device_manager_get_client_pointer(manager);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (!cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;kbcaptured &amp;&amp; !cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_captured)</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: --- ungrabbing\n&quot;</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="comment">/* We can use gtk_seat_grab()/_ungrab() only after GTK 3.24 */</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; gdk_seat_ungrab(seat);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (keyboard != NULL) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">if</span> (gdk_device_get_source(keyboard) != GDK_SOURCE_KEYBOARD)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; keyboard = gdk_device_get_associated_device(keyboard);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; G_GNUC_BEGIN_IGNORE_DEPRECATIONS</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; gdk_device_ungrab(keyboard, GDK_CURRENT_TIME);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; G_GNUC_END_IGNORE_DEPRECATIONS</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;kbcaptured = FALSE;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_captured = FALSE;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;}</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"><a class="line" href="rcw_8c.html#a71284e0ce3acb9fce6d4ecf6fea1a3f5"> 484</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a71284e0ce3acb9fce6d4ecf6fea1a3f5">rcw_keyboard_grab_retry</a>(gpointer user_data)</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;{</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)user_data;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; printf(<span class="stringliteral">&quot;%s retry grab\n&quot;</span>, __func__);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="rcw_8c.html#a362cc1f55ba8365460c2ebfc0528e01c">rcw_keyboard_grab</a>(cnnwin);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid = 0;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="rcw_8c.html#a177a2ece80374b29bc26595fff8bed42"> 497</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a177a2ece80374b29bc26595fff8bed42">rcw_pointer_ungrab</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;{</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; GdkSeat *seat;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; GdkDisplay *display;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span> (!cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_captured)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; display = gtk_widget_get_display(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; seat = gdk_display_get_default_seat(display);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; gdk_seat_ungrab(seat);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;}</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="rcw_8c.html#ac3e012d5e499aebb8fcbef55f505f2f3"> 512</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ac3e012d5e499aebb8fcbef55f505f2f3">rcw_pointer_grab</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;{</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">/* This function in Wayland is useless and generates a spurious leave-notify event.</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment"> * Should we remove it ? https://gitlab.gnome.org/GNOME/mutter/-/issues/2450#note_1588081 */</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; GdkSeat *seat;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; GdkDisplay *display;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; GdkGrabStatus ggs;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_captured) {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: pointer_captured is true, it should not\n&quot;</span>);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; display = gtk_widget_get_display(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; seat = gdk_display_get_default_seat(display);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; ggs = gdk_seat_grab(seat, gtk_widget_get_window(GTK_WIDGET(cnnwin)),</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; GDK_SEAT_CAPABILITY_ALL_POINTING, TRUE, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (ggs != GDK_GRAB_SUCCESS) {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: GRAB of POINTER failed. GdkGrabStatus: %d\n&quot;</span>, (<span class="keywordtype">int</span>)ggs);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_captured = TRUE;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;}</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno"><a class="line" href="rcw_8c.html#a362cc1f55ba8365460c2ebfc0528e01c"> 545</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a362cc1f55ba8365460c2ebfc0528e01c">rcw_keyboard_grab</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;{</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; GdkDisplay *display;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; GdkSeat *seat;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; GdkDeviceManager *manager;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; GdkGrabStatus ggs;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; GdkDevice *keyboard = NULL;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;kbcaptured) {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: %s not grabbing because already grabbed.\n&quot;</span>, __func__);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; display = gtk_widget_get_display(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; seat = gdk_display_get_default_seat(display);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; keyboard = gdk_seat_get_pointer(seat);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; manager = gdk_display_get_device_manager(display);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; keyboard = gdk_device_manager_get_client_pointer(manager);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">if</span> (keyboard != NULL) {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">if</span> (gdk_device_get_source(keyboard) != GDK_SOURCE_KEYBOARD)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; keyboard = gdk_device_get_associated_device(keyboard);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: profile asks for grabbing, let’s try.\n&quot;</span>);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">/* Up to GTK version 3.20 we can grab the keyboard with gdk_device_grab().</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="comment"> * in GTK 3.20 gdk_seat_grab() should be used instead of gdk_device_grab().</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="comment"> * There is a bug in GTK up to 3.22: When gdk_device_grab() fails</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="comment"> * the widget is hidden:</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment"> * https://gitlab.gnome.org/GNOME/gtk/commit/726ad5a5ae7c4f167e8dd454cd7c250821c400ab</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment"> * The bugfix will be released with GTK 3.24.</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="comment"> * Also please note that the newer gdk_seat_grab() is still calling gdk_device_grab().</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"> * Warning: gdk_seat_grab() will call XGrabKeyboard() or XIGrabDevice()</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"> * which in turn will generate a core X input event FocusOut and FocusIn</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment"> * but not Xinput2 events.</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"> * In some cases, GTK is unable to neutralize FocusIn and FocusOut core</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"> * events (ie: i3wm+Plasma with GDK_CORE_DEVICE_EVENTS=1 because detail=NotifyNonlinear</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"> * instead of detail=NotifyAncestor/detail=NotifyInferior)</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment"> * Receiving a FocusOut event for Remmina at this time will cause an infinite loop.</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="comment"> * Therefore is important for GTK to use Xinput2 instead of core X events</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment"> * by unsetting GDK_CORE_DEVICE_EVENTS</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; ggs = gdk_seat_grab(seat, gtk_widget_get_window(GTK_WIDGET(cnnwin)),</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; GDK_SEAT_CAPABILITY_KEYBOARD, TRUE, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; ggs = gdk_device_grab(keyboard, gtk_widget_get_window(GTK_WIDGET(cnnwin)), GDK_OWNERSHIP_WINDOW,</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; TRUE, GDK_KEY_PRESS | GDK_KEY_RELEASE, NULL, GDK_CURRENT_TIME);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span> (ggs != GDK_GRAB_SUCCESS) {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; printf(<span class="stringliteral">&quot;GRAB of keyboard failed.\n&quot;</span>);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">/* Reschedule grabbing in half a second if not already done */</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid == 0)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid = g_timeout_add(500, (GSourceFunc)<a class="code" href="rcw_8c.html#a71284e0ce3acb9fce6d4ecf6fea1a3f5">rcw_keyboard_grab_retry</a>, cnnwin);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; printf(<span class="stringliteral">&quot;Keyboard grabbed\n&quot;</span>);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid != 0) {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; g_source_remove(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grab_retry_eventsourceid = 0;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;kbcaptured = TRUE;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(cnnwin);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;}</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"><a class="line" href="rcw_8c.html#a6bd6b600564be75e95870a0375c0a4d3"> 629</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a6bd6b600564be75e95870a0375c0a4d3">rcw_close_all_connections</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;{</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; GtkNotebook *notebook = GTK_NOTEBOOK(priv-&gt;notebook);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; GtkWidget *w;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; gint i, n;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">if</span> (GTK_IS_WIDGET(notebook)) {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; n = gtk_notebook_get_n_pages(notebook);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">for</span> (i = n - 1; i &gt;= 0; i--) {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; w = gtk_notebook_get_nth_page(notebook, i);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; cnnobj = (<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *)g_object_get_data(G_OBJECT(w), <span class="stringliteral">&quot;cnnobj&quot;</span>);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">/* Do close the connection on this tab */</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="rcw_8h.html#adae469553aa0647d0df5d88b180e7cd7"> 648</a></span>&#160;gboolean <a class="code" href="rcw_8c.html#adae469553aa0647d0df5d88b180e7cd7">rcw_delete</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;{</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; GtkNotebook *notebook = GTK_NOTEBOOK(priv-&gt;notebook);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; gint i, n, nopen;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span> (!REMMINA_IS_CONNECTION_WINDOW(cnnwin))</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;on_delete_confirm_mode != <a class="code" href="rcw_8h.html#a2450dfe27d3ded59370ea879419f307fadd57127d30bc4755bf3a8323045922bc">RCW_ONDELETE_NOCONFIRM</a>) {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; n = gtk_notebook_get_n_pages(notebook);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; nopen = 0;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">/* count all non-closed connections */</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; n; i ++) {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = <a class="code" href="rcw_8c.html#aaad3184fedef1eccd1f92d8ef43cca44">rcw_get_cnnobj_at_page</a>(cnnwin, i);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>))</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; nopen ++;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">if</span> (nopen &gt; 1) {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; dialog = gtk_message_dialog_new(GTK_WINDOW(cnnwin), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; GTK_BUTTONS_YES_NO,</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; _(<span class="stringliteral">&quot;Are you sure you want to close %i active connections in the current window?&quot;</span>), nopen);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; i = gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">if</span> (i != GTK_RESPONSE_YES)</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nopen == 1) {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a>) {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; dialog = gtk_message_dialog_new(GTK_WINDOW(cnnwin), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; GTK_BUTTONS_YES_NO,</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; _(<span class="stringliteral">&quot;Are you sure you want to close this last active connection?&quot;</span>));</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; i = gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">if</span> (i != GTK_RESPONSE_YES)</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <a class="code" href="rcw_8c.html#a6bd6b600564be75e95870a0375c0a4d3">rcw_close_all_connections</a>(cnnwin);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="rcw_8c.html#a07802fc420dc07560fe937d29172573c"> 694</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a07802fc420dc07560fe937d29172573c">rcw_delete_event</a>(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;{</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <a class="code" href="rcw_8c.html#adae469553aa0647d0df5d88b180e7cd7">rcw_delete</a>(RCW(widget));</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;}</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="rcw_8c.html#aa7de86386944c333dc9f4bf87f819f9c"> 701</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#aa7de86386944c333dc9f4bf87f819f9c">rcw_destroy</a>(GtkWidget *widget, gpointer data)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;{</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span> (!REMMINA_IS_CONNECTION_WINDOW(widget))</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (priv-&gt;kbcaptured)</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(cnnwin);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (priv-&gt;acs_eventsourceid) {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; g_source_remove(priv-&gt;acs_eventsourceid);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; priv-&gt;acs_eventsourceid = 0;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (priv-&gt;spf_eventsourceid) {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; g_source_remove(priv-&gt;spf_eventsourceid);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; priv-&gt;spf_eventsourceid = 0;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; }</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">if</span> (priv-&gt;grab_retry_eventsourceid) {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; g_source_remove(priv-&gt;grab_retry_eventsourceid);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; priv-&gt;grab_retry_eventsourceid = 0;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid) {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; g_source_remove(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid = 0;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">if</span> (priv-&gt;ftb_hide_eventsource) {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; g_source_remove(priv-&gt;ftb_hide_eventsource);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; priv-&gt;ftb_hide_eventsource = 0;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span> (priv-&gt;tar_eventsource) {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; g_source_remove(priv-&gt;tar_eventsource);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; priv-&gt;tar_eventsource = 0;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> (priv-&gt;hidetb_eventsource) {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; g_source_remove(priv-&gt;hidetb_eventsource);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; priv-&gt;hidetb_eventsource = 0;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">if</span> (priv-&gt;dwp_eventsourceid) {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; g_source_remove(priv-&gt;dwp_eventsourceid);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; priv-&gt;dwp_eventsourceid = 0;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="comment">/* There is no need to destroy priv-&gt;floating_toolbar_widget,</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="comment"> * because it’s our child and will be destroyed automatically */</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a> = NULL;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; g_free(priv);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;}</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="rcw_8c.html#a60f9f738cfd988cfc7cc39997538e4e0"> 756</a></span>&#160;gboolean <a class="code" href="rcw_8c.html#a60f9f738cfd988cfc7cc39997538e4e0">rcw_notify_widget_toolbar_placement</a>(GtkWidget *widget, gpointer data)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;{</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; GType rcwtype;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; rcwtype = <a class="code" href="rcw_8h.html#a2e3ebdd3e3450d651445ab54a7113f8b">rcw_get_type</a>();</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">if</span> (G_TYPE_CHECK_INSTANCE_TYPE(widget, rcwtype)) {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;toolbar-place&quot;</span>);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="rcw_8c.html#a14a8e53afac8e750b7839d74dc50c758"> 769</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a14a8e53afac8e750b7839d74dc50c758">rcw_tb_drag_failed</a>(GtkWidget *widget, GdkDragContext *context,</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; GtkDragResult result, gpointer user_data)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;{</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)user_data;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; gtk_widget_show(GTK_WIDGET(priv-&gt;toolbar));</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;}</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="rcw_8c.html#a70d89903e3279a1650dc0684f26ed9c2"> 786</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a70d89903e3279a1650dc0684f26ed9c2">rcw_tb_drag_drop</a>(GtkWidget *widget, GdkDragContext *context,</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; gint x, gint y, guint time, gpointer user_data)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;{</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; GtkAllocation wa;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; gint new_toolbar_placement;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)user_data;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; gtk_widget_get_allocation(widget, &amp;wa);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">if</span> (wa.width * y &gt;= wa.height * x) {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">if</span> (wa.width * y &gt; wa.height * (wa.width - x))</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; new_toolbar_placement = <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076">TOOLBAR_PLACEMENT_BOTTOM</a>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; new_toolbar_placement = <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a>;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">if</span> (wa.width * y &gt; wa.height * (wa.width - x))</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; new_toolbar_placement = <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27">TOOLBAR_PLACEMENT_RIGHT</a>;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; new_toolbar_placement = <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f">TOOLBAR_PLACEMENT_TOP</a>;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; gtk_drag_finish(context, TRUE, TRUE, time);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">if</span> (new_toolbar_placement != remmina_pref.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a>) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="comment">/* Save new position */</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a> = new_toolbar_placement;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="comment">/* Signal all windows that the toolbar must be moved */</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool_foreach</a>(<a class="code" href="rcw_8c.html#a60f9f738cfd988cfc7cc39997538e4e0">rcw_notify_widget_toolbar_placement</a>, NULL);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar)</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; gtk_widget_show(GTK_WIDGET(priv-&gt;toolbar));</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;}</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="rcw_8c.html#a0ca9e87bf2fc3855699f80315d72314b"> 828</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a0ca9e87bf2fc3855699f80315d72314b">rcw_tb_drag_begin</a>(GtkWidget *widget, GdkDragContext *context, gpointer user_data)</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;{</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; cairo_surface_t *surface;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; cairo_t *cr;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; GtkAllocation wa;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordtype">double</span> dashes[] = { 10 };</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; gtk_widget_get_allocation(widget, &amp;wa);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 16, 16);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; cr = cairo_create(surface);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; cairo_set_source_rgb(cr, 0.6, 0.6, 0.6);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; cairo_set_line_width(cr, 4);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; cairo_set_dash(cr, dashes, 1, 0);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; cairo_rectangle(cr, 0, 0, 16, 16);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; cairo_stroke(cr);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; cairo_destroy(cr);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; gtk_widget_hide(widget);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; gtk_drag_set_icon_surface(context, surface);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;}</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;</div><div class="line"><a name="l00853"></a><span class="lineno"><a class="line" href="rcw_8c.html#a5929f8c1c1513c0fd75a88cd4721b8a4"> 853</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a5929f8c1c1513c0fd75a88cd4721b8a4">rcw_update_toolbar_opacity</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;{</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (!cnnobj) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; priv-&gt;floating_toolbar_opacity = (1.0 - TOOLBAR_OPACITY_MIN) / ((gdouble)TOOLBAR_OPACITY_LEVEL)</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; * ((gdouble)(TOOLBAR_OPACITY_LEVEL - <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;toolbar_opacity&quot;</span>, 0)))</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; + TOOLBAR_OPACITY_MIN;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">if</span> (priv-&gt;floating_toolbar_widget)</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; gtk_widget_set_opacity(GTK_WIDGET(priv-&gt;overlay_ftb_overlay), priv-&gt;floating_toolbar_opacity);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;}</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"><a class="line" href="rcw_8c.html#a544a61088b93ffc31a79554c70d97dff"> 869</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a544a61088b93ffc31a79554c70d97dff">rcw_floating_toolbar_make_invisible</a>(gpointer data)</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;{</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = (<a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *)data;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; gtk_widget_set_opacity(GTK_WIDGET(priv-&gt;overlay_ftb_overlay), 0.0);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; priv-&gt;ftb_hide_eventsource = 0;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;}</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7"> 879</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, gboolean show)</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;{</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">if</span> (priv-&gt;floating_toolbar_widget == NULL)</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">if</span> (show || priv-&gt;pin_down) {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="comment">/* Make the FTB no longer transparent, in case we have an hidden toolbar */</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <a class="code" href="rcw_8c.html#a5929f8c1c1513c0fd75a88cd4721b8a4">rcw_update_toolbar_opacity</a>(cnnwin);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="comment">/* Remove outstanding hide events, if not yet active */</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span> (priv-&gt;ftb_hide_eventsource) {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; g_source_remove(priv-&gt;ftb_hide_eventsource);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; priv-&gt;ftb_hide_eventsource = 0;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="comment">/* If we are hiding and the toolbar must be made invisible, schedule</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;<span class="comment"> * a later toolbar hide */</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> == <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc">FLOATING_TOOLBAR_VISIBILITY_INVISIBLE</a>)</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">if</span> (priv-&gt;ftb_hide_eventsource == 0)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; priv-&gt;ftb_hide_eventsource = g_timeout_add(1000, <a class="code" href="rcw_8c.html#a544a61088b93ffc31a79554c70d97dff">rcw_floating_toolbar_make_invisible</a>, priv);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; }</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; gtk_revealer_set_reveal_child(GTK_REVEALER(priv-&gt;revealer), show || priv-&gt;pin_down);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;}</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;</div><div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="rcw_8c.html#a8cb8bd7679116f409b29399a5d14c527"> 906</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a8cb8bd7679116f409b29399a5d14c527">rco_get_desktop_size</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, gint *width, gint *height)</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;{</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; *width = <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(gp);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; *height = <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(gp);</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">if</span> (*width == 0) {</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="comment">/* Before connecting we do not have real remote width/height,</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;<span class="comment"> * so we ask profile values */</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; *width = <a class="code" href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>(gp);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; *height = <a class="code" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>(gp);</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;}</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;</div><div class="line"><a name="l00922"></a><span class="lineno"><a class="line" href="rcw_8c.html#a2744b7be7cddc642ac79ed182c39b683"> 922</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a2744b7be7cddc642ac79ed182c39b683">rco_set_scrolled_policy</a>(<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode, GtkScrolledWindow *scrolled_window)</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;{</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; gtk_scrolled_window_set_policy(scrolled_window,</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a> ? GTK_POLICY_NEVER : GTK_POLICY_AUTOMATIC,</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a> ? GTK_POLICY_NEVER : GTK_POLICY_AUTOMATIC);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;}</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div><div class="line"><a name="l00931"></a><span class="lineno"><a class="line" href="rcw_8c.html#a36c08f198ab102d001d1221bdd8ea38c"> 931</a></span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#a36c08f198ab102d001d1221bdd8ea38c">rco_create_scrolled_container</a>(<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode, <span class="keywordtype">int</span> view_mode)</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;{</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; GtkWidget *scrolled_container;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">if</span> (view_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; scrolled_container = <a class="code" href="remmina__scrolled__viewport_8c.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport_new</a>();</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; scrolled_container = gtk_scrolled_window_new(NULL, NULL);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="rcw_8c.html#a2744b7be7cddc642ac79ed182c39b683">rco_set_scrolled_policy</a>(scalemode, GTK_SCROLLED_WINDOW(scrolled_container));</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; gtk_container_set_border_width(GTK_CONTAINER(scrolled_container), 0);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; gtk_widget_set_can_focus(scrolled_container, FALSE);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; gtk_widget_set_name(scrolled_container, <span class="stringliteral">&quot;remmina-scrolled-container&quot;</span>);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; gtk_widget_show(scrolled_container);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">return</span> scrolled_container;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;}</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno"><a class="line" href="rcw_8c.html#aa1044979d82ce73db51117de1262832f"> 950</a></span>&#160;gboolean <a class="code" href="rcw_8c.html#aa1044979d82ce73db51117de1262832f">rcw_toolbar_autofit_restore</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;{</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; gint dwidth, dheight;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; GtkAllocation nba, ca, ta;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;tar_eventsource = 0;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a> &amp;&amp; GTK_IS_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)) {</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <a class="code" href="rcw_8c.html#a8cb8bd7679116f409b29399a5d14c527">rco_get_desktop_size</a>(cnnobj, &amp;dwidth, &amp;dheight);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; gtk_widget_get_allocation(GTK_WIDGET(priv-&gt;notebook), &amp;nba);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; gtk_widget_get_allocation(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>, &amp;ca);</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; gtk_widget_get_allocation(priv-&gt;toolbar, &amp;ta);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a> == <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a> ||</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a> == <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27">TOOLBAR_PLACEMENT_RIGHT</a>)</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; gtk_window_resize(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), MAX(1, dwidth + ta.width + nba.width - ca.width),</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; MAX(1, dheight + nba.height - ca.height));</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; gtk_window_resize(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), MAX(1, dwidth + nba.width - ca.width),</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; MAX(1, dheight + ta.height + nba.height - ca.height));</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; gtk_container_check_resize(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>));</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; }</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">if</span> (GTK_IS_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)) {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode = <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(cnnobj, NULL, NULL);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <a class="code" href="rcw_8c.html#a2744b7be7cddc642ac79ed182c39b683">rco_set_scrolled_policy</a>(scalemode, GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>));</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; }</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;}</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;</div><div class="line"><a name="l00988"></a><span class="lineno"><a class="line" href="rcw_8c.html#adf4d204cce70b6609c15c1ca95082a43"> 988</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#adf4d204cce70b6609c15c1ca95082a43">rcw_toolbar_autofit</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;{</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (GTK_IS_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)) {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">if</span> ((gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(cnnwin))) &amp; GDK_WINDOW_STATE_MAXIMIZED) != 0)</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; gtk_window_unmaximize(GTK_WINDOW(cnnwin));</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="comment">/* It’s tricky to make the toolbars disappear automatically, while keeping scrollable.</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="comment"> * Please tell me if you know a better way to do this */</span></div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>), GTK_POLICY_NEVER, GTK_POLICY_NEVER);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;tar_eventsource = g_timeout_add(200, (GSourceFunc)<a class="code" href="rcw_8c.html#aa1044979d82ce73db51117de1262832f">rcw_toolbar_autofit_restore</a>, cnnwin);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;}</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"><a class="line" href="rcw_8h.html#aee06df544a91184cba1fe77c6991065a"> 1009</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, GdkRectangle *sz)</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;{</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="comment">/* Fill sz with the monitor (or workarea) size and position</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;<span class="comment"> * of the monitor (or workarea) where cnnobj-&gt;cnnwin is located */</span></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; GdkRectangle monitor_geometry;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; sz-&gt;x = sz-&gt;y = sz-&gt;width = sz-&gt;height = 0;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">if</span> (!cnnobj)</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">if</span> (!cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>)</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">if</span> (!gtk_widget_is_visible(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>)))</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; GdkDisplay *display;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; GdkMonitor *monitor;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; display = gtk_widget_get_display(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>));</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; monitor = gdk_display_get_monitor_at_window(display, gtk_widget_get_window(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>)));</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; GdkScreen *screen;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; gint monitor;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; screen = gtk_window_get_screen(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>));</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; monitor = gdk_screen_get_monitor_at_window(screen, gtk_widget_get_window(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>)));</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; gdk_monitor_get_workarea(monitor, &amp;monitor_geometry);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="comment">/* Under Wayland, GTK 3.22, all values returned by gdk_monitor_get_geometry()</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;<span class="comment"> * and gdk_monitor_get_workarea() seem to have been divided by the</span></div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="comment"> * gdk scale factor, so we need to adjust the returned rect</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;<span class="comment"> * undoing the division */</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">if</span> (GDK_IS_WAYLAND_DISPLAY(display)) {</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordtype">int</span> monitor_scale_factor = gdk_monitor_get_scale_factor(monitor);</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; monitor_geometry.width *= monitor_scale_factor;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; monitor_geometry.height *= monitor_scale_factor;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; }</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="preprocessor">#elif gdk_screen_get_monitor_workarea</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; gdk_screen_get_monitor_workarea(screen, monitor, &amp;monitor_geometry);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; gdk_screen_get_monitor_geometry(screen, monitor, &amp;monitor_geometry);</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; *sz = monitor_geometry;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;}</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div><div class="line"><a name="l01060"></a><span class="lineno"><a class="line" href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34"> 1060</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34">rco_check_resize</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;{</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; gboolean scroll_required = FALSE;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; GdkRectangle monitor_geometry;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; gint rd_width, rd_height;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; gint bordersz;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; gint scalemode;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; scalemode = <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="comment">/* Get remote destkop size */</span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <a class="code" href="rcw_8c.html#a8cb8bd7679116f409b29399a5d14c527">rco_get_desktop_size</a>(cnnobj, &amp;rd_width, &amp;rd_height);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="comment">/* Get our monitor size */</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(cnnobj, &amp;monitor_geometry);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>)) &amp;&amp;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; (monitor_geometry.width &lt; rd_width || monitor_geometry.height &lt; rd_height) &amp;&amp;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>)</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; scroll_required = TRUE;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordflow">switch</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode) {</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>:</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; gtk_window_resize(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), monitor_geometry.width, monitor_geometry.height);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>),</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; (scroll_required ? GTK_POLICY_AUTOMATIC : GTK_POLICY_NEVER),</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; (scroll_required ? GTK_POLICY_AUTOMATIC : GTK_POLICY_NEVER));</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>:</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; bordersz = scroll_required ? SCROLL_BORDER_SIZE : 0;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; gtk_window_resize(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), monitor_geometry.width, monitor_geometry.height);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">if</span> (REMMINA_IS_SCROLLED_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>))</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="comment">/* Put a border around Notebook content (RemminaScrolledViewpord), so we can</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="comment"> * move the mouse over the border to scroll */</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; gtk_container_set_border_width(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>), bordersz);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>:</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;viewmode&quot;</span>, <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e471283504c1e470e4d0e7b8b5842f">UNDEFINED_MODE</a>) == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e471283504c1e470e4d0e7b8b5842f">UNDEFINED_MODE</a>) {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="comment">/* ToDo: is this really needed ? When ? */</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; gtk_window_set_default_size(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>),</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; MIN(rd_width, monitor_geometry.width), MIN(rd_height, monitor_geometry.height));</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">if</span> (rd_width &gt;= monitor_geometry.width || rd_height &gt;= monitor_geometry.height) {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; gtk_window_maximize(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>));</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_maximize&quot;</span>, TRUE);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <a class="code" href="rcw_8c.html#adf4d204cce70b6609c15c1ca95082a43">rcw_toolbar_autofit</a>(NULL, cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_maximize&quot;</span>, FALSE);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_maximize&quot;</span>, FALSE))</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; gtk_window_maximize(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>));</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;}</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;</div><div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701"> 1124</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GtkWidget *<a class="code" href="structitem.html">item</a>, <span class="keyword">const</span> gchar *tip, guint key1, guint key2)</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;{</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; gchar *s1;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; gchar *s2;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> &amp;&amp; key1) {</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">if</span> (key2)</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; s1 = g_strdup_printf(<span class="stringliteral">&quot; (%s + %s,%s)&quot;</span>, gdk_keyval_name(remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>),</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; gdk_keyval_name(gdk_keyval_to_upper(key1)), gdk_keyval_name(gdk_keyval_to_upper(key2)));</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key1 == remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>)</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; s1 = g_strdup_printf(<span class="stringliteral">&quot; (%s)&quot;</span>, gdk_keyval_name(remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>));</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; s1 = g_strdup_printf(<span class="stringliteral">&quot; (%s + %s)&quot;</span>, gdk_keyval_name(remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>),</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; gdk_keyval_name(gdk_keyval_to_upper(key1)));</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; s1 = NULL;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; }</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; s2 = g_strdup_printf(<span class="stringliteral">&quot;%s%s&quot;</span>, tip, s1 ? s1 : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; gtk_widget_set_tooltip_text(item, s2);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; g_free(s2);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; g_free(s1);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;}</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"><a class="line" href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d"> 1148</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d">remmina_protocol_widget_update_alignment</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;{</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; gboolean scaledexpandedmode;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordtype">int</span> rdwidth, rdheight;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; gfloat aratio;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordflow">if</span> (!cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a1f3920f6710917d6944491ae1d7b1250">plugin_can_scale</a>) {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="comment">/* If we have a plugin that cannot scale,</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<span class="comment"> * (i.e. SFTP plugin), then we expand proto */</span></div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; gtk_widget_set_halign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_FILL);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; gtk_widget_set_valign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_FILL);</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="comment">/* Plugin can scale */</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; scalemode = <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(cnnobj, NULL, NULL);</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; scaledexpandedmode = <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="comment">/* Check if we need aspectframe and create/destroy it accordingly */</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">if</span> (scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a> &amp;&amp; !scaledexpandedmode) {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="comment">/* We need an aspectframe as a parent of proto */</span></div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; rdwidth = <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; rdheight = <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; aratio = (gfloat)rdwidth / (gfloat)rdheight;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">if</span> (!cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>) {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">/* We need a new aspectframe */</span></div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a> = gtk_aspect_frame_new(NULL, 0.5, 0.5, aratio, FALSE);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; gtk_widget_set_name(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>, <span class="stringliteral">&quot;remmina-cw-aspectframe&quot;</span>);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; gtk_frame_set_shadow_type(GTK_FRAME(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>), GTK_SHADOW_NONE);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; g_object_ref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; gtk_container_remove(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; gtk_container_add(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; gtk_container_add(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; g_object_unref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; gtk_widget_show(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>);</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="keywordflow">if</span> (cnnobj != NULL &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> != NULL &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook != NULL)</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <a class="code" href="rcw_8c.html#a7189a0f1289a24fc5cc9fdfaf37244f3">rcw_grab_focus</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; gtk_aspect_frame_set(GTK_ASPECT_FRAME(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>), 0.5, 0.5, aratio, FALSE);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; }</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="comment">/* We do not need an aspectframe as a parent of proto */</span></div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>) {</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="comment">/* We must remove the old aspectframe reparenting proto to viewport */</span></div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; g_object_ref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>);</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; g_object_ref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; gtk_container_remove(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; gtk_container_remove(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>);</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; g_object_unref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a>);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a> = NULL;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; gtk_container_add(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; g_object_unref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (cnnobj != NULL &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> != NULL &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook != NULL)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <a class="code" href="rcw_8c.html#a7189a0f1289a24fc5cc9fdfaf37244f3">rcw_grab_focus</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; }</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordflow">if</span> (scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a> || scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>) {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="comment">/* We have a plugin that can be scaled, and the scale button</span></div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="comment"> * has been pressed. Give it the correct WxH maintaining aspect</span></div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="comment"> * ratio of remote destkop size */</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; gtk_widget_set_halign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_FILL);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; gtk_widget_set_valign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_FILL);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="comment">/* Plugin can scale, but no scaling is active. Ensure that we have</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;<span class="comment"> * aspectframe with a ratio of 1 */</span></div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; gtk_widget_set_halign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_CENTER);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; gtk_widget_set_valign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_CENTER);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; }</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; }</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;}</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;</div><div class="line"><a name="l01221"></a><span class="lineno"><a class="line" href="rcw_8c.html#a5e70819cad41022a0070c8102dd6dd6f"> 1221</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a5e70819cad41022a0070c8102dd6dd6f">nb_set_current_page</a>(GtkNotebook *notebook, GtkWidget *page)</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;{</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; gint np, i;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; np = gtk_notebook_get_n_pages(notebook);</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; np; i++) {</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keywordflow">if</span> (gtk_notebook_get_nth_page(notebook, i) == page) {</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; gtk_notebook_set_current_page(notebook, i);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; }</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; }</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;}</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;</div><div class="line"><a name="l01234"></a><span class="lineno"><a class="line" href="rcw_8c.html#a9c0d937c233cdb903058119839eb4f07"> 1234</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a9c0d937c233cdb903058119839eb4f07">nb_migrate_message_panels</a>(GtkWidget *frompage, GtkWidget *topage)</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;{</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="comment">/* Migrate a single connection tab from a notebook to another one */</span></div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; GList *lst, *l;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="comment">/* Reparent message panels */</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; lst = gtk_container_get_children(GTK_CONTAINER(frompage));</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keywordflow">for</span> (l = lst; l != NULL; l = l-&gt;next) {</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">if</span> (REMMINA_IS_MESSAGE_PANEL(l-&gt;data)) {</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; g_object_ref(l-&gt;data);</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; gtk_container_remove(GTK_CONTAINER(frompage), GTK_WIDGET(l-&gt;data));</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; gtk_container_add(GTK_CONTAINER(topage), GTK_WIDGET(l-&gt;data));</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; g_object_unref(l-&gt;data);</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; gtk_box_reorder_child(GTK_BOX(topage), GTK_WIDGET(l-&gt;data), 0);</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; }</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; }</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; g_list_free(lst);</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;}</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div><div class="line"><a name="l01254"></a><span class="lineno"><a class="line" href="rcw_8c.html#a0d4ebd91bc6568257031111f56689a76"> 1254</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a0d4ebd91bc6568257031111f56689a76">rcw_migrate</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *from, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *to)</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;{</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="comment">/* Migrate a complete notebook from a window to another */</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; gchar *tag;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; gint cp, np, i;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; GtkNotebook *from_notebook;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; GtkWidget *frompage, *newpage, *old_scrolled_container;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="comment">/* Migrate TAG */</span></div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; tag = g_strdup((gchar *)g_object_get_data(G_OBJECT(from), <span class="stringliteral">&quot;tag&quot;</span>));</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; g_object_set_data_full(G_OBJECT(to), <span class="stringliteral">&quot;tag&quot;</span>, tag, (GDestroyNotify)g_free);</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="comment">/* Migrate notebook content */</span></div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; from_notebook = from-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">if</span> (from_notebook &amp;&amp; GTK_IS_NOTEBOOK(from_notebook)) {</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; cp = gtk_notebook_get_current_page(from_notebook);</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; np = gtk_notebook_get_n_pages(from_notebook);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="comment">/* Create pages on dest notebook and migrate</span></div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="comment"> * page content */</span></div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; np; i++) {</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; frompage = gtk_notebook_get_nth_page(from_notebook, i);</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; cnnobj = g_object_get_data(G_OBJECT(frompage), <span class="stringliteral">&quot;cnnobj&quot;</span>);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="comment">/* A scrolled container must be recreated, because it can be different on the new window/page</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="comment"> depending on view_mode */</span></div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; scalemode = <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(cnnobj, NULL, NULL);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; old_scrolled_container = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a> = <a class="code" href="rcw_8c.html#a36c08f198ab102d001d1221bdd8ea38c">rco_create_scrolled_container</a>(scalemode, to-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; newpage = <a class="code" href="rcw_8c.html#ad5a67ac52028302d5681cceaf9ac46bc">rcw_append_new_page</a>(to, cnnobj);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <a class="code" href="rcw_8c.html#a9c0d937c233cdb903058119839eb4f07">nb_migrate_message_panels</a>(frompage, newpage);</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="comment">/* Reparent the viewport (which is inside scrolled_container) to the new page */</span></div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; g_object_ref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>);</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; gtk_container_remove(GTK_CONTAINER(old_scrolled_container), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; gtk_container_add(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; g_object_unref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="comment">/* Destroy old scrolled_container. Not really needed, it will be destroyed</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment"> * when removing the page from the notepad */</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; gtk_widget_destroy(old_scrolled_container);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; }</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="comment">/* Remove all the pages from source notebook */</span></div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">for</span> (i = np - 1; i &gt;= 0; i--)</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; gtk_notebook_remove_page(from_notebook, i);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; gtk_notebook_set_current_page(to-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook, cp);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; }</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;}</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;</div><div class="line"><a name="l01311"></a><span class="lineno"><a class="line" href="rcw_8c.html#afec9666876babf3ae115fade7470915e"> 1311</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#afec9666876babf3ae115fade7470915e">rcw_switch_viewmode</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, <span class="keywordtype">int</span> newmode)</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;{</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; GdkWindowState s;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *newwin;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; gint old_width, old_height;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keywordtype">int</span> old_mode;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; old_mode = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keywordflow">if</span> (old_mode == newmode)</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">if</span> (newmode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a> || newmode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>) {</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">if</span> (old_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>) {</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="comment">/* We are leaving SCROLLED_WINDOW_MODE, save W,H, and maximized</span></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;<span class="comment"> * status before self destruction of cnnwin */</span></div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; gtk_window_get_size(GTK_WINDOW(cnnwin), &amp;old_width, &amp;old_height);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; s = gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(cnnwin)));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; }</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; newwin = <a class="code" href="rcw_8c.html#a11bb04a25b6c8a79af3cb34f22e28dd8">rcw_create_fullscreen</a>(GTK_WINDOW(cnnwin), cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;fss_view_mode);</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="rcw_8c.html#a0d4ebd91bc6568257031111f56689a76">rcw_migrate</a>(cnnwin, newwin);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">if</span> (old_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>) {</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; newwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_maximized = (s &amp; GDK_WINDOW_STATE_MAXIMIZED) ? TRUE : FALSE;</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; newwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_width = old_width;</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; newwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_height = old_height;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; }</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; newwin = <a class="code" href="rcw_8c.html#a95c64795004c7778c56068abeb1a6bd0">rcw_create_scrolled</a>(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_width, cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_height,</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_maximized);</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <a class="code" href="rcw_8c.html#a0d4ebd91bc6568257031111f56689a76">rcw_migrate</a>(cnnwin, newwin);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">if</span> (old_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a> || old_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>)</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="comment">/* We are leaving a FULLSCREEN mode, save some parameters</span></div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="comment"> * status before self destruction of cnnwin */</span></div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; newwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;fss_view_mode = old_mode;</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; }</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="comment">/* Prevent unreleased hostkey from old window to be released here */</span></div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; newwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;hostkey_used = TRUE;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;}</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;</div><div class="line"><a name="l01351"></a><span class="lineno"><a class="line" href="rcw_8c.html#af2f5c8716d84e6223a4b2cbc9efc532b"> 1351</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#af2f5c8716d84e6223a4b2cbc9efc532b">rcw_toolbar_fullscreen</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;{</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(gp) &gt;= 1) {</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Fullscreen on all monitor&quot;</span>);</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; gdk_window_set_fullscreen_mode(gtk_widget_get_window(GTK_WIDGET(toggle)), GDK_FULLSCREEN_ON_ALL_MONITORS);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Fullscreen on one monitor&quot;</span>);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; <span class="keywordflow">if</span> ((toggle != NULL &amp;&amp; toggle == cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_fullscreen)) {</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <span class="keywordflow">if</span> (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle))) {</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(gp) &gt;= 1)</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_multimon), TRUE);</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <a class="code" href="rcw_8c.html#afec9666876babf3ae115fade7470915e">rcw_switch_viewmode</a>(cnnwin, cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;fss_view_mode);</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <a class="code" href="rcw_8c.html#afec9666876babf3ae115fade7470915e">rcw_switch_viewmode</a>(cnnwin, <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>);</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; }</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="keywordflow">if</span> (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_multimon))) {</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <a class="code" href="rcw_8c.html#afec9666876babf3ae115fade7470915e">rcw_switch_viewmode</a>(cnnwin, cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;fss_view_mode);</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; <a class="code" href="rcw_8c.html#afec9666876babf3ae115fade7470915e">rcw_switch_viewmode</a>(cnnwin, <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; }</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;}</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;</div><div class="line"><a name="l01387"></a><span class="lineno"><a class="line" href="rcw_8c.html#a3463779f231df73defb8ff86f27ec9ef"> 1387</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a3463779f231df73defb8ff86f27ec9ef">rco_viewport_fullscreen_mode</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;{</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *newwin;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="keywordflow">if</span> (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;fss_view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; newwin = <a class="code" href="rcw_8c.html#a11bb04a25b6c8a79af3cb34f22e28dd8">rcw_create_fullscreen</a>(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>);</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <a class="code" href="rcw_8c.html#a0d4ebd91bc6568257031111f56689a76">rcw_migrate</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, newwin);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;}</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;</div><div class="line"><a name="l01399"></a><span class="lineno"><a class="line" href="rcw_8c.html#a7b60c2cb02c4a893d8d2054f0bb53790"> 1399</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a7b60c2cb02c4a893d8d2054f0bb53790">rco_scrolled_fullscreen_mode</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;{</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *newwin;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">if</span> (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;fss_view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; newwin = <a class="code" href="rcw_8c.html#a11bb04a25b6c8a79af3cb34f22e28dd8">rcw_create_fullscreen</a>(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>);</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <a class="code" href="rcw_8c.html#a0d4ebd91bc6568257031111f56689a76">rcw_migrate</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, newwin);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;}</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;</div><div class="line"><a name="l01411"></a><span class="lineno"><a class="line" href="rcw_8c.html#a9ffed90419a36560bf0c4d213a853c28"> 1411</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a9ffed90419a36560bf0c4d213a853c28">rcw_fullscreen_option_popdown</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;{</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; priv-&gt;sticky = FALSE;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv-&gt;fullscreen_option_button), FALSE);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;}</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"><a class="line" href="rcw_8c.html#a2258ee24612affeef60abd2f18107b2c"> 1421</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a2258ee24612affeef60abd2f18107b2c">rcw_toolbar_fullscreen_option</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;{</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; GtkWidget *menu;</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; GtkWidget *menuitem;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; GSList *group;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">if</span> (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle)))</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;sticky = TRUE;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; menu = gtk_menu_new();</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; menuitem = gtk_radio_menu_item_new_with_label(NULL, _(<span class="stringliteral">&quot;Viewport fullscreen mode&quot;</span>));</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>)</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a3463779f231df73defb8ff86f27ec9ef">rco_viewport_fullscreen_mode</a>), cnnobj);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; menuitem = gtk_radio_menu_item_new_with_label(group, _(<span class="stringliteral">&quot;Scrolled fullscreen&quot;</span>));</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>)</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a7b60c2cb02c4a893d8d2054f0bb53790">rco_scrolled_fullscreen_mode</a>), cnnobj);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; g_signal_connect(G_OBJECT(menu), <span class="stringliteral">&quot;deactivate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a9ffed90419a36560bf0c4d213a853c28">rcw_fullscreen_option_popdown</a>), cnnwin);</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(toggle),</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, <a class="code" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a>, cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_fullscreen, 0,</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; gtk_get_current_event_time());</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;}</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div><div class="line"><a name="l01468"></a><span class="lineno"><a class="line" href="rcw_8c.html#a45ecb24606954e4268f2f3c5d7e2e1e0"> 1468</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a45ecb24606954e4268f2f3c5d7e2e1e0">rcw_scaler_option_popdown</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;{</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; priv-&gt;sticky = FALSE;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv-&gt;scaler_option_button), FALSE);</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;}</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;</div><div class="line"><a name="l01480"></a><span class="lineno"><a class="line" href="rcw_8c.html#ae747a0b62a922df1de61c62092757b19"> 1480</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ae747a0b62a922df1de61c62092757b19">rcw_scaler_expand</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;{</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="keywordflow">if</span> (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin);</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">if</span> (!cnnobj)</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), TRUE);</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;scaler_expand&quot;</span>, TRUE);</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <a class="code" href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d">remmina_protocol_widget_update_alignment</a>(cnnobj);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;}</div><div class="line"><a name="l01494"></a><span class="lineno"><a class="line" href="rcw_8c.html#abd0a6de10dd92a8a84f24b8e66da5767"> 1494</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#abd0a6de10dd92a8a84f24b8e66da5767">rcw_scaler_keep_aspect</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;{</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; <span class="keywordflow">if</span> (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">if</span> (!cnnobj)</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), FALSE);</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;scaler_expand&quot;</span>, FALSE);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <a class="code" href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d">remmina_protocol_widget_update_alignment</a>(cnnobj);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;}</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;</div><div class="line"><a name="l01510"></a><span class="lineno"><a class="line" href="rcw_8c.html#ae8409c04e40ec792c1f477360bfcd6ba"> 1510</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ae8409c04e40ec792c1f477360bfcd6ba">rcw_toolbar_scaler_option</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;{</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; GtkWidget *menu;</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; GtkWidget *menuitem;</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; GSList *group;</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; gboolean scaler_expand;</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keywordflow">if</span> (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle)))</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; scaler_expand = <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; priv-&gt;sticky = TRUE;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; menu = gtk_menu_new();</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; menuitem = gtk_radio_menu_item_new_with_label(NULL, _(<span class="stringliteral">&quot;Keep aspect ratio when scaled&quot;</span>));</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keywordflow">if</span> (!scaler_expand)</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#abd0a6de10dd92a8a84f24b8e66da5767">rcw_scaler_keep_aspect</a>), cnnwin);</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; menuitem = gtk_radio_menu_item_new_with_label(group, _(<span class="stringliteral">&quot;Fill client window when scaled&quot;</span>));</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <span class="keywordflow">if</span> (scaler_expand)</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ae747a0b62a922df1de61c62092757b19">rcw_scaler_expand</a>), cnnwin);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; g_signal_connect(G_OBJECT(menu), <span class="stringliteral">&quot;deactivate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a45ecb24606954e4268f2f3c5d7e2e1e0">rcw_scaler_option_popdown</a>), cnnwin);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(toggle),</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, <a class="code" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a>, priv-&gt;toolitem_scale, 0,</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; gtk_get_current_event_time());</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;}</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;</div><div class="line"><a name="l01561"></a><span class="lineno"><a class="line" href="rcw_8c.html#acfe9306fecab6d93b5ab51571b69fc6a"> 1561</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#acfe9306fecab6d93b5ab51571b69fc6a">rco_switch_page_activate</a>(GtkMenuItem *menuitem, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;{</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; gint page_num;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; page_num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;new-page-num&quot;</span>));</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; gtk_notebook_set_current_page(GTK_NOTEBOOK(priv-&gt;notebook), page_num);</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;}</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;</div><div class="line"><a name="l01571"></a><span class="lineno"><a class="line" href="rcw_8c.html#a03311f33ff921f943f6edbbc1867d1ec"> 1571</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a03311f33ff921f943f6edbbc1867d1ec">rcw_toolbar_switch_page_popdown</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;{</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; priv-&gt;sticky = FALSE;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_switch_page), FALSE);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;}</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;</div><div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="rcw_8c.html#a4ecafd7f885c5953e5c3b28f84d6af79"> 1582</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a4ecafd7f885c5953e5c3b28f84d6af79">rcw_toolbar_switch_page</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;{</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; GtkWidget *menu;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; GtkWidget *menuitem;</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; GtkWidget *image;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; gint i, n;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; <span class="keywordflow">if</span> (!gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle)))</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; priv-&gt;sticky = TRUE;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; menu = gtk_menu_new();</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; n = gtk_notebook_get_n_pages(GTK_NOTEBOOK(priv-&gt;notebook));</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; n; i++) {</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#aaad3184fedef1eccd1f92d8ef43cca44">rcw_get_cnnobj_at_page</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, i);</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; menuitem = gtk_menu_item_new_with_label(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; image = gtk_image_new_from_icon_name(<a class="code" href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>), GTK_ICON_SIZE_MENU);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; gtk_widget_show(image);</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; g_object_set_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;new-page-num&quot;</span>, GINT_TO_POINTER(i));</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;activate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#acfe9306fecab6d93b5ab51571b69fc6a">rco_switch_page_activate</a>), cnnobj);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <span class="keywordflow">if</span> (i == gtk_notebook_get_current_page(GTK_NOTEBOOK(priv-&gt;notebook)))</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; gtk_widget_set_sensitive(menuitem, FALSE);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; }</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; g_signal_connect(G_OBJECT(menu), <span class="stringliteral">&quot;deactivate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a03311f33ff921f943f6edbbc1867d1ec">rcw_toolbar_switch_page_popdown</a>),</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; cnnwin);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(toggle),</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, <a class="code" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a>, widget, 0, gtk_get_current_event_time());</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;}</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div><div class="line"><a name="l01633"></a><span class="lineno"><a class="line" href="rcw_8c.html#a23692809213a6dfe683afe3d0dece3aa"> 1633</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a23692809213a6dfe683afe3d0dece3aa">rco_update_toolbar_autofit_button</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;{</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; GtkToolItem *toolitem;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> sc;</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; toolitem = priv-&gt;toolitem_autofit;</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <span class="keywordflow">if</span> (toolitem) {</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <span class="keywordflow">if</span> (priv-&gt;view_mode != <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>) {</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), FALSE);</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; sc = <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(cnnobj, NULL, NULL);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), sc == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; }</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; }</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;}</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;</div><div class="line"><a name="l01651"></a><span class="lineno"><a class="line" href="rcw_8c.html#a042a37c7e92f49443ddbdc6dc948b8b5"> 1651</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a042a37c7e92f49443ddbdc6dc948b8b5">rco_change_scalemode</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, gboolean bdyn, gboolean bscale)</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;{</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <span class="keywordflow">if</span> (bdyn)</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; scalemode = <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>;</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bscale)</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; scalemode = <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; scalemode = <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), scalemode);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, scalemode);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;scaler_option_button), scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <a class="code" href="rcw_8c.html#a23692809213a6dfe683afe3d0dece3aa">rco_update_toolbar_autofit_button</a>(cnnobj);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f">REMMINA_PROTOCOL_FEATURE_TYPE_SCALE</a>, 0);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode != <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>)</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <a class="code" href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34">rco_check_resize</a>(cnnobj);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keywordflow">if</span> (GTK_IS_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)) {</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <a class="code" href="rcw_8c.html#a2744b7be7cddc642ac79ed182c39b683">rco_set_scrolled_policy</a>(scalemode, GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>));</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; }</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;}</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;</div><div class="line"><a name="l01678"></a><span class="lineno"><a class="line" href="rcw_8c.html#ab80a8d73f4a051adb133a847908293e9"> 1678</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ab80a8d73f4a051adb133a847908293e9">rcw_toolbar_dynres</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;{</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; gboolean bdyn, bscale;</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>) {</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; bdyn = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle));</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; bscale = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_scale));</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordflow">if</span> (bdyn &amp;&amp; bscale) {</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_scale), FALSE);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; bscale = FALSE;</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; }</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <a class="code" href="rcw_8c.html#a042a37c7e92f49443ddbdc6dc948b8b5">rco_change_scalemode</a>(cnnobj, bdyn, bscale);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;}</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;</div><div class="line"><a name="l01701"></a><span class="lineno"><a class="line" href="rcw_8c.html#a17bcf18cd1834d594b6e8f9777c63907"> 1701</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a17bcf18cd1834d594b6e8f9777c63907">rcw_toolbar_scaled_mode</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;{</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; gboolean bdyn, bscale;</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; bdyn = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_dynres));</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; bscale = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle));</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> (bdyn &amp;&amp; bscale) {</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_dynres), FALSE);</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; bdyn = FALSE;</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; }</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; <a class="code" href="rcw_8c.html#a042a37c7e92f49443ddbdc6dc948b8b5">rco_change_scalemode</a>(cnnobj, bdyn, bscale);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;}</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;</div><div class="line"><a name="l01722"></a><span class="lineno"><a class="line" href="rcw_8c.html#a5d41c895ab988890cfcd442afdb0d7b9"> 1722</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a5d41c895ab988890cfcd442afdb0d7b9">rcw_toolbar_multi_monitor_mode</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;{</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">if</span> (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle))) {</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving multimon as 1&quot;</span>);</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, 1);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>);</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5af727b997d174217f949eb7364704f501">REMMINA_PROTOCOL_FEATURE_TYPE_MULTIMON</a>, 0);</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="keywordflow">if</span> (!gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_fullscreen)))</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_fullscreen), TRUE);</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving multimon as 0&quot;</span>);</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, 0);</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>);</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; <a class="code" href="rcw_8c.html#af2f5c8716d84e6223a4b2cbc9efc532b">rcw_toolbar_fullscreen</a>(NULL, cnnwin);</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; }</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;}</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;</div><div class="line"><a name="l01748"></a><span class="lineno"><a class="line" href="rcw_8c.html#a2b1c419af147227fab3ad9a3ce82f3af"> 1748</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a2b1c419af147227fab3ad9a3ce82f3af">rcw_toolbar_open_main</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;{</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cae084d7c048c5eb5045210062b225f5e5">REMMINA_COMMAND_MAIN</a>, NULL);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;}</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;</div><div class="line"><a name="l01758"></a><span class="lineno"><a class="line" href="rcw_8c.html#a8ec8f547c27d9bfeb98abab525bb4a76"> 1758</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a8ec8f547c27d9bfeb98abab525bb4a76">rcw_toolbar_preferences_popdown</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;{</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;sticky = FALSE;</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolitem_preferences), FALSE);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;}</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;</div><div class="line"><a name="l01773"></a><span class="lineno"><a class="line" href="rcw_8c.html#a495019c0de716af850af656dd3345092"> 1773</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a495019c0de716af850af656dd3345092">rcw_toolbar_menu_popdown</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;{</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; priv-&gt;sticky = FALSE;</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_menu), FALSE);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;}</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div><div class="line"><a name="l01787"></a><span class="lineno"><a class="line" href="rcw_8c.html#a818f2fce53d01e503b6a466979aac606"> 1787</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a818f2fce53d01e503b6a466979aac606">rcw_toolbar_tools_popdown</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;{</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; priv-&gt;sticky = FALSE;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_tools), FALSE);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;}</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;</div><div class="line"><a name="l01801"></a><span class="lineno"><a class="line" href="rcw_8c.html#a3a531286fa321e0931475b5afc86ec49"> 1801</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a3a531286fa321e0931475b5afc86ec49">rco_call_protocol_feature_radio</a>(GtkMenuItem *menuitem, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;{</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; gpointer value;</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; <span class="keywordflow">if</span> (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) {</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-type&quot;</span>);</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; value = g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-value&quot;</span>);</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, (<span class="keyword">const</span> gchar *)feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a>, (<span class="keyword">const</span> gchar *)value);</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), feature);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;}</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;</div><div class="line"><a name="l01816"></a><span class="lineno"><a class="line" href="rcw_8c.html#ae09c2a83e973c3041254fb57bd58666f"> 1816</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ae09c2a83e973c3041254fb57bd58666f">rco_call_protocol_feature_check</a>(GtkMenuItem *menuitem, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;{</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; gboolean value;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-type&quot;</span>);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; value = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem));</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, (<span class="keyword">const</span> gchar *)feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a>, value);</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), feature);</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;}</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;</div><div class="line"><a name="l01828"></a><span class="lineno"><a class="line" href="rcw_8c.html#a3cc04a8362110361d062a840b8ae5f64"> 1828</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a3cc04a8362110361d062a840b8ae5f64">rco_call_protocol_feature_activate</a>(GtkMenuItem *menuitem, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;{</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)g_object_get_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-type&quot;</span>);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), feature);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;}</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;</div><div class="line"><a name="l01837"></a><span class="lineno"><a class="line" href="rcw_8c.html#ad13167e478305c3fae8a4cea1d0e2f76"> 1837</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ad13167e478305c3fae8a4cea1d0e2f76">rcw_toolbar_preferences_radio</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile,</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; GtkWidget *menu, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature, <span class="keyword">const</span> gchar *domain, gboolean enabled)</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;{</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; GtkWidget *menuitem;</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; GSList *group;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; gint i;</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <span class="keyword">const</span> gchar **list;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keyword">const</span> gchar *value;</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; group = NULL;</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; value = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, (<span class="keyword">const</span> gchar *)feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a>);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; list = (<span class="keyword">const</span> gchar **)feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a>;</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; for (i = 0; list[i]; i += 2) {</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; menuitem = gtk_radio_menu_item_new_with_label(group, g_dgettext(domain, list[i + 1]));</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menuitem));</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; <span class="keywordflow">if</span> (enabled) {</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; g_object_set_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-type&quot;</span>, (gpointer)feature);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; g_object_set_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-value&quot;</span>, (gpointer)list[i]);</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">if</span> (value &amp;&amp; g_strcmp0(list[i], value) == 0)</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), TRUE);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;toggled&quot;</span>,</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; G_CALLBACK(<a class="code" href="rcw_8c.html#a3a531286fa321e0931475b5afc86ec49">rco_call_protocol_feature_radio</a>), cnnobj);</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; gtk_widget_set_sensitive(menuitem, FALSE);</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; }</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; }</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;}</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;</div><div class="line"><a name="l01871"></a><span class="lineno"><a class="line" href="rcw_8c.html#a366d1ea1fc39ddc72c384d07d47a25d9"> 1871</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a366d1ea1fc39ddc72c384d07d47a25d9">rcw_toolbar_preferences_check</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj,</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; GtkWidget *menu, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature,</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <span class="keyword">const</span> gchar *domain, gboolean enabled)</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;{</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; GtkWidget *menuitem;</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; menuitem = gtk_check_menu_item_new_with_label(g_dgettext(domain, (<span class="keyword">const</span> gchar *)feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a>));</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <span class="keywordflow">if</span> (enabled) {</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; g_object_set_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-type&quot;</span>, (gpointer)feature);</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem),</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, (<span class="keyword">const</span> gchar *)feature-&gt;opt2, FALSE));</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;toggled&quot;</span>,</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; G_CALLBACK(<a class="code" href="rcw_8c.html#ae09c2a83e973c3041254fb57bd58666f">rco_call_protocol_feature_check</a>), cnnobj);</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; gtk_widget_set_sensitive(menuitem, FALSE);</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; }</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;}</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;</div><div class="line"><a name="l01895"></a><span class="lineno"><a class="line" href="rcw_8c.html#ab1f5606917a73b7048b748ac33668523"> 1895</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ab1f5606917a73b7048b748ac33668523">rcw_toolbar_preferences</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;{</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; GtkWidget *menu;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; GtkWidget *menuitem;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; gboolean separator;</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; gchar *domain;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; gboolean enabled;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <span class="keywordflow">if</span> (!gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle)))</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; priv-&gt;sticky = TRUE;</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; separator = FALSE;</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; domain = <a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; menu = gtk_menu_new();</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">for</span> (feature = <a class="code" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>)); feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>;</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; feature++) {</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> != <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527">REMMINA_PROTOCOL_FEATURE_TYPE_PREF</a>)</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="keywordflow">if</span> (separator) {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; menuitem = gtk_separator_menu_item_new();</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; separator = FALSE;</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; }</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; enabled = <a class="code" href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), feature);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; <span class="keywordflow">switch</span> (GPOINTER_TO_INT(feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a>)) {</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_PREF_RADIO:</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <a class="code" href="rcw_8c.html#ad13167e478305c3fae8a4cea1d0e2f76">rcw_toolbar_preferences_radio</a>(cnnobj, cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, menu, feature,</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; domain, enabled);</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; separator = TRUE;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_PREF_CHECK:</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; <a class="code" href="rcw_8c.html#a366d1ea1fc39ddc72c384d07d47a25d9">rcw_toolbar_preferences_check</a>(cnnobj, menu, feature,</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; domain, enabled);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; }</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; }</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; g_free(domain);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; g_signal_connect(G_OBJECT(menu), <span class="stringliteral">&quot;deactivate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a8ec8f547c27d9bfeb98abab525bb4a76">rcw_toolbar_preferences_popdown</a>), cnnwin);</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(toggle),</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, <a class="code" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a>, widget, 0, gtk_get_current_event_time());</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;}</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;</div><div class="line"><a name="l01958"></a><span class="lineno"><a class="line" href="rcw_8c.html#ac191ee70e69bb3412a92a55234edca55"> 1958</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ac191ee70e69bb3412a92a55234edca55">rcw_toolbar_menu_on_launch_item</a>(<a class="code" href="struct___remmina_applet_menu.html">RemminaAppletMenu</a> *menu, <a class="code" href="struct___remmina_applet_menu_item.html">RemminaAppletMenuItem</a> *menuitem, gpointer data)</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;{</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; gchar *s;</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keywordflow">switch</span> (menuitem-&gt;<a class="code" href="struct___remmina_applet_menu_item.html#a770b749c60737542802925cd6f3524fa">item_type</a>) {</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__applet__menu__item_8h.html#a75e42156d38612a96ae48899316b4727a9056a1ad9722374064fe166aa77e69a3">REMMINA_APPLET_MENU_ITEM_NEW</a>:</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7">REMMINA_COMMAND_NEW</a>, NULL);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__applet__menu__item_8h.html#a75e42156d38612a96ae48899316b4727a9edd77222ca6a7576822feebf0588572">REMMINA_APPLET_MENU_ITEM_FILE</a>:</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a>, menuitem-&gt;<a class="code" href="struct___remmina_applet_menu_item.html#aac9b89701606ff0f130f36ec0df55674">filename</a>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__applet__menu__item_8h.html#a75e42156d38612a96ae48899316b4727a3a6eab177da4cc0bf8267148c3837bf1">REMMINA_APPLET_MENU_ITEM_DISCOVERED</a>:</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; s = g_strdup_printf(<span class="stringliteral">&quot;%s,%s&quot;</span>, menuitem-&gt;<a class="code" href="struct___remmina_applet_menu_item.html#a0c122a469388d5000ce5af4ec29a561e">protocol</a>, menuitem-&gt;<a class="code" href="struct___remmina_applet_menu_item.html#abfc6c501c400171718ddf4a520154e8c">name</a>);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7">REMMINA_COMMAND_NEW</a>, s);</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; g_free(s);</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; }</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;}</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;</div><div class="line"><a name="l01978"></a><span class="lineno"><a class="line" href="rcw_8c.html#ae6aeab2ffe3fe798cc017e02f8781358"> 1978</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ae6aeab2ffe3fe798cc017e02f8781358">rcw_toolbar_menu</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;{</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; GtkWidget *menu;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; GtkWidget *menuitem = NULL;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="keywordflow">if</span> (!gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle)))</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; priv-&gt;sticky = TRUE;</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; menu = <a class="code" href="remmina__applet__menu_8c.html#adc65e597bc73ddbda587caa929efe872">remmina_applet_menu_new</a>();</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; <a class="code" href="remmina__applet__menu_8c.html#af2baabd1750dd1a95a0b36e601d99cfe">remmina_applet_menu_set_hide_count</a>(REMMINA_APPLET_MENU(menu), remmina_pref.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a>);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; <a class="code" href="remmina__applet__menu_8c.html#a8029065504aef0e850d79f3823d18f66">remmina_applet_menu_populate</a>(REMMINA_APPLET_MENU(menu));</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; g_signal_connect(G_OBJECT(menu), <span class="stringliteral">&quot;launch-item&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ac191ee70e69bb3412a92a55234edca55">rcw_toolbar_menu_on_launch_item</a>), NULL);</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="comment">//g_signal_connect(G_OBJECT(menu), &quot;edit-item&quot;, G_CALLBACK(rcw_toolbar_menu_on_edit_item), NULL);</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; menuitem = gtk_separator_menu_item_new();</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(toggle),</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, <a class="code" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a>, widget, 0, gtk_get_current_event_time());</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; g_signal_connect(G_OBJECT(menu), <span class="stringliteral">&quot;deactivate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a495019c0de716af850af656dd3345092">rcw_toolbar_menu_popdown</a>), cnnwin);</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;}</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;</div><div class="line"><a name="l02015"></a><span class="lineno"><a class="line" href="rcw_8c.html#ab8d75ff6c88b131e1bf5ddc15d7de3e2"> 2015</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ab8d75ff6c88b131e1bf5ddc15d7de3e2">rcw_toolbar_tools</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;{</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; GtkWidget *menu;</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; GtkWidget *menuitem = NULL;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; GtkMenu *submenu_keystrokes;</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; <span class="keyword">const</span> gchar *domain;</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; gboolean enabled;</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; gchar **keystrokes;</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; gchar **keystroke_values;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; gint i;</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (!gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle)))</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; priv-&gt;sticky = TRUE;</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; domain = <a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; menu = gtk_menu_new();</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; <span class="keywordflow">for</span> (feature = <a class="code" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>)); feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>;</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; feature++) {</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> != <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>)</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a>)</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; menuitem = gtk_menu_item_new_with_label(g_dgettext(domain, (<span class="keyword">const</span> gchar *)feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a>));</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a>)</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(menuitem, <span class="stringliteral">&quot;&quot;</span>, GPOINTER_TO_UINT(feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a>), 0);</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; enabled = <a class="code" href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), feature);</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <span class="keywordflow">if</span> (enabled) {</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; g_object_set_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;feature-type&quot;</span>, (gpointer)feature);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; g_signal_connect(G_OBJECT(menuitem), <span class="stringliteral">&quot;activate&quot;</span>,</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; G_CALLBACK(<a class="code" href="rcw_8c.html#a3cc04a8362110361d062a840b8ae5f64">rco_call_protocol_feature_activate</a>), cnnobj);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; gtk_widget_set_sensitive(menuitem, FALSE);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; }</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; }</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="comment">/* If the plugin accepts keystrokes include the keystrokes menu */</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>))) {</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="comment">/* Get the registered keystrokes list */</span></div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; keystrokes = g_strsplit(remmina_pref.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>, STRING_DELIMITOR, -1);</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <span class="keywordflow">if</span> (g_strv_length(keystrokes)) {</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="comment">/* Add a keystrokes submenu */</span></div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; menuitem = gtk_menu_item_new_with_label(_(<span class="stringliteral">&quot;Keystrokes&quot;</span>));</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; submenu_keystrokes = GTK_MENU(gtk_menu_new());</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), GTK_WIDGET(submenu_keystrokes));</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; <span class="comment">/* Add each registered keystroke */</span></div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; g_strv_length(keystrokes); i++) {</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; keystroke_values = g_strsplit(keystrokes[i], STRING_DELIMITOR2, -1);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; <span class="keywordflow">if</span> (g_strv_length(keystroke_values) &gt; 1) {</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; <span class="comment">/* Add the keystroke if no description was available */</span></div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; menuitem = gtk_menu_item_new_with_label(</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; g_strdup(keystroke_values[strlen(keystroke_values[0]) ? 0 : 1]));</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; g_object_set_data(G_OBJECT(menuitem), <span class="stringliteral">&quot;keystrokes&quot;</span>, g_strdup(keystroke_values[1]));</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; g_signal_connect_swapped(G_OBJECT(menuitem), <span class="stringliteral">&quot;activate&quot;</span>,</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a>),</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(submenu_keystrokes), menuitem);</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; }</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; g_strfreev(keystroke_values);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; }</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; menuitem = gtk_menu_item_new_with_label(_(<span class="stringliteral">&quot;Send clipboard content as keystrokes&quot;</span>));</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; <span class="keyword">static</span> gchar k_tooltip[] =</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;CAUTION: Pasted text will be sent as a sequence of key-codes as if typed on your local keyboard.\n&quot;</span></div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; <span class="stringliteral">&quot; • For best results use same keyboard settings for both, client and server.\n&quot;</span></div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; <span class="stringliteral">&quot; • If client-keyboard is different from server-keyboard the received text can contain wrong or erroneous characters.\n&quot;</span></div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <span class="stringliteral">&quot; • Unicode characters and other special characters that can&#39;t be translated to local key-codes won’t be sent to the server.\n&quot;</span></div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; gtk_widget_set_tooltip_text(menuitem, k_tooltip);</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160; gtk_menu_shell_append(GTK_MENU_SHELL(submenu_keystrokes), menuitem);</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; g_signal_connect_swapped(G_OBJECT(menuitem), <span class="stringliteral">&quot;activate&quot;</span>,</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a>),</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; g_strfreev(keystrokes);</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; }</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; g_signal_connect(G_OBJECT(menu), <span class="stringliteral">&quot;deactivate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a818f2fce53d01e503b6a466979aac606">rcw_toolbar_tools_popdown</a>), cnnwin);</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; gtk_menu_popup_at_widget(GTK_MENU(menu), GTK_WIDGET(toggle),</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; gtk_menu_popup(GTK_MENU(menu), NULL, NULL, <a class="code" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a>, widget, 0, gtk_get_current_event_time());</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;}</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;</div><div class="line"><a name="l02122"></a><span class="lineno"><a class="line" href="rcw_8c.html#aef19b6cf1ddcd2f21eebca7f78890ef3"> 2122</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#aef19b6cf1ddcd2f21eebca7f78890ef3">rcw_toolbar_duplicate</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;{</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a>, cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>-&gt;filename);</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160;}</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;</div><div class="line"><a name="l02135"></a><span class="lineno"><a class="line" href="rcw_8c.html#a93650a12c555e40554b8b8e7382f42a3"> 2135</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a93650a12c555e40554b8b8e7382f42a3">rcw_toolbar_screenshot</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;{</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; GdkPixbuf *screenshot;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; GdkWindow *active_window;</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; cairo_t *cr;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; gint width, height;</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; GString *pngstr;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; gchar *pngname;</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <a class="code" href="struct___remmina_plugin_screenshot_data.html">RemminaPluginScreenshotData</a> rpsd;</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; cairo_surface_t *srcsurface;</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; cairo_format_t cairo_format;</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; cairo_surface_t *surface;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; <span class="keywordtype">int</span> stride;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; GDateTime *date = g_date_time_new_now_utc();</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; <span class="comment">// We will take a screenshot of the currently displayed RemminaProtocolWidget.</span></div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; gp = REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; gchar *denyclip = <a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="stringliteral">&quot;deny_screenshot_clipboard&quot;</span>);</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;deny_screenshot_clipboard is set to %s&quot;</span>, denyclip);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; GtkClipboard *c = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; <span class="comment">// Ask the plugin if it can give us a screenshot</span></div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a>(gp, &amp;rpsd)) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; <span class="comment">// Good, we have a screenshot from the plugin !</span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Screenshot from plugin: w=%d h=%d bpp=%d bytespp=%d\n&quot;</span>,</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#ab5d115d8f9fc675f2419d38cdd424ce6">width</a>, rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#a9274a9d62e527ca25683af512505242e">height</a>, rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#acc352444c31929a1ef7aee2a0e37827d">bitsPerPixel</a>, rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#aa0f78eb9b36ba248c2e368684903ae44">bytesPerPixel</a>);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; width = rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#ab5d115d8f9fc675f2419d38cdd424ce6">width</a>;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; height = rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#a9274a9d62e527ca25683af512505242e">height</a>;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; <span class="keywordflow">if</span> (rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#acc352444c31929a1ef7aee2a0e37827d">bitsPerPixel</a> == 32)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; cairo_format = CAIRO_FORMAT_ARGB32;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#acc352444c31929a1ef7aee2a0e37827d">bitsPerPixel</a> == 24)</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; cairo_format = CAIRO_FORMAT_RGB24;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; cairo_format = CAIRO_FORMAT_RGB16_565;</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; stride = cairo_format_stride_for_width(cairo_format, width);</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; srcsurface = cairo_image_surface_create_for_data(rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#a757f692624e3e110eaa5bf0c05ac2a6c">buffer</a>, cairo_format, width, height, stride);</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; <span class="comment">// Transfer the PixBuf in the main clipboard selection</span></div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; <span class="keywordflow">if</span> (denyclip &amp;&amp; (g_strcmp0(denyclip, <span class="stringliteral">&quot;true&quot;</span>)))</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; gtk_clipboard_set_image(c, gdk_pixbuf_get_from_surface(</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; srcsurface, 0, 0, width, height));</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24, width, height);</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; cr = cairo_create(surface);</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; cairo_set_source_surface(cr, srcsurface, 0, 0);</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160; cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160; cairo_paint(cr);</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160; cairo_surface_destroy(srcsurface);</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; free(rpsd.<a class="code" href="struct___remmina_plugin_screenshot_data.html#a757f692624e3e110eaa5bf0c05ac2a6c">buffer</a>);</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; <span class="comment">// The plugin is not releasing us a screenshot, just try to catch one via GTK</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; <span class="comment">/* Warn the user if image is distorted */</span></div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a1f3920f6710917d6944491ae1d7b1250">plugin_can_scale</a> &amp;&amp;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(cnnobj, NULL, NULL) == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>) {</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; _(<span class="stringliteral">&quot;Turn off scaling to avoid screenshot distortion.&quot;</span>));</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; }</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; <span class="comment">// Get the screenshot.</span></div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; active_window = gtk_widget_get_window(GTK_WIDGET(gp));</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; <span class="comment">// width = gdk_window_get_width(gtk_widget_get_window(GTK_WIDGET(cnnobj-&gt;cnnwin)));</span></div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160; width = gdk_window_get_width(active_window);</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; <span class="comment">// height = gdk_window_get_height(gtk_widget_get_window(GTK_WIDGET(cnnobj-&gt;cnnwin)));</span></div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160; height = gdk_window_get_height(active_window);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; screenshot = gdk_pixbuf_get_from_window(active_window, 0, 0, width, height);</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; <span class="keywordflow">if</span> (screenshot == NULL)</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; g_print(<span class="stringliteral">&quot;gdk_pixbuf_get_from_window failed\n&quot;</span>);</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; <span class="comment">// Transfer the PixBuf in the main clipboard selection</span></div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; <span class="keywordflow">if</span> (denyclip &amp;&amp; (g_strcmp0(denyclip, <span class="stringliteral">&quot;true&quot;</span>)))</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160; gtk_clipboard_set_image(c, screenshot);</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <span class="comment">// Prepare the destination Cairo surface.</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; surface = cairo_image_surface_create(CAIRO_FORMAT_RGB24, width, height);</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; cr = cairo_create(surface);</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; <span class="comment">// Copy the source pixbuf to the surface and paint it.</span></div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; gdk_cairo_set_source_pixbuf(cr, screenshot, 0, 0);</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; cairo_paint(cr);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160; <span class="comment">// Deallocate screenshot pixbuf</span></div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160; g_object_unref(screenshot);</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; }</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <span class="comment">//home/antenore/Pictures/remmina_%p_%h_%Y %m %d-%H%M%S.png pngname</span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; <span class="comment">//home/antenore/Pictures/remmina_st_ _2018 9 24-151958.240374.png</span></div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160;</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; pngstr = g_string_new(g_strdup_printf(<span class="stringliteral">&quot;%s/%s.png&quot;</span>,</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a>,</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a>));</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%p&quot;</span>,</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%h&quot;</span>,</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%Y&quot;</span>,</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%d&quot;</span>, g_date_time_get_year(date)));</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%m&quot;</span>, g_strdup_printf(<span class="stringliteral">&quot;%02d&quot;</span>,</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; g_date_time_get_month(date)));</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%d&quot;</span>,</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%02d&quot;</span>, g_date_time_get_day_of_month(date)));</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%H&quot;</span>,</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%02d&quot;</span>, g_date_time_get_hour(date)));</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%M&quot;</span>,</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%02d&quot;</span>, g_date_time_get_minute(date)));</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(pngstr, <span class="stringliteral">&quot;%S&quot;</span>,</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; g_strdup_printf(<span class="stringliteral">&quot;%02d&quot;</span>, g_date_time_get_second(date)));</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; g_date_time_unref(date);</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; pngname = g_string_free(pngstr, FALSE);</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160;</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160; cairo_surface_write_to_png(surface, pngname);</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160;</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; <span class="comment">/* send a desktop notification */</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; <span class="keywordflow">if</span> (g_file_test(pngname, G_FILE_TEST_EXISTS))</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-screenshot-is-ready-id&quot;</span>, _(<span class="stringliteral">&quot;Screenshot taken&quot;</span>), pngname);</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; <span class="comment">//Clean up and return.</span></div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; cairo_destroy(cr);</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; cairo_surface_destroy(surface);</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;}</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;</div><div class="line"><a name="l02275"></a><span class="lineno"><a class="line" href="rcw_8c.html#af90b8a8028b16a89a43f5377df5885c8"> 2275</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#af90b8a8028b16a89a43f5377df5885c8">rcw_toolbar_minimize</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;{</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; gtk_window_iconify(GTK_WINDOW(cnnwin));</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;}</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;</div><div class="line"><a name="l02286"></a><span class="lineno"><a class="line" href="rcw_8c.html#a89a2fc0dfcdc5e260cc3af191a7115ee"> 2286</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a89a2fc0dfcdc5e260cc3af191a7115ee">rcw_toolbar_disconnect</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;{</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; <a class="code" href="rcw_8c.html#a2690c97a972e458dea9f5c0566ea50b9">rco_disconnect_current_page</a>(cnnobj);</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;}</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;</div><div class="line"><a name="l02297"></a><span class="lineno"><a class="line" href="rcw_8c.html#a66d25df4427d16304571025bc6f88679"> 2297</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a66d25df4427d16304571025bc6f88679">rcw_toolbar_grab</a>(GtkToolItem *toggle, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160;{</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; gboolean capture;</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring)</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160;</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; capture = gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(toggle));</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;keyboard_grab&quot;</span>, capture);</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <span class="keywordflow">if</span> (capture &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>) {</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: Grabbing for button\n&quot;</span>);</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; <a class="code" href="rcw_8c.html#a362cc1f55ba8365460c2ebfc0528e01c">rcw_keyboard_grab</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_entered)</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160; <a class="code" href="rcw_8c.html#ac3e012d5e499aebb8fcbef55f505f2f3">rcw_pointer_grab</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; }</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160;}</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160;</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;<span class="keyword">static</span> GtkWidget *</div><div class="line"><a name="l02322"></a><span class="lineno"><a class="line" href="rcw_8c.html#a2caca4bce3a8ec22a99ede169746af86"> 2322</a></span>&#160;<a class="code" href="rcw_8c.html#a2caca4bce3a8ec22a99ede169746af86">rcw_create_toolbar</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, gint mode)</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160;{</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; GtkWidget *toolbar;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; GtkToolItem *toolitem;</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; GtkWidget *arrow;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; GdkDisplay *display;</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160; gint n_monitors;</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160;</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; display = gdk_display_get_default();</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; n_monitors = gdk_display_get_n_monitors(display);</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin);</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160;</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; priv-&gt;toolbar_is_reconfiguring = TRUE;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160;</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; toolbar = gtk_toolbar_new();</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; gtk_widget_show(toolbar);</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160; gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS);</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; <span class="comment">/* Main actions */</span></div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; <span class="comment">/* Menu */</span></div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;view-more-symbolic&quot;</span>);</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem), _(<span class="stringliteral">&quot;_Menu&quot;</span>));</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; gtk_tool_item_set_tooltip_text(toolitem, _(<span class="stringliteral">&quot;Menu&quot;</span>));</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ae6aeab2ffe3fe798cc017e02f8781358">rcw_toolbar_menu</a>), cnnwin);</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; priv-&gt;toolitem_menu = toolitem;</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; <span class="comment">/* Open Main window */</span></div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; toolitem = gtk_tool_button_new(NULL, <span class="stringliteral">&quot;Open Remmina Main window&quot;</span>);</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;go-home-symbolic&quot;</span>);</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; gtk_tool_item_set_tooltip_text(toolitem, _(<span class="stringliteral">&quot;Open the Remmina main window&quot;</span>));</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a2b1c419af147227fab3ad9a3ce82f3af">rcw_toolbar_open_main</a>), cnnwin);</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160; priv-&gt;toolitem_new = toolitem;</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; <span class="comment">/* Duplicate session */</span></div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; toolitem = gtk_tool_button_new(NULL, <span class="stringliteral">&quot;Duplicate connection&quot;</span>);</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-duplicate-symbolic&quot;</span>);</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; gtk_tool_item_set_tooltip_text(toolitem, _(<span class="stringliteral">&quot;Duplicate current connection&quot;</span>));</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#aef19b6cf1ddcd2f21eebca7f78890ef3">rcw_toolbar_duplicate</a>), cnnwin);</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; <span class="keywordflow">if</span> (!cnnobj)</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), FALSE);</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160;</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160; priv-&gt;toolitem_duplicate = toolitem;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; <span class="comment">/* Separator */</span></div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; toolitem = gtk_separator_tool_item_new();</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; <span class="comment">/* Auto-Fit */</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; toolitem = gtk_tool_button_new(NULL, NULL);</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-fit-window-symbolic&quot;</span>);</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Resize the window to fit in remote resolution&quot;</span>),</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a>, 0);</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#adf4d204cce70b6609c15c1ca95082a43">rcw_toolbar_autofit</a>), cnnwin);</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; priv-&gt;toolitem_autofit = toolitem;</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160;</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; <span class="comment">/* Fullscreen toggle */</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-fullscreen-symbolic&quot;</span>);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Toggle fullscreen mode&quot;</span>),</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a>, 0);</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; priv-&gt;toolitem_fullscreen = toolitem;</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a>) {</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toolitem), FALSE);</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toolitem), mode != <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#af2f5c8716d84e6223a4b2cbc9efc532b">rcw_toolbar_fullscreen</a>), cnnwin);</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; }</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160;</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; <span class="comment">/* Fullscreen drop-down options */</span></div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; toolitem = gtk_tool_item_new();</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; widget = gtk_toggle_button_new();</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; gtk_container_set_border_width(GTK_CONTAINER(widget), 0);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NONE);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; gtk_widget_set_focus_on_click(GTK_WIDGET(widget), FALSE);</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a>)</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; gtk_widget_set_name(widget, <span class="stringliteral">&quot;remmina-small-button&quot;</span>);</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160;</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; gtk_button_set_focus_on_click(GTK_BUTTON(widget), FALSE);</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; gtk_container_add(GTK_CONTAINER(toolitem), widget);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 14, 0)</span></div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; arrow = gtk_image_new_from_icon_name(<span class="stringliteral">&quot;org.remmina.Remmina-pan-down-symbolic&quot;</span>, GTK_ICON_SIZE_SMALL_TOOLBAR);</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160; arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE);</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; gtk_widget_show(arrow);</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; gtk_container_add(GTK_CONTAINER(widget), arrow);</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a2258ee24612affeef60abd2f18107b2c">rcw_toolbar_fullscreen_option</a>), cnnwin);</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; priv-&gt;fullscreen_option_button = widget;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <span class="keywordflow">if</span> (mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>)</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; <span class="comment">/* Multi monitor */</span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="keywordflow">if</span> (n_monitors &gt; 1) {</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-multi-monitor-symbolic&quot;</span>);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Multi monitor&quot;</span>),</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a>, 0);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a5d41c895ab988890cfcd442afdb0d7b9">rcw_toolbar_multi_monitor_mode</a>), cnnwin);</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; priv-&gt;toolitem_multimon = toolitem;</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; <span class="keywordflow">if</span> (!cnnobj)</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), FALSE);</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toolitem),</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, FALSE));</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; }</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160;</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; <span class="comment">/* Dynamic Resolution Update */</span></div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-dynres-symbolic&quot;</span>);</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Toggle dynamic resolution update&quot;</span>),</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a">shortcutkey_dynres</a>, 0);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ab80a8d73f4a051adb133a847908293e9">rcw_toolbar_dynres</a>), cnnwin);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; priv-&gt;toolitem_dynres = toolitem;</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; <span class="comment">/* Scaler button */</span></div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-scale-symbolic&quot;</span>);</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Toggle scaled mode&quot;</span>), remmina_pref.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a>, 0);</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a17bcf18cd1834d594b6e8f9777c63907">rcw_toolbar_scaled_mode</a>), cnnwin);</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; priv-&gt;toolitem_scale = toolitem;</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; <span class="comment">/* Scaler aspect ratio dropdown menu */</span></div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; toolitem = gtk_tool_item_new();</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; widget = gtk_toggle_button_new();</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; gtk_container_set_border_width(GTK_CONTAINER(widget), 0);</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NONE);</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160; gtk_widget_set_focus_on_click(GTK_WIDGET(widget), FALSE);</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; gtk_button_set_focus_on_click(GTK_BUTTON(widget), FALSE);</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a>)</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; gtk_widget_set_name(widget, <span class="stringliteral">&quot;remmina-small-button&quot;</span>);</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; gtk_container_add(GTK_CONTAINER(toolitem), widget);</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 14, 0)</span></div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; arrow = gtk_image_new_from_icon_name(<span class="stringliteral">&quot;org.remmina.Remmina-pan-down-symbolic&quot;</span>, GTK_ICON_SIZE_SMALL_TOOLBAR);</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE);</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; gtk_widget_show(arrow);</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; gtk_container_add(GTK_CONTAINER(widget), arrow);</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ae8409c04e40ec792c1f477360bfcd6ba">rcw_toolbar_scaler_option</a>), cnnwin);</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; priv-&gt;scaler_option_button = widget;</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; <span class="comment">/* Separator */</span></div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; toolitem = gtk_separator_tool_item_new();</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; <span class="comment">/* Switch tabs */</span></div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-switch-page-symbolic&quot;</span>);</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Switch tab pages&quot;</span>), remmina_pref.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a>,</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a>);</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a4ecafd7f885c5953e5c3b28f84d6af79">rcw_toolbar_switch_page</a>), cnnwin);</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; priv-&gt;toolitem_switch_page = toolitem;</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; <span class="comment">/* Grab keyboard button */</span></div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-keyboard-symbolic&quot;</span>);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Grab all keyboard events&quot;</span>),</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a>, 0);</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a66d25df4427d16304571025bc6f88679">rcw_toolbar_grab</a>), cnnwin);</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; priv-&gt;toolitem_grab = toolitem;</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; <span class="keywordflow">if</span> (!cnnobj)</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), FALSE);</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; <span class="keyword">const</span> gchar *protocol = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(protocol, <span class="stringliteral">&quot;SFTP&quot;</span>) == 0 || g_strcmp0(protocol, <span class="stringliteral">&quot;SSH&quot;</span>) == 0)</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), FALSE);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; }</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; <span class="comment">/* Preferences */</span></div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-preferences-system-symbolic&quot;</span>);</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; gtk_tool_item_set_tooltip_text(toolitem, _(<span class="stringliteral">&quot;Preferences&quot;</span>));</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ab1f5606917a73b7048b748ac33668523">rcw_toolbar_preferences</a>), cnnwin);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; priv-&gt;toolitem_preferences = toolitem;</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; <span class="comment">/* Tools */</span></div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; toolitem = gtk_toggle_tool_button_new();</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-system-run-symbolic&quot;</span>);</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; gtk_tool_button_set_label(GTK_TOOL_BUTTON(toolitem), _(<span class="stringliteral">&quot;_Tools&quot;</span>));</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; gtk_tool_item_set_tooltip_text(toolitem, _(<span class="stringliteral">&quot;Tools&quot;</span>));</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;toggled&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ab8d75ff6c88b131e1bf5ddc15d7de3e2">rcw_toolbar_tools</a>), cnnwin);</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; priv-&gt;toolitem_tools = toolitem;</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; <span class="comment">/* Separator */</span></div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; toolitem = gtk_separator_tool_item_new();</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160;</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; toolitem = gtk_tool_button_new(NULL, <span class="stringliteral">&quot;_Screenshot&quot;</span>);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-camera-photo-symbolic&quot;</span>);</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Screenshot&quot;</span>), remmina_pref.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a>, 0);</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a93650a12c555e40554b8b8e7382f42a3">rcw_toolbar_screenshot</a>), cnnwin);</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; priv-&gt;toolitem_screenshot = toolitem;</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; <span class="comment">/* Separator */</span></div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; toolitem = gtk_separator_tool_item_new();</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; <span class="comment">/* Minimize */</span></div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; toolitem = gtk_tool_button_new(NULL, <span class="stringliteral">&quot;_Bottom&quot;</span>);</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-go-bottom-symbolic&quot;</span>);</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Minimize window&quot;</span>), remmina_pref.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a>, 0);</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#af90b8a8028b16a89a43f5377df5885c8">rcw_toolbar_minimize</a>), cnnwin);</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a>)</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), FALSE);</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <span class="comment">/* Disconnect */</span></div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; toolitem = gtk_tool_button_new(NULL, <span class="stringliteral">&quot;_Disconnect&quot;</span>);</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), <span class="stringliteral">&quot;org.remmina.Remmina-disconnect-symbolic&quot;</span>);</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; <a class="code" href="rcw_8c.html#acfa15d238ac64558487dee3c320c3701">rcw_set_tooltip</a>(GTK_WIDGET(toolitem), _(<span class="stringliteral">&quot;Disconnect&quot;</span>), remmina_pref.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a>, 0);</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; gtk_toolbar_insert(GTK_TOOLBAR(toolbar), toolitem, -1);</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; gtk_widget_show(GTK_WIDGET(toolitem));</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; g_signal_connect(G_OBJECT(toolitem), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a89a2fc0dfcdc5e260cc3af191a7115ee">rcw_toolbar_disconnect</a>), cnnwin);</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; priv-&gt;toolbar_is_reconfiguring = FALSE;</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; <span class="keywordflow">return</span> toolbar;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;}</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;</div><div class="line"><a name="l02594"></a><span class="lineno"><a class="line" href="rcw_8c.html#afc62938ff8bcaad6b743f50ecf36d292"> 2594</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#afc62938ff8bcaad6b743f50ecf36d292">rcw_place_toolbar</a>(GtkToolbar *toolbar, GtkGrid *grid, GtkWidget *sibling, <span class="keywordtype">int</span> toolbar_placement)</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;{</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; <span class="comment">/* Place the toolbar inside the grid and set its orientation */</span></div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160; <span class="keywordflow">if</span> (toolbar_placement == <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a> || toolbar_placement == <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27">TOOLBAR_PLACEMENT_RIGHT</a>)</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; gtk_orientable_set_orientation(GTK_ORIENTABLE(toolbar), GTK_ORIENTATION_VERTICAL);</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; gtk_orientable_set_orientation(GTK_ORIENTABLE(toolbar), GTK_ORIENTATION_HORIZONTAL);</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; <span class="keywordflow">switch</span> (toolbar_placement) {</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f">TOOLBAR_PLACEMENT_TOP</a>:</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; gtk_widget_set_hexpand(GTK_WIDGET(toolbar), TRUE);</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; gtk_widget_set_vexpand(GTK_WIDGET(toolbar), FALSE);</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; gtk_grid_attach_next_to(GTK_GRID(grid), GTK_WIDGET(toolbar), sibling, GTK_POS_TOP, 1, 1);</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27">TOOLBAR_PLACEMENT_RIGHT</a>:</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160; gtk_widget_set_vexpand(GTK_WIDGET(toolbar), TRUE);</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; gtk_widget_set_hexpand(GTK_WIDGET(toolbar), FALSE);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; gtk_grid_attach_next_to(GTK_GRID(grid), GTK_WIDGET(toolbar), sibling, GTK_POS_RIGHT, 1, 1);</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076">TOOLBAR_PLACEMENT_BOTTOM</a>:</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; gtk_widget_set_hexpand(GTK_WIDGET(toolbar), TRUE);</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; gtk_widget_set_vexpand(GTK_WIDGET(toolbar), FALSE);</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; gtk_grid_attach_next_to(GTK_GRID(grid), GTK_WIDGET(toolbar), sibling, GTK_POS_BOTTOM, 1, 1);</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a>:</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160; gtk_widget_set_vexpand(GTK_WIDGET(toolbar), TRUE);</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160; gtk_widget_set_hexpand(GTK_WIDGET(toolbar), FALSE);</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; gtk_grid_attach_next_to(GTK_GRID(grid), GTK_WIDGET(toolbar), sibling, GTK_POS_LEFT, 1, 1);</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; }</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160;}</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;</div><div class="line"><a name="l02628"></a><span class="lineno"><a class="line" href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726"> 2628</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726">rco_update_toolbar</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160;{</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; GtkToolItem *toolitem;</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; gboolean bval, dynres_avail, scale_avail;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; gboolean test_floating_toolbar;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode;</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; priv-&gt;toolbar_is_reconfiguring = TRUE;</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160;</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; <a class="code" href="rcw_8c.html#a23692809213a6dfe683afe3d0dece3aa">rco_update_toolbar_autofit_button</a>(cnnobj);</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; toolitem = priv-&gt;toolitem_switch_page;</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a>)</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; bval = FALSE;</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; bval = (gtk_notebook_get_n_pages(GTK_NOTEBOOK(priv-&gt;notebook)) &gt; 1);</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), bval);</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>-&gt;filename)</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;toolitem_duplicate), TRUE);</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;toolitem_duplicate), FALSE);</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; scalemode = <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(cnnobj, &amp;dynres_avail, &amp;scale_avail);</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;toolitem_dynres), dynres_avail &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;toolitem_scale), scale_avail &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160; <span class="keywordflow">switch</span> (scalemode) {</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160; <span class="keywordflow">case</span> <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>:</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_dynres), FALSE);</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_scale), FALSE);</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;scaler_option_button), FALSE);</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; <span class="keywordflow">case</span> <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>:</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_dynres), FALSE);</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_scale), TRUE);</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;scaler_option_button), TRUE &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; <span class="keywordflow">case</span> <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>:</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_dynres), TRUE);</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_scale), FALSE);</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;scaler_option_button), FALSE);</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; }</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; <span class="comment">/* REMMINA_PROTOCOL_FEATURE_TYPE_MULTIMON */</span></div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; toolitem = priv-&gt;toolitem_multimon;</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; <span class="keywordflow">if</span> (toolitem) {</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160; gint hasmultimon = <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5af727b997d174217f949eb7364704f501">REMMINA_PROTOCOL_FEATURE_TYPE_MULTIMON</a>);</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toolitem),</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, FALSE));</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), hasmultimon);</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; }</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; toolitem = priv-&gt;toolitem_grab;</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toolitem),</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;keyboard_grab&quot;</span>, FALSE));</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <span class="keyword">const</span> gchar *protocol = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(protocol, <span class="stringliteral">&quot;SFTP&quot;</span>) == 0 || g_strcmp0(protocol, <span class="stringliteral">&quot;SSH&quot;</span>) == 0) {</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), FALSE);</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toolitem), FALSE);</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;keyboard_grab&quot;</span>, FALSE);</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; }</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160;</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; toolitem = priv-&gt;toolitem_preferences;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; bval = <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527">REMMINA_PROTOCOL_FEATURE_TYPE_PREF</a>);</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), bval &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; toolitem = priv-&gt;toolitem_tools;</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; bval = <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>);</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(toolitem), bval &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(priv-&gt;toolitem_screenshot), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a>);</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160;</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; gtk_window_set_title(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160;</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; test_floating_toolbar = (priv-&gt;floating_toolbar_widget != NULL);</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; <span class="keywordflow">if</span> (test_floating_toolbar) {</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; <span class="keyword">const</span> gchar *str = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>);</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; <span class="keyword">const</span> gchar *format;</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; GdkRGBA rgba;</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; gchar *bg;</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; bg = g_strdup(remmina_pref.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a>);</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160; <span class="keywordflow">if</span> (!gdk_rgba_parse(&amp;rgba, bg)) {</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s cannot be parsed as a color&quot;</span>, bg);</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; bg = g_strdup(<span class="stringliteral">&quot;#00FF00&quot;</span>);</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Using %s as background color&quot;</span>, bg);</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; }</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;keyboard_grab&quot;</span>, FALSE)) {</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;grab_color_switch&quot;</span>))</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; format = g_strconcat(<span class="stringliteral">&quot;&lt;span bgcolor=\&quot;&quot;</span>, bg, <span class="stringliteral">&quot;\&quot; size=\&quot;large\&quot;&gt;&lt;b&gt;(G:ON) - \%s&lt;/b&gt;&lt;/span&gt;&quot;</span>, NULL);</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; format = <span class="stringliteral">&quot;&lt;big&gt;&lt;b&gt;(G:ON) - \%s&lt;/b&gt;&lt;/big&gt;&quot;</span>;</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; format = <span class="stringliteral">&quot;&lt;big&gt;&lt;b&gt;(G:OFF) - \%s&lt;/b&gt;&lt;/big&gt;&quot;</span>;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; }</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160; gchar *markup;</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; markup = g_markup_printf_escaped(format, str);</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; gtk_label_set_markup(GTK_LABEL(priv-&gt;floating_toolbar_label), markup);</div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160; g_free(markup);</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; g_free(bg);</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160; }</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; priv-&gt;toolbar_is_reconfiguring = FALSE;</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160;}</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;</div><div class="line"><a name="l02748"></a><span class="lineno"><a class="line" href="rcw_8c.html#a23d848e45205a65618c84bb70b882b3f"> 2748</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a23d848e45205a65618c84bb70b882b3f">rcw_set_toolbar_visibility</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;{</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160;</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160; <span class="keywordflow">if</span> (priv-&gt;view_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>) {</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>)</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160; gtk_widget_hide(priv-&gt;toolbar);</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160; gtk_widget_show(priv-&gt;toolbar);</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; }</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;}</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02762"></a><span class="lineno"><a class="line" href="rcw_8c.html#a0c2979e582fbc5cea1557d086187854f"> 2762</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a0c2979e582fbc5cea1557d086187854f">print_crossing_event</a>(GdkEventCrossing *event) {</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: --- Crossing event detail: &quot;</span>);</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; <span class="keywordflow">switch</span> (event-&gt;detail) {</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; <span class="keywordflow">case</span> GDK_NOTIFY_ANCESTOR: printf(<span class="stringliteral">&quot;GDK_NOTIFY_ANCESTOR&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160; <span class="keywordflow">case</span> GDK_NOTIFY_VIRTUAL: printf(<span class="stringliteral">&quot;GDK_NOTIFY_VIRTUAL&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160; <span class="keywordflow">case</span> GDK_NOTIFY_NONLINEAR: printf(<span class="stringliteral">&quot;GDK_NOTIFY_NONLINEAR&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160; <span class="keywordflow">case</span> GDK_NOTIFY_NONLINEAR_VIRTUAL: printf(<span class="stringliteral">&quot;GDK_NOTIFY_NONLINEAR_VIRTUAL&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; <span class="keywordflow">case</span> GDK_NOTIFY_UNKNOWN: printf(<span class="stringliteral">&quot;GDK_NOTIFY_UNKNOWN&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160; <span class="keywordflow">case</span> GDK_NOTIFY_INFERIOR: printf(<span class="stringliteral">&quot;GDK_NOTIFY_INFERIOR&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; <span class="keywordflow">default</span>: printf(<span class="stringliteral">&quot;unknown&quot;</span>);</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160; }</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160; printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: --- Crossing event mode=&quot;</span>);</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; <span class="keywordflow">switch</span> (event-&gt;mode) {</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_NORMAL: printf(<span class="stringliteral">&quot;GDK_CROSSING_NORMAL&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_GRAB: printf(<span class="stringliteral">&quot;GDK_CROSSING_GRAB&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_UNGRAB: printf(<span class="stringliteral">&quot;GDK_CROSSING_UNGRAB&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_GTK_GRAB: printf(<span class="stringliteral">&quot;GDK_CROSSING_GTK_GRAB&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_GTK_UNGRAB: printf(<span class="stringliteral">&quot;GDK_CROSSING_GTK_UNGRAB&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_STATE_CHANGED: printf(<span class="stringliteral">&quot;GDK_CROSSING_STATE_CHANGED&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_TOUCH_BEGIN: printf(<span class="stringliteral">&quot;GDK_CROSSING_TOUCH_BEGIN&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_TOUCH_END: printf(<span class="stringliteral">&quot;GDK_CROSSING_TOUCH_END&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160; <span class="keywordflow">case</span> GDK_CROSSING_DEVICE_SWITCH: printf(<span class="stringliteral">&quot;GDK_CROSSING_DEVICE_SWITCH&quot;</span>); <span class="keywordflow">break</span>;</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160; <span class="keywordflow">default</span>: printf(<span class="stringliteral">&quot;unknown&quot;</span>);</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; }</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160; printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160;}</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160;</div><div class="line"><a name="l02791"></a><span class="lineno"><a class="line" href="rcw_8c.html#a961e539a6f6ccbe73a301869c6960ab6"> 2791</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a961e539a6f6ccbe73a301869c6960ab6">rcw_floating_toolbar_on_enter</a>(GtkWidget *widget, GdkEventCrossing *event,</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;{</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, TRUE);</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160;}</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160;</div><div class="line"><a name="l02799"></a><span class="lineno"><a class="line" href="rcw_8c.html#a3fa4224150aace5830b6d93cdc883fd8"> 2799</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a3fa4224150aace5830b6d93cdc883fd8">rcw_floating_toolbar_on_leave</a>(GtkWidget *widget, GdkEventCrossing *event,</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160;{</div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160; <span class="keywordflow">if</span> (event-&gt;detail != GDK_NOTIFY_INFERIOR)</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;}</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160;</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160;</div><div class="line"><a name="l02809"></a><span class="lineno"><a class="line" href="rcw_8c.html#adf9a57dc0cdd6261bef9a92df145c80c"> 2809</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#adf9a57dc0cdd6261bef9a92df145c80c">rcw_on_enter_notify_event</a>(GtkWidget *widget, GdkEventCrossing *event,</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; gpointer user_data)</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;{</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: enter-notify-event on rcw received\n&quot;</span>);</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; <a class="code" href="rcw_8c.html#a0c2979e582fbc5cea1557d086187854f">print_crossing_event</a>(event);</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;}</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160;</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160;</div><div class="line"><a name="l02822"></a><span class="lineno"><a class="line" href="rcw_8c.html#a27f545a9630a481f4df747478cd227fb"> 2822</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a27f545a9630a481f4df747478cd227fb">rcw_on_leave_notify_event</a>(GtkWidget *widget, GdkEventCrossing *event,</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160; gpointer user_data)</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160;{</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget;</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: leave-notify-event on rcw received\n&quot;</span>);</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160; <a class="code" href="rcw_8c.html#a0c2979e582fbc5cea1557d086187854f">print_crossing_event</a>(event);</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160;</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; <span class="keywordflow">if</span> (event-&gt;mode != GDK_CROSSING_NORMAL &amp;&amp; event-&gt;mode != GDK_CROSSING_UNGRAB) {</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: ignored because mode is not GDK_CROSSING_NORMAL GDK_CROSSING_UNGRAB\n&quot;</span>);</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160; }</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid) {</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; g_source_remove(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid);</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid = 0;</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; }</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160;</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160; <span class="comment">/* Workaround for https://gitlab.gnome.org/GNOME/mutter/-/issues/2450#note_1586570 */</span></div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; <span class="keywordflow">if</span> (event-&gt;mode != GDK_CROSSING_UNGRAB) {</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160; <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(cnnwin);</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; <a class="code" href="rcw_8c.html#a177a2ece80374b29bc26595fff8bed42">rcw_pointer_ungrab</a>(cnnwin);</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: not ungrabbing, this event seems to be an unwanted event from GTK\n&quot;</span>);</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160; }</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160;</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160;}</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160;</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160;</div><div class="line"><a name="l02859"></a><span class="lineno"><a class="line" href="rcw_8c.html#ad45e51f5a72b7ffe9bca86d336563757"> 2859</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#ad45e51f5a72b7ffe9bca86d336563757">rco_leave_protocol_widget</a>(GtkWidget *widget, GdkEventCrossing *event,</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160;{</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: received leave event on RCO.\n&quot;</span>);</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; <a class="code" href="rcw_8c.html#a0c2979e582fbc5cea1557d086187854f">print_crossing_event</a>(event);</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid) {</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; g_source_remove(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid);</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid = 0;</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160; }</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160;</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_entered = FALSE;</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160;</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160; <span class="comment">/* Ungrab only if the leave is due to normal mouse motion and not to an inferior */</span></div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; <span class="keywordflow">if</span> (event-&gt;mode == GDK_CROSSING_NORMAL &amp;&amp; event-&gt;detail != GDK_NOTIFY_INFERIOR)</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;}</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160;</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;</div><div class="line"><a name="l02884"></a><span class="lineno"><a class="line" href="rcw_8c.html#a0650f31e99dd15c719328345411deba0"> 2884</a></span>&#160;gboolean <a class="code" href="rcw_8c.html#a0650f31e99dd15c719328345411deba0">rco_enter_protocol_widget</a>(GtkWidget *widget, GdkEventCrossing *event,</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160;{</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; gboolean active;</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160;</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: %s: enter on protocol widget event received\n&quot;</span>, __func__);</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; <a class="code" href="rcw_8c.html#a0c2979e582fbc5cea1557d086187854f">print_crossing_event</a>(event);</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; <span class="keywordflow">if</span> (!priv-&gt;sticky &amp;&amp; event-&gt;mode == GDK_CROSSING_NORMAL)</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, FALSE);</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160;</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; priv-&gt;pointer_entered = TRUE;</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; <span class="keywordflow">if</span> (event-&gt;mode == GDK_CROSSING_UNGRAB) {</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160; <span class="comment">// Someone steal our grab, take note and do not attempt to regrab</span></div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;kbcaptured = FALSE;</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_captured = FALSE;</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; }</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; <span class="comment">/* Check if we need grabbing */</span></div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; active = gtk_window_is_active(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>));</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;keyboard_grab&quot;</span>, FALSE) &amp;&amp; active) {</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; <a class="code" href="rcw_8c.html#a362cc1f55ba8365460c2ebfc0528e01c">rcw_keyboard_grab</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; <a class="code" href="rcw_8c.html#ac3e012d5e499aebb8fcbef55f505f2f3">rcw_pointer_grab</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160; }</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160;</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160;}</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160;</div><div class="line"><a name="l02918"></a><span class="lineno"><a class="line" href="rcw_8c.html#a5472fed2058a6597c3c7b7c91e98a73e"> 2918</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a5472fed2058a6597c3c7b7c91e98a73e">focus_in_delayed_grab</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160;{</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160;</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: %s\n&quot;</span>, __func__);</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pointer_entered) {</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: delayed requesting kb and pointer grab, because of pointer inside\n&quot;</span>);</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; <a class="code" href="rcw_8c.html#a362cc1f55ba8365460c2ebfc0528e01c">rcw_keyboard_grab</a>(cnnwin);</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; <a class="code" href="rcw_8c.html#ac3e012d5e499aebb8fcbef55f505f2f3">rcw_pointer_grab</a>(cnnwin);</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; }</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: %s not grabbing because pointer_entered is false\n&quot;</span>, __func__);</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; }</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid = 0;</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160;}</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160;</div><div class="line"><a name="l02941"></a><span class="lineno"><a class="line" href="rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3"> 2941</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3">rcw_focus_in</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160;{</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; <span class="comment">/* This function is the default signal handler for focus-in-event,</span></div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160;<span class="comment"> * but can also be called after a window focus state change event</span></div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160;<span class="comment"> * from rcw_state_event(). So expect to be called twice</span></div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160;<span class="comment"> * when cnnwin gains the focus */</span></div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160;</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160;</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160;</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; <span class="keywordflow">if</span> (cnnobj &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a> &amp;&amp; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;keyboard_grab&quot;</span>, FALSE)) {</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: Received focus in on rcw, grabbing enabled: requesting kb grab, delayed\n&quot;</span>);</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid == 0)</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;delayed_grab_eventsourceid = g_timeout_add(300, (GSourceFunc)<a class="code" href="rcw_8c.html#a5472fed2058a6597c3c7b7c91e98a73e">focus_in_delayed_grab</a>, cnnwin);</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; }</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: Received focus in on rcw, but a condition will prevent to grab\n&quot;</span>);</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160; }</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;}</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;</div><div class="line"><a name="l02967"></a><span class="lineno"><a class="line" href="rcw_8c.html#a010af24147287ef89f605e71ef315475"> 2967</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a010af24147287ef89f605e71ef315475">rcw_focus_out</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;{</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; <span class="comment">/* This function is the default signal handler for focus-out-event,</span></div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160;<span class="comment"> * but can also be called after a window focus state change event</span></div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160;<span class="comment"> * from rcw_state_event(). So expect to be called twice</span></div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;<span class="comment"> * when cnnwin loses the focus */</span></div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160;</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160;</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(cnnwin);</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;hostkey_activated = FALSE;</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160;</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160; <span class="keywordflow">if</span> (REMMINA_IS_SCROLLED_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>))</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; <a class="code" href="remmina__scrolled__viewport_8c.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport_remove_motion</a>(REMMINA_SCROLLED_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>));</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a> &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a0658dd6adcfaf5cb52d6d99c97c352d1">REMMINA_PROTOCOL_FEATURE_TYPE_UNFOCUS</a>, 0);</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160;}</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160;</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l02991"></a><span class="lineno"><a class="line" href="rcw_8c.html#a423aaf9a4d3eed6dac67de5a8cc24a18"> 2991</a></span>&#160;<a class="code" href="rcw_8c.html#a423aaf9a4d3eed6dac67de5a8cc24a18">rcw_floating_toolbar_hide</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160;{</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160;</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; priv-&gt;hidetb_eventsource = 0;</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, FALSE);</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160;}</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160;</div><div class="line"><a name="l03001"></a><span class="lineno"><a class="line" href="rcw_8c.html#a2f4b8ba7f51a4bf6e12a585177d55758"> 3001</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a2f4b8ba7f51a4bf6e12a585177d55758">rcw_floating_toolbar_on_scroll</a>(GtkWidget *widget, GdkEventScroll *event,</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160;{</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160;</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; <span class="keywordtype">int</span> opacity;</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160;</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin);</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; <span class="keywordflow">if</span> (!cnnobj)</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160;</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; opacity = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;toolbar_opacity&quot;</span>, 0);</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; <span class="keywordflow">switch</span> (event-&gt;direction) {</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160; <span class="keywordflow">case</span> GDK_SCROLL_UP:</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160; <span class="keywordflow">if</span> (opacity &gt; 0) {</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;toolbar_opacity&quot;</span>, opacity - 1);</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; <a class="code" href="rcw_8c.html#a5929f8c1c1513c0fd75a88cd4721b8a4">rcw_update_toolbar_opacity</a>(cnnwin);</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160; }</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; <span class="keywordflow">case</span> GDK_SCROLL_DOWN:</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; <span class="keywordflow">if</span> (opacity &lt; TOOLBAR_OPACITY_LEVEL) {</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;toolbar_opacity&quot;</span>, opacity + 1);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; <a class="code" href="rcw_8c.html#a5929f8c1c1513c0fd75a88cd4721b8a4">rcw_update_toolbar_opacity</a>(cnnwin);</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; }</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 4, 0)</span></div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160; <span class="keywordflow">case</span> GDK_SCROLL_SMOOTH:</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; <span class="keywordflow">if</span> (event-&gt;delta_y &lt; 0 &amp;&amp; opacity &gt; 0) {</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;toolbar_opacity&quot;</span>, opacity - 1);</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; <a class="code" href="rcw_8c.html#a5929f8c1c1513c0fd75a88cd4721b8a4">rcw_update_toolbar_opacity</a>(cnnwin);</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160; }</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; <span class="keywordflow">if</span> (event-&gt;delta_y &gt; 0 &amp;&amp; opacity &lt; TOOLBAR_OPACITY_LEVEL) {</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;toolbar_opacity&quot;</span>, opacity + 1);</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160; <a class="code" href="rcw_8c.html#a5929f8c1c1513c0fd75a88cd4721b8a4">rcw_update_toolbar_opacity</a>(cnnwin);</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; }</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160; }</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160;}</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160;</div><div class="line"><a name="l03049"></a><span class="lineno"><a class="line" href="rcw_8c.html#a29df78f116c127e22a561beb4d8bae51"> 3049</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a29df78f116c127e22a561beb4d8bae51">rcw_after_configure_scrolled</a>(gpointer user_data)</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160;{</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; gint width, height;</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; GdkWindowState s;</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; gint ipg, npages;</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)user_data;</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160;</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160; <span class="keywordflow">if</span> (!cnnwin || !cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>)</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; s = gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(cnnwin)));</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160;</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160; <span class="comment">/* Changed window_maximize, window_width and window_height for all</span></div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160;<span class="comment"> * connections inside the notebook */</span></div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160; npages = gtk_notebook_get_n_pages(GTK_NOTEBOOK(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook));</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; <span class="keywordflow">for</span> (ipg = 0; ipg &lt; npages; ipg++) {</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160; cnnobj = g_object_get_data(</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160; G_OBJECT(gtk_notebook_get_nth_page(GTK_NOTEBOOK(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook), ipg)),</div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160; <span class="stringliteral">&quot;cnnobj&quot;</span>);</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160; <span class="keywordflow">if</span> (s &amp; GDK_WINDOW_STATE_MAXIMIZED) {</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_maximize&quot;</span>, TRUE);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; gtk_window_get_size(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>), &amp;width, &amp;height);</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_width&quot;</span>, width);</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_height&quot;</span>, height);</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_maximize&quot;</span>, FALSE);</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160; }</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; }</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;acs_eventsourceid = 0;</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160;}</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160;</div><div class="line"><a name="l03086"></a><span class="lineno"><a class="line" href="rcw_8c.html#a1aa257faac7a8b75c12a286ad20ce823"> 3086</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a1aa257faac7a8b75c12a286ad20ce823">rcw_on_configure</a>(GtkWidget *widget, GdkEventConfigure *event,</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; gpointer data)</div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160;{</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160; <span class="keywordflow">if</span> (!REMMINA_IS_CONNECTION_WINDOW(widget))</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160;</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget;</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160;</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160;</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;acs_eventsourceid) {</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; g_source_remove(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;acs_eventsourceid);</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;acs_eventsourceid = 0;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; }</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160;</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; <span class="keywordflow">if</span> (gtk_widget_get_window(GTK_WIDGET(cnnwin))</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; &amp;&amp; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>)</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; <span class="comment">/* Under GNOME Shell we receive this configure_event BEFORE a window</span></div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;<span class="comment"> * is really unmaximized, so we must read its new state and dimensions</span></div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;<span class="comment"> * later, not now */</span></div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;acs_eventsourceid = g_timeout_add(500, <a class="code" href="rcw_8c.html#a29df78f116c127e22a561beb4d8bae51">rcw_after_configure_scrolled</a>, cnnwin);</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160;</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode != <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>)</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160; <span class="comment">/* Notify window of change so that scroll border can be hidden or shown if needed */</span></div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160; <a class="code" href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34">rco_check_resize</a>(cnnobj);</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160;}</div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160;</div><div class="line"><a name="l03118"></a><span class="lineno"><a class="line" href="rcw_8c.html#a0e69db7ebd2d2998d34fbf6853ce2f27"> 3118</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a0e69db7ebd2d2998d34fbf6853ce2f27">rcw_update_pin</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160;{</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pin_down)</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160; gtk_button_set_image(GTK_BUTTON(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pin_button),</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160; gtk_image_new_from_icon_name(<span class="stringliteral">&quot;org.remmina.Remmina-pin-down-symbolic&quot;</span>, GTK_ICON_SIZE_MENU));</div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; gtk_button_set_image(GTK_BUTTON(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pin_button),</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; gtk_image_new_from_icon_name(<span class="stringliteral">&quot;org.remmina.Remmina-pin-up-symbolic&quot;</span>, GTK_ICON_SIZE_MENU));</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160;}</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160;</div><div class="line"><a name="l03129"></a><span class="lineno"><a class="line" href="rcw_8c.html#aba6a0bf71cc04aa6ac20920d4dd219d2"> 3129</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#aba6a0bf71cc04aa6ac20920d4dd219d2">rcw_toolbar_pin</a>(GtkWidget *widget, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160;{</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a> = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pin_down = !cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;pin_down;</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160; <a class="code" href="rcw_8c.html#a0e69db7ebd2d2998d34fbf6853ce2f27">rcw_update_pin</a>(cnnwin);</div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160;}</div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160;</div><div class="line"><a name="l03137"></a><span class="lineno"><a class="line" href="rcw_8c.html#ad3c92ea50f889b1252614586d9f7a23e"> 3137</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ad3c92ea50f889b1252614586d9f7a23e">rcw_create_floating_toolbar</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, gint mode)</div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160;{</div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>&#160;</div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160; GtkWidget *ftb_widget;</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160; GtkWidget *vbox;</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160; GtkWidget *hbox;</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160; GtkWidget *label;</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160; GtkWidget *pinbutton;</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160; GtkWidget *tb;</div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160;</div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160;</div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; <span class="comment">/* A widget to be used for GtkOverlay for GTK &gt;= 3.10 */</span></div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; ftb_widget = gtk_event_box_new();</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160;</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);</div><div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; gtk_widget_show(vbox);</div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160;</div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160; gtk_container_add(GTK_CONTAINER(ftb_widget), vbox);</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160;</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; tb = <a class="code" href="rcw_8c.html#a2caca4bce3a8ec22a99ede169746af86">rcw_create_toolbar</a>(cnnwin, mode);</div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; gtk_widget_show(hbox);</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160;</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160;</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; <span class="comment">/* The pin button */</span></div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160; pinbutton = gtk_button_new();</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; gtk_widget_show(pinbutton);</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; gtk_box_pack_start(GTK_BOX(hbox), pinbutton, FALSE, FALSE, 0);</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; gtk_button_set_relief(GTK_BUTTON(pinbutton), GTK_RELIEF_NONE);</div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; gtk_widget_set_focus_on_click(GTK_WIDGET(pinbutton), FALSE);</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; gtk_button_set_focus_on_click(GTK_BUTTON(pinbutton), FALSE);</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; gtk_widget_set_name(pinbutton, <span class="stringliteral">&quot;remmina-pin-button&quot;</span>);</div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; g_signal_connect(G_OBJECT(pinbutton), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#aba6a0bf71cc04aa6ac20920d4dd219d2">rcw_toolbar_pin</a>), cnnwin);</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; priv-&gt;pin_button = pinbutton;</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; priv-&gt;pin_down = remmina_pref.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a>;</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; <a class="code" href="rcw_8c.html#a0e69db7ebd2d2998d34fbf6853ce2f27">rcw_update_pin</a>(cnnwin);</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160;</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160;</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160; label = gtk_label_new(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160; gtk_label_set_max_width_chars(GTK_LABEL(label), 50);</div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; gtk_widget_show(label);</div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160;</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160; gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);</div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160;</div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160; priv-&gt;floating_toolbar_label = label;</div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160;</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> == <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d">FLOATING_TOOLBAR_PLACEMENT_BOTTOM</a>) {</div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);</div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), tb, FALSE, FALSE, 0);</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), tb, FALSE, FALSE, 0);</div><div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);</div><div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; }</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160;</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; priv-&gt;floating_toolbar_widget = ftb_widget;</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; gtk_widget_show(ftb_widget);</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160;}</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160;</div><div class="line"><a name="l03200"></a><span class="lineno"><a class="line" href="rcw_8c.html#a366b8717c9906fdb1938659dc2ab1b03"> 3200</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a366b8717c9906fdb1938659dc2ab1b03">rcw_toolbar_place_signal</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, gpointer data)</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160;{</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160;</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160; priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; <span class="comment">/* Detach old toolbar widget and reattach in new position in the grid */</span></div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolbar &amp;&amp; priv-&gt;grid) {</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; g_object_ref(priv-&gt;toolbar);</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; gtk_container_remove(GTK_CONTAINER(priv-&gt;grid), priv-&gt;toolbar);</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160; <a class="code" href="rcw_8c.html#afc62938ff8bcaad6b743f50ecf36d292">rcw_place_toolbar</a>(GTK_TOOLBAR(priv-&gt;toolbar), GTK_GRID(priv-&gt;grid), GTK_WIDGET(priv-&gt;notebook), remmina_pref.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a>);</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; g_object_unref(priv-&gt;toolbar);</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; }</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160;}</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160;</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160;</div><div class="line"><a name="l03216"></a><span class="lineno"><a class="line" href="rcw_8c.html#a10c64d29db5f199eb4c86b0ae5a5a0bd"> 3216</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a10c64d29db5f199eb4c86b0ae5a5a0bd">rcw_init</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160;{</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160;</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160; priv = g_new0(<a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a>, 1);</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a> = priv;</div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160;</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160; priv-&gt;view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>;</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> &amp;&amp; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> == TRUE)</div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; priv-&gt;view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160;</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160; priv-&gt;floating_toolbar_opacity = 1.0;</div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; priv-&gt;kbcaptured = FALSE;</div><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; priv-&gt;pointer_captured = FALSE;</div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160; priv-&gt;pointer_entered = FALSE;</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; priv-&gt;fss_view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; priv-&gt;ss_width = 640;</div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160; priv-&gt;ss_height = 480;</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; priv-&gt;ss_maximized = FALSE;</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160;</div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160;}</div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160;</div><div class="line"><a name="l03240"></a><span class="lineno"><a class="line" href="rcw_8c.html#ab01e6d10d9c1f5803dac15087b512346"> 3240</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#ab01e6d10d9c1f5803dac15087b512346">rcw_focus_in_event</a>(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160;{</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: RCW focus-in-event received\n&quot;</span>);</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160; <a class="code" href="rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3">rcw_focus_in</a>((<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget);</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160;}</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160;</div><div class="line"><a name="l03250"></a><span class="lineno"><a class="line" href="rcw_8c.html#a8af64223778fc6adee796f5d98f17fd6"> 3250</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a8af64223778fc6adee796f5d98f17fd6">rcw_focus_out_event</a>(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160;{</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: RCW focus-out-event received\n&quot;</span>);</div><div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160; <a class="code" href="rcw_8c.html#a010af24147287ef89f605e71ef315475">rcw_focus_out</a>((<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget);</div><div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160;}</div><div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160;</div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160;</div><div class="line"><a name="l03261"></a><span class="lineno"><a class="line" href="rcw_8c.html#aa9d246740106aae9643ab7edc32923f3"> 3261</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#aa9d246740106aae9643ab7edc32923f3">rcw_state_event</a>(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160;{</div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160;</div><div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160; <span class="keywordflow">if</span> (!REMMINA_IS_CONNECTION_WINDOW(widget))</div><div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160;</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160;<span class="preprocessor">#if DEBUG_KB_GRABBING</span></div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160; printf(<span class="stringliteral">&quot;DEBUG_KB_GRABBING: window-state-event received\n&quot;</span>);</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160;</div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; <span class="keywordflow">if</span> (event-&gt;changed_mask &amp; GDK_WINDOW_STATE_FOCUSED) {</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160; <span class="keywordflow">if</span> (event-&gt;new_window_state &amp; GDK_WINDOW_STATE_FOCUSED)</div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; <a class="code" href="rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3">rcw_focus_in</a>((<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget);</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; <a class="code" href="rcw_8c.html#a010af24147287ef89f605e71ef315475">rcw_focus_out</a>((<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget);</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; }</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160;</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160;}</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160;</div><div class="line"><a name="l03282"></a><span class="lineno"><a class="line" href="rcw_8c.html#a6fb67b7e52f4d570e72a201f0113a81c"> 3282</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a6fb67b7e52f4d570e72a201f0113a81c">rcw_map_event</a>(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160;{</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;</div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160;</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160;</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget;</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp;</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160;</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160;</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; gp = REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Mapping: %s&quot;</span>, gtk_widget_get_name(widget));</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(gp))</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Called plugin mapping function&quot;</span>);</div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160;}</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160;</div><div class="line"><a name="l03302"></a><span class="lineno"><a class="line" href="rcw_8c.html#a1420e43974421458b64d07fc858b1243"> 3302</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a1420e43974421458b64d07fc858b1243">rcw_unmap_event</a>(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160;{</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160;</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget;</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp;</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160;</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160; <span class="keywordflow">if</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar_is_reconfiguring) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160;</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; gp = REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unmapping: %s&quot;</span>, gtk_widget_get_name(widget));</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a>(gp))</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Called plugin mapping function&quot;</span>);</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160;}</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160;</div><div class="line"><a name="l03320"></a><span class="lineno"><a class="line" href="rcw_8c.html#a5f5a9e8173b3ce9831f1771089fe778a"> 3320</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a5f5a9e8173b3ce9831f1771089fe778a">rcw_map_event_fullscreen</a>(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160;{</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; gint target_monitor;</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160;</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Mapping: %s&quot;</span>, gtk_widget_get_name(widget));</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160;</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; <span class="keywordflow">if</span> (!REMMINA_IS_CONNECTION_WINDOW(widget)) {</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remmina Connection Window undefined, cannot go fullscreen&quot;</span>);</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; }</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160;</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; <span class="comment">//RemminaConnectionWindow *cnnwin = (RemminaConnectionWindow *)data;</span></div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>((<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)widget);</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; <span class="comment">//cnnobj = g_object_get_data(G_OBJECT(widget), &quot;cnnobj&quot;);</span></div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; <span class="keywordflow">if</span> (!cnnobj) {</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remmina Connection Object undefined, cannot go fullscreen&quot;</span>);</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160; }</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160;</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160;</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160; <span class="keywordflow">if</span> (!gp)</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remmina Protocol Widget undefined, cannot go fullscreen&quot;</span>);</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(gp) &gt;= 1) {</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Fullscreen on all monitor&quot;</span>);</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160; gdk_window_set_fullscreen_mode(gtk_widget_get_window(widget), GDK_FULLSCREEN_ON_ALL_MONITORS);</div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160; gdk_window_fullscreen(gtk_widget_get_window(widget));</div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Fullscreen on one monitor&quot;</span>);</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; }</div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160;</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; target_monitor = GPOINTER_TO_INT(data);</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160;</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 18, 0)</span></div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a>) {</div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; <span class="keywordflow">if</span> (target_monitor == FULL_SCREEN_TARGET_MONITOR_UNDEFINED)</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; gtk_window_fullscreen(GTK_WINDOW(widget));</div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160; gtk_window_fullscreen_on_monitor(GTK_WINDOW(widget), gtk_window_get_screen(GTK_WINDOW(widget)),</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; target_monitor);</div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Fullscreen managed by WM or by the user, as per settings&quot;</span>);</div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; gtk_window_fullscreen(GTK_WINDOW(widget));</div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160; }</div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot fullscreen on a specific monitor, feature available from GTK 3.18&quot;</span>);</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; gtk_window_fullscreen(GTK_WINDOW(widget));</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160;</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(gp))</div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Called plugin mapping function&quot;</span>);</div><div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160;</div><div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160;}</div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160;</div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *</div><div class="line"><a name="l03380"></a><span class="lineno"><a class="line" href="rcw_8c.html#a3f9d79b58064438a513d47b4ff690b73"> 3380</a></span>&#160;<a class="code" href="rcw_8c.html#a3f9d79b58064438a513d47b4ff690b73">rcw_new</a>(gboolean <a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>, <span class="keywordtype">int</span> full_screen_target_monitor)</div><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160;{</div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160;</div><div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160; cnnwin = RCW(g_object_new(REMMINA_TYPE_CONNECTION_WINDOW, NULL));</div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;on_delete_confirm_mode = <a class="code" href="rcw_8h.html#a2450dfe27d3ded59370ea879419f307fae2b5eff3ff03f3633e217a3c31b3b43b">RCW_ONDELETE_CONFIRM_IF_2_OR_MORE</a>;</div><div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160;</div><div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160; <span class="keywordflow">if</span> (fullscreen)</div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160; <span class="comment">/* Put the window in fullscreen after it is mapped to have it appear on the same monitor */</span></div><div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;map-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a5f5a9e8173b3ce9831f1771089fe778a">rcw_map_event_fullscreen</a>), GINT_TO_POINTER(full_screen_target_monitor));</div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;map-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a6fb67b7e52f4d570e72a201f0113a81c">rcw_map_event</a>), NULL);</div><div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;unmap-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a1420e43974421458b64d07fc858b1243">rcw_unmap_event</a>), NULL);</div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160;</div><div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160; gtk_container_set_border_width(GTK_CONTAINER(cnnwin), 0);</div><div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;toolbar-place&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a366b8717c9906fdb1938659dc2ab1b03">rcw_toolbar_place_signal</a>), NULL);</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160;</div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;delete-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a07802fc420dc07560fe937d29172573c">rcw_delete_event</a>), NULL);</div><div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#aa7de86386944c333dc9f4bf87f819f9c">rcw_destroy</a>), NULL);</div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160;</div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160; <span class="comment">/* Under Xorg focus-in-event and focus-out-event don’t work when keyboard is grabbed</span></div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160;<span class="comment"> * via gdk_device_grab. So we listen for window-state-event to detect focus in and focus out.</span></div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160;<span class="comment"> * But we must also listen focus-in-event and focus-out-event because some</span></div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160;<span class="comment"> * window managers missing _NET_WM_STATE_FOCUSED hint, does not update the window state</span></div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160;<span class="comment"> * in case of focus change */</span></div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;window-state-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#aa9d246740106aae9643ab7edc32923f3">rcw_state_event</a>), NULL);</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;focus-in-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ab01e6d10d9c1f5803dac15087b512346">rcw_focus_in_event</a>), NULL);</div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;focus-out-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a8af64223778fc6adee796f5d98f17fd6">rcw_focus_out_event</a>), NULL);</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160;</div><div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;enter-notify-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#adf9a57dc0cdd6261bef9a92df145c80c">rcw_on_enter_notify_event</a>), NULL);</div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;leave-notify-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a27f545a9630a481f4df747478cd227fb">rcw_on_leave_notify_event</a>), NULL);</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160;</div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160;</div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; g_signal_connect(G_OBJECT(cnnwin), <span class="stringliteral">&quot;configure_event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a1aa257faac7a8b75c12a286ad20ce823">rcw_on_configure</a>), NULL);</div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160;</div><div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160; <span class="keywordflow">return</span> cnnwin;</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160;}</div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160;</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160;<span class="comment">/* This function will be called for the first connection. A tag is set to the window so that</span></div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160;<span class="comment"> * other connections can determine if whether a new tab should be append to the same window</span></div><div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l03422"></a><span class="lineno"><a class="line" href="rcw_8c.html#af8d1a8843f974fb8170d76f945a72080"> 3422</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#af8d1a8843f974fb8170d76f945a72080">rcw_update_tag</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160;{</div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160; gchar *tag;</div><div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160;</div><div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160; <span class="keywordflow">switch</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>) {</div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33">REMMINA_TAB_BY_GROUP</a>:</div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; tag = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;group&quot;</span>));</div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558">REMMINA_TAB_BY_PROTOCOL</a>:</div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160; tag = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160; tag = NULL;</div><div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160; }</div><div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160; g_object_set_data_full(G_OBJECT(cnnwin), <span class="stringliteral">&quot;tag&quot;</span>, tag, (GDestroyNotify)g_free);</div><div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160;}</div><div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160;</div><div class="line"><a name="l03441"></a><span class="lineno"><a class="line" href="rcw_8c.html#a7189a0f1289a24fc5cc9fdfaf37244f3"> 3441</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a7189a0f1289a24fc5cc9fdfaf37244f3">rcw_grab_focus</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160;{</div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160;</div><div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>&#160; <span class="keywordflow">if</span> (!(cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin))) <span class="keywordflow">return</span>;</div><div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160;</div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>&#160; <span class="keywordflow">if</span> (GTK_IS_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>))</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160;}</div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160;</div><div class="line"><a name="l03452"></a><span class="lineno"><a class="line" href="rcw_8c.html#a756830638372adda00be33468c8d3ed2"> 3452</a></span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#a756830638372adda00be33468c8d3ed2">nb_find_page_by_cnnobj</a>(GtkNotebook *notebook, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;{</div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160; gint i, np;</div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160; GtkWidget *found_page, *pg;</div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160;</div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160; <span class="keywordflow">if</span> (cnnobj == NULL || cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> == NULL || cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a> == NULL)</div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160; found_page = NULL;</div><div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160; np = gtk_notebook_get_n_pages(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook);</div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; np; i++) {</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160; pg = gtk_notebook_get_nth_page(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook, i);</div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160; <span class="keywordflow">if</span> (g_object_get_data(G_OBJECT(pg), <span class="stringliteral">&quot;cnnobj&quot;</span>) == cnnobj) {</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160; found_page = pg;</div><div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03466"></a><span class="lineno"> 3466</span>&#160; }</div><div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>&#160; }</div><div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>&#160;</div><div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160; <span class="keywordflow">return</span> found_page;</div><div class="line"><a name="l03470"></a><span class="lineno"> 3470</span>&#160;}</div><div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160;</div><div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>&#160;</div><div class="line"><a name="l03473"></a><span class="lineno"><a class="line" href="rcw_8c.html#aaef82069514845b2987ac0659993cecd"> 3473</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#aaef82069514845b2987ac0659993cecd">rco_closewin</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160;{</div><div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160; GtkWidget *page_to_remove;</div><div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160;</div><div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160;</div><div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>&#160; <span class="keywordflow">if</span> (cnnobj &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a> &amp;&amp; REMMINA_IS_SCROLLED_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)) {</div><div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;deleting motion&quot;</span>);</div><div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>&#160; <a class="code" href="remmina__scrolled__viewport_8c.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport_remove_motion</a>(REMMINA_SCROLLED_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>));</div><div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>&#160; }</div><div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160;</div><div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>&#160; <span class="keywordflow">if</span> (cnnobj &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>) {</div><div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>&#160; page_to_remove = <a class="code" href="rcw_8c.html#a756830638372adda00be33468c8d3ed2">nb_find_page_by_cnnobj</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook, cnnobj);</div><div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>&#160; <span class="keywordflow">if</span> (page_to_remove) {</div><div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>&#160; gtk_notebook_remove_page(</div><div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook,</div><div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>&#160; gtk_notebook_page_num(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook, page_to_remove));</div><div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>&#160; <span class="comment">/* Invalidate pointers to objects destroyed by page removal */</span></div><div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a> = NULL;</div><div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a> = NULL;</div><div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a> = NULL;</div><div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>&#160; <span class="comment">/* we cannot invalidate cnnobj-&gt;proto, because it can be already been</span></div><div class="line"><a name="l03496"></a><span class="lineno"> 3496</span>&#160;<span class="comment"> * detached from the widget hierarchy in rco_on_disconnect() */</span></div><div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>&#160; }</div><div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>&#160; }</div><div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>&#160; <span class="keywordflow">if</span> (cnnobj) {</div><div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a> = NULL;</div><div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>&#160; g_free(cnnobj);</div><div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> = NULL;</div><div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>&#160; }</div><div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>&#160;</div><div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>&#160; <a class="code" href="remmina__exec_8c.html#aaa67e07e2426828d7e7b9b30d2038d31">remmina_application_condexit</a>(<a class="code" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5a3272be70c922ec6a1eaf498461943c51">REMMINA_CONDEXIT_ONDISCONNECT</a>);</div><div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>&#160;}</div><div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>&#160;</div><div class="line"><a name="l03508"></a><span class="lineno"><a class="line" href="rcw_8c.html#af4bcd597461ffa30d2975cbc6b071ce4"> 3508</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#af4bcd597461ffa30d2975cbc6b071ce4">rco_on_close_button_clicked</a>(GtkButton *button, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>&#160;{</div><div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>&#160; <span class="keywordflow">if</span> (REMMINA_IS_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>)) {</div><div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>))</div><div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03515"></a><span class="lineno"> 3515</span>&#160; <a class="code" href="rcw_8c.html#aaef82069514845b2987ac0659993cecd">rco_closewin</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>&#160; }</div><div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>&#160;}</div><div class="line"><a name="l03518"></a><span class="lineno"> 3518</span>&#160;</div><div class="line"><a name="l03519"></a><span class="lineno"><a class="line" href="rcw_8c.html#a3928a83b083a55e3af1ed81da49b25eb"> 3519</a></span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#a3928a83b083a55e3af1ed81da49b25eb">rco_create_tab_label</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>&#160;{</div><div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>&#160; GtkWidget *hbox;</div><div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>&#160; GtkWidget *button;</div><div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>&#160;</div><div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>&#160; hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);</div><div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>&#160; gtk_widget_show(hbox);</div><div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>&#160;</div><div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>&#160; widget = gtk_image_new_from_icon_name(<a class="code" href="remmina__file_8c.html#a2feb8e9e32f3ff4e2fac836e67a77331">remmina_file_get_icon_name</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>), GTK_ICON_SIZE_MENU);</div><div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>&#160; gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, FALSE, 0);</div><div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160;</div><div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160; widget = gtk_label_new(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>));</div><div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>&#160; gtk_widget_set_valign(widget, GTK_ALIGN_CENTER);</div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160; gtk_widget_set_halign(widget, GTK_ALIGN_CENTER);</div><div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>&#160;</div><div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>&#160; gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);</div><div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>&#160;</div><div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>&#160; button = gtk_button_new(); <span class="comment">// The &quot;x&quot; to close the tab</span></div><div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>&#160; gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);</div><div class="line"><a name="l03542"></a><span class="lineno"> 3542</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>&#160; gtk_widget_set_focus_on_click(GTK_WIDGET(widget), FALSE);</div><div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>&#160; gtk_button_set_focus_on_click(GTK_BUTTON(button), FALSE);</div><div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>&#160; gtk_widget_set_name(button, <span class="stringliteral">&quot;remmina-small-button&quot;</span>);</div><div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>&#160; gtk_widget_show(button);</div><div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>&#160;</div><div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>&#160; widget = gtk_image_new_from_icon_name(<span class="stringliteral">&quot;window-close&quot;</span>, GTK_ICON_SIZE_MENU);</div><div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>&#160; gtk_container_add(GTK_CONTAINER(button), widget);</div><div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>&#160;</div><div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>&#160; gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);</div><div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>&#160;</div><div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>&#160; g_signal_connect(G_OBJECT(button), <span class="stringliteral">&quot;clicked&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#af4bcd597461ffa30d2975cbc6b071ce4">rco_on_close_button_clicked</a>), cnnobj);</div><div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>&#160;</div><div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160;</div><div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160; <span class="keywordflow">return</span> hbox;</div><div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160;}</div><div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>&#160;</div><div class="line"><a name="l03562"></a><span class="lineno"><a class="line" href="rcw_8c.html#a1c40706e7ac542d396d2db99ba944dc6"> 3562</a></span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#a1c40706e7ac542d396d2db99ba944dc6">rco_create_tab_page</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160;{</div><div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>&#160; GtkWidget *page;</div><div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>&#160;</div><div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>&#160; page = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);</div><div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>&#160; gtk_widget_set_name(page, <span class="stringliteral">&quot;remmina-tab-page&quot;</span>);</div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160;</div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160;</div><div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160; <span class="keywordflow">return</span> page;</div><div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160;}</div><div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>&#160;</div><div class="line"><a name="l03573"></a><span class="lineno"><a class="line" href="rcw_8c.html#ad5a67ac52028302d5681cceaf9ac46bc"> 3573</a></span>&#160;<span class="keyword">static</span> GtkWidget *<a class="code" href="rcw_8c.html#ad5a67ac52028302d5681cceaf9ac46bc">rcw_append_new_page</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>&#160;{</div><div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>&#160; GtkWidget *page, *label;</div><div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>&#160; GtkNotebook *notebook;</div><div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>&#160;</div><div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>&#160; notebook = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook;</div><div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>&#160;</div><div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>&#160; page = <a class="code" href="rcw_8c.html#a1c40706e7ac542d396d2db99ba944dc6">rco_create_tab_page</a>(cnnobj);</div><div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>&#160; g_object_set_data(G_OBJECT(page), <span class="stringliteral">&quot;cnnobj&quot;</span>, cnnobj);</div><div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>&#160; label = <a class="code" href="rcw_8c.html#a3928a83b083a55e3af1ed81da49b25eb">rco_create_tab_label</a>(cnnobj);</div><div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>&#160;</div><div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> = cnnwin;</div><div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>&#160;</div><div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>&#160; gtk_notebook_append_page(notebook, page, label);</div><div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>&#160; gtk_notebook_set_tab_reorderable(notebook, page, TRUE);</div><div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>&#160; gtk_notebook_set_tab_detachable(notebook, page, TRUE);</div><div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>&#160; <span class="comment">/* This trick prevents the tab label from being focused */</span></div><div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>&#160; gtk_widget_set_can_focus(gtk_widget_get_parent(label), FALSE);</div><div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>&#160;</div><div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>&#160; <span class="keywordflow">if</span> (gtk_widget_get_parent(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>) != NULL)</div><div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>&#160; printf(<span class="stringliteral">&quot;REMMINA WARNING in %s: scrolled_container already has a parent\n&quot;</span>, __func__);</div><div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>&#160; gtk_box_pack_start(GTK_BOX(page), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>, TRUE, TRUE, 0);</div><div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>&#160;</div><div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>&#160; gtk_widget_show(page);</div><div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>&#160;</div><div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>&#160; <span class="keywordflow">return</span> page;</div><div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>&#160;}</div><div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>&#160;</div><div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>&#160;</div><div class="line"><a name="l03603"></a><span class="lineno"><a class="line" href="rcw_8c.html#a327f62be43b7f312982f9e22b86a2867"> 3603</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a327f62be43b7f312982f9e22b86a2867">rcw_update_notebook</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>&#160;{</div><div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>&#160; GtkNotebook *notebook;</div><div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>&#160; gint n;</div><div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>&#160;</div><div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>&#160; notebook = GTK_NOTEBOOK(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook);</div><div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>&#160;</div><div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>&#160; <span class="keywordflow">switch</span> (cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode) {</div><div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>:</div><div class="line"><a name="l03613"></a><span class="lineno"> 3613</span>&#160; n = gtk_notebook_get_n_pages(notebook);</div><div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>&#160; gtk_notebook_set_show_tabs(notebook, remmina_pref.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> ? TRUE : n &gt; 1);</div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>&#160; gtk_notebook_set_show_border(notebook, remmina_pref.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> ? TRUE : n &gt; 1);</div><div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160; gtk_notebook_set_show_tabs(notebook, FALSE);</div><div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160; gtk_notebook_set_show_border(notebook, FALSE);</div><div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>&#160; }</div><div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160;}</div><div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160;</div><div class="line"><a name="l03624"></a><span class="lineno"><a class="line" href="rcw_8c.html#af99dc9a4135deff0a11c2d56877bad93"> 3624</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#af99dc9a4135deff0a11c2d56877bad93">rcw_on_switch_page_finalsel</a>(gpointer user_data)</div><div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>&#160;{</div><div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>&#160;</div><div class="line"><a name="l03630"></a><span class="lineno"> 3630</span>&#160; <span class="keywordflow">if</span> (!user_data)</div><div class="line"><a name="l03631"></a><span class="lineno"> 3631</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>&#160;</div><div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160; cnnobj = (<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *)user_data;</div><div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>&#160; <span class="keywordflow">if</span> (!cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>)</div><div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>&#160;</div><div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>&#160; priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>&#160;</div><div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160; <span class="keywordflow">if</span> (GTK_IS_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>)) {</div><div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, TRUE);</div><div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>&#160; <span class="keywordflow">if</span> (!priv-&gt;hidetb_eventsource)</div><div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>&#160; priv-&gt;hidetb_eventsource = g_timeout_add(TB_HIDE_TIME_TIME, (GSourceFunc)</div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>&#160; <a class="code" href="rcw_8c.html#a423aaf9a4d3eed6dac67de5a8cc24a18">rcw_floating_toolbar_hide</a>, cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160; <a class="code" href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726">rco_update_toolbar</a>(cnnobj);</div><div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>&#160; <a class="code" href="rcw_8c.html#a7189a0f1289a24fc5cc9fdfaf37244f3">rcw_grab_focus</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>&#160; <span class="keywordflow">if</span> (priv-&gt;view_mode != <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>)</div><div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>&#160; <a class="code" href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34">rco_check_resize</a>(cnnobj);</div><div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>&#160; }</div><div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>&#160; priv-&gt;spf_eventsourceid = 0;</div><div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>&#160;}</div><div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>&#160;</div><div class="line"><a name="l03653"></a><span class="lineno"><a class="line" href="rcw_8c.html#a8f8175377bfbda4794674e619ca0fa8b"> 3653</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a8f8175377bfbda4794674e619ca0fa8b">rcw_on_switch_page</a>(GtkNotebook *notebook, GtkWidget *newpage, guint page_num,</div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>&#160;{</div><div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj_newpage;</div><div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>&#160;</div><div class="line"><a name="l03660"></a><span class="lineno"> 3660</span>&#160; cnnobj_newpage = g_object_get_data(G_OBJECT(newpage), <span class="stringliteral">&quot;cnnobj&quot;</span>);</div><div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>&#160; <span class="keywordflow">if</span> (priv-&gt;spf_eventsourceid)</div><div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>&#160; g_source_remove(priv-&gt;spf_eventsourceid);</div><div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>&#160; priv-&gt;spf_eventsourceid = g_idle_add(<a class="code" href="rcw_8c.html#af99dc9a4135deff0a11c2d56877bad93">rcw_on_switch_page_finalsel</a>, cnnobj_newpage);</div><div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>&#160;}</div><div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160;</div><div class="line"><a name="l03666"></a><span class="lineno"><a class="line" href="rcw_8c.html#ad4d4fa75260167fe894750ecd01ee4e9"> 3666</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ad4d4fa75260167fe894750ecd01ee4e9">rcw_on_page_added</a>(GtkNotebook *notebook, GtkWidget *child, guint page_num,</div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160;{</div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160; <span class="keywordflow">if</span> (gtk_notebook_get_n_pages(GTK_NOTEBOOK(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook)) &gt; 0)</div><div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>&#160; <a class="code" href="rcw_8c.html#a327f62be43b7f312982f9e22b86a2867">rcw_update_notebook</a>(cnnwin);</div><div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>&#160;}</div><div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160;</div><div class="line"><a name="l03673"></a><span class="lineno"><a class="line" href="rcw_8c.html#a0aef50fe641f959f5715ab7e01bfd23d"> 3673</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a0aef50fe641f959f5715ab7e01bfd23d">rcw_on_page_removed</a>(GtkNotebook *notebook, GtkWidget *child, guint page_num,</div><div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>&#160;{</div><div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>&#160;</div><div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>&#160; <span class="keywordflow">if</span> (gtk_notebook_get_n_pages(GTK_NOTEBOOK(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook)) &lt;= 0)</div><div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>&#160; gtk_widget_destroy(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>&#160;</div><div class="line"><a name="l03681"></a><span class="lineno"> 3681</span>&#160;}</div><div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>&#160;</div><div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>&#160;<span class="keyword">static</span> GtkNotebook *</div><div class="line"><a name="l03684"></a><span class="lineno"><a class="line" href="rcw_8c.html#a6d710132769d5f21989af6844c04b43f"> 3684</a></span>&#160;<a class="code" href="rcw_8c.html#a6d710132769d5f21989af6844c04b43f">rcw_on_notebook_create_window</a>(GtkNotebook *notebook, GtkWidget *page, gint x, gint y, gpointer data)</div><div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>&#160;{</div><div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>&#160; <span class="comment">/* This signal callback is called by GTK when a detachable tab is dropped on the root window</span></div><div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>&#160;<span class="comment"> * or in an existing window */</span></div><div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>&#160;</div><div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *srccnnwin;</div><div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *dstcnnwin;</div><div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>&#160; GdkWindow *window;</div><div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>&#160; gchar *srctag;</div><div class="line"><a name="l03695"></a><span class="lineno"> 3695</span>&#160; gint width, height;</div><div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>&#160;</div><div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>&#160; GdkSeat *seat;</div><div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>&#160; GdkDeviceManager *manager;</div><div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>&#160; GdkDevice *device = NULL;</div><div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>&#160;</div><div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 20, 0)</span></div><div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>&#160; seat = gdk_display_get_default_seat(gdk_display_get_default());</div><div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>&#160; device = gdk_seat_get_pointer(seat);</div><div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>&#160; manager = gdk_display_get_device_manager(gdk_display_get_default());</div><div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>&#160; device = gdk_device_manager_get_client_pointer(manager);</div><div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>&#160;</div><div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>&#160; window = gdk_device_get_window_at_position(device, &amp;x, &amp;y);</div><div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>&#160; srccnnwin = RCW(gtk_widget_get_toplevel(GTK_WIDGET(notebook)));</div><div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>&#160; dstcnnwin = RCW(<a class="code" href="remmina__widget__pool_8c.html#a0a6a2069cdbbb920fb09f95bec3e997e">remmina_widget_pool_find_by_window</a>(REMMINA_TYPE_CONNECTION_WINDOW, window));</div><div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>&#160;</div><div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>&#160; <span class="keywordflow">if</span> (srccnnwin == dstcnnwin)</div><div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>&#160;</div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>&#160; <span class="keywordflow">if</span> (gtk_notebook_get_n_pages(GTK_NOTEBOOK(srccnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook)) == 1 &amp;&amp; !dstcnnwin)</div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>&#160;</div><div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>&#160; cnnobj = (<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *)g_object_get_data(G_OBJECT(page), <span class="stringliteral">&quot;cnnobj&quot;</span>);</div><div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>&#160;</div><div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160; <span class="keywordflow">if</span> (!dstcnnwin) {</div><div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160; <span class="comment">/* Drop is directed to a new rcw: create a new scrolled window to accommodate</span></div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>&#160;<span class="comment"> * the dropped connectionand move our cnnobj there. Width and</span></div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>&#160;<span class="comment"> * height of the new window are cloned from the current window */</span></div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>&#160; srctag = (gchar *)g_object_get_data(G_OBJECT(srccnnwin), <span class="stringliteral">&quot;tag&quot;</span>);</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>&#160; gtk_window_get_size(GTK_WINDOW(srccnnwin), &amp;width, &amp;height);</div><div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>&#160; dstcnnwin = <a class="code" href="rcw_8c.html#a95c64795004c7778c56068abeb1a6bd0">rcw_create_scrolled</a>(width, height, FALSE); <span class="comment">// New dropped window is never maximized</span></div><div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>&#160; g_object_set_data_full(G_OBJECT(dstcnnwin), <span class="stringliteral">&quot;tag&quot;</span>, g_strdup(srctag), (GDestroyNotify)g_free);</div><div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>&#160; <span class="comment">/* when returning, GTK will move the whole tab to the new notebook.</span></div><div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160;<span class="comment"> * Prepare cnnobj to be hosted in the new cnnwin */</span></div><div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> = dstcnnwin;</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> = dstcnnwin;</div><div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>&#160; }</div><div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>&#160;</div><div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>&#160; (<a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a>)rcw_hostkey_func);</div><div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>&#160;</div><div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>&#160; <span class="keywordflow">return</span> GTK_NOTEBOOK(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook);</div><div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>&#160;}</div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>&#160;</div><div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160;<span class="keyword">static</span> GtkNotebook *</div><div class="line"><a name="l03746"></a><span class="lineno"><a class="line" href="rcw_8c.html#a1fce938658aee966b1ccffb4a0ab4cff"> 3746</a></span>&#160;<a class="code" href="rcw_8c.html#a1fce938658aee966b1ccffb4a0ab4cff">rcw_create_notebook</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>&#160;{</div><div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160; GtkNotebook *notebook;</div><div class="line"><a name="l03750"></a><span class="lineno"> 3750</span>&#160;</div><div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>&#160; notebook = GTK_NOTEBOOK(gtk_notebook_new());</div><div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>&#160;</div><div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160; gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE);</div><div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>&#160; gtk_widget_show(GTK_WIDGET(notebook));</div><div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>&#160;</div><div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>&#160; g_signal_connect(G_OBJECT(notebook), <span class="stringliteral">&quot;create-window&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a6d710132769d5f21989af6844c04b43f">rcw_on_notebook_create_window</a>), NULL);</div><div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>&#160; g_signal_connect(G_OBJECT(notebook), <span class="stringliteral">&quot;switch-page&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a8f8175377bfbda4794674e619ca0fa8b">rcw_on_switch_page</a>), cnnwin);</div><div class="line"><a name="l03758"></a><span class="lineno"> 3758</span>&#160; g_signal_connect(G_OBJECT(notebook), <span class="stringliteral">&quot;page-added&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ad4d4fa75260167fe894750ecd01ee4e9">rcw_on_page_added</a>), cnnwin);</div><div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>&#160; g_signal_connect(G_OBJECT(notebook), <span class="stringliteral">&quot;page-removed&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a0aef50fe641f959f5715ab7e01bfd23d">rcw_on_page_removed</a>), cnnwin);</div><div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>&#160; gtk_widget_set_can_focus(GTK_WIDGET(notebook), FALSE);</div><div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>&#160;</div><div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>&#160; <span class="keywordflow">return</span> notebook;</div><div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>&#160;}</div><div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>&#160;</div><div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>&#160;<span class="comment">/* Create a scrolled toplevel window */</span></div><div class="line"><a name="l03766"></a><span class="lineno"><a class="line" href="rcw_8c.html#a95c64795004c7778c56068abeb1a6bd0"> 3766</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *<a class="code" href="rcw_8c.html#a95c64795004c7778c56068abeb1a6bd0">rcw_create_scrolled</a>(gint width, gint height, gboolean maximize)</div><div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>&#160;{</div><div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160; GtkWidget *grid;</div><div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160; GtkWidget *toolbar;</div><div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160; GtkNotebook *notebook;</div><div class="line"><a name="l03773"></a><span class="lineno"> 3773</span>&#160; GtkSettings *settings = gtk_settings_get_default();</div><div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>&#160;</div><div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>&#160; cnnwin = <a class="code" href="rcw_8c.html#a3f9d79b58064438a513d47b4ff690b73">rcw_new</a>(FALSE, 0);</div><div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>&#160; gtk_widget_realize(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>&#160;</div><div class="line"><a name="l03778"></a><span class="lineno"> 3778</span>&#160; gtk_window_set_default_size(GTK_WINDOW(cnnwin), width, height);</div><div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>&#160; g_object_set(settings, <span class="stringliteral">&quot;gtk-application-prefer-dark-theme&quot;</span>, remmina_pref.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>, NULL);</div><div class="line"><a name="l03780"></a><span class="lineno"> 3780</span>&#160;</div><div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>&#160; <span class="comment">/* Create the toolbar */</span></div><div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>&#160; toolbar = <a class="code" href="rcw_8c.html#a2caca4bce3a8ec22a99ede169746af86">rcw_create_toolbar</a>(cnnwin, <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>);</div><div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>&#160;</div><div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>&#160; <span class="comment">/* Create the notebook */</span></div><div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160; notebook = <a class="code" href="rcw_8c.html#a1fce938658aee966b1ccffb4a0ab4cff">rcw_create_notebook</a>(cnnwin);</div><div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>&#160;</div><div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>&#160; <span class="comment">/* Create the grid container for toolbars+notebook and populate it */</span></div><div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>&#160; grid = gtk_grid_new();</div><div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>&#160;</div><div class="line"><a name="l03790"></a><span class="lineno"> 3790</span>&#160;</div><div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>&#160; gtk_grid_attach(GTK_GRID(grid), GTK_WIDGET(notebook), 0, 0, 1, 1);</div><div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>&#160;</div><div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>&#160; gtk_widget_set_hexpand(GTK_WIDGET(notebook), TRUE);</div><div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>&#160; gtk_widget_set_vexpand(GTK_WIDGET(notebook), TRUE);</div><div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>&#160;</div><div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>&#160; <a class="code" href="rcw_8c.html#afc62938ff8bcaad6b743f50ecf36d292">rcw_place_toolbar</a>(GTK_TOOLBAR(toolbar), GTK_GRID(grid), GTK_WIDGET(notebook), remmina_pref.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a>);</div><div class="line"><a name="l03797"></a><span class="lineno"> 3797</span>&#160;</div><div class="line"><a name="l03798"></a><span class="lineno"> 3798</span>&#160; gtk_container_add(GTK_CONTAINER(cnnwin), grid);</div><div class="line"><a name="l03799"></a><span class="lineno"> 3799</span>&#160;</div><div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>&#160; <span class="comment">/* Add drag capabilities to the toolbar */</span></div><div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>&#160; gtk_drag_source_set(GTK_WIDGET(toolbar), GDK_BUTTON1_MASK,</div><div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>&#160; dnd_targets_tb, <span class="keyword">sizeof</span> dnd_targets_tb / <span class="keyword">sizeof</span> *dnd_targets_tb, GDK_ACTION_MOVE);</div><div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>&#160; g_signal_connect_after(GTK_WIDGET(toolbar), <span class="stringliteral">&quot;drag-begin&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a0ca9e87bf2fc3855699f80315d72314b">rcw_tb_drag_begin</a>), NULL);</div><div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>&#160; g_signal_connect(GTK_WIDGET(toolbar), <span class="stringliteral">&quot;drag-failed&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a14a8e53afac8e750b7839d74dc50c758">rcw_tb_drag_failed</a>), cnnwin);</div><div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>&#160;</div><div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160; <span class="comment">/* Add drop capabilities to the drop/dest target for the toolbar (the notebook) */</span></div><div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160; gtk_drag_dest_set(GTK_WIDGET(notebook), GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT,</div><div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160; dnd_targets_tb, <span class="keyword">sizeof</span> dnd_targets_tb / <span class="keyword">sizeof</span> *dnd_targets_tb, GDK_ACTION_MOVE);</div><div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160; gtk_drag_dest_set_track_motion(GTK_WIDGET(notebook), TRUE);</div><div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>&#160; g_signal_connect(GTK_WIDGET(notebook), <span class="stringliteral">&quot;drag-drop&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a70d89903e3279a1650dc0684f26ed9c2">rcw_tb_drag_drop</a>), cnnwin);</div><div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160;</div><div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>;</div><div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;toolbar = toolbar;</div><div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;grid = grid;</div><div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook = notebook;</div><div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_width = width;</div><div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_height = height;</div><div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;ss_maximized = maximize;</div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160;</div><div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160; <span class="comment">/* The notebook and all its child must be realized now, or a reparent will</span></div><div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160;<span class="comment"> * call unrealize() and will destroy a GtkSocket */</span></div><div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160; gtk_widget_show(grid);</div><div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160; gtk_widget_show(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160; GtkWindowGroup *wingrp = gtk_window_group_new();</div><div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160;</div><div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160; gtk_window_group_add_window(wingrp, GTK_WINDOW(cnnwin));</div><div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(cnnwin), NULL);</div><div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>&#160;</div><div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160; <span class="keywordflow">if</span> (maximize)</div><div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160; gtk_window_maximize(GTK_WINDOW(cnnwin));</div><div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160;</div><div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160;</div><div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160; <a class="code" href="rcw_8c.html#a23d848e45205a65618c84bb70b882b3f">rcw_set_toolbar_visibility</a>(cnnwin);</div><div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160;</div><div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160; <span class="keywordflow">return</span> cnnwin;</div><div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160;}</div><div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160;</div><div class="line"><a name="l03838"></a><span class="lineno"><a class="line" href="rcw_8c.html#a0cb504e984baf9ad7ba06b03da6ab746"> 3838</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a0cb504e984baf9ad7ba06b03da6ab746">rcw_create_overlay_ftb_overlay</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160;{</div><div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>&#160;</div><div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160; GtkWidget *revealer;</div><div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv;</div><div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160;</div><div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160; priv = cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160;</div><div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160; <span class="keywordflow">if</span> (priv-&gt;overlay_ftb_overlay != NULL) {</div><div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160; gtk_widget_destroy(priv-&gt;overlay_ftb_overlay);</div><div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160; priv-&gt;overlay_ftb_overlay = NULL;</div><div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160; priv-&gt;revealer = NULL;</div><div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160; }</div><div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160;</div><div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160; <a class="code" href="rcw_8c.html#ad3c92ea50f889b1252614586d9f7a23e">rcw_create_floating_toolbar</a>(cnnwin, priv-&gt;fss_view_mode);</div><div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160;</div><div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160; priv-&gt;overlay_ftb_overlay = gtk_event_box_new();</div><div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160;</div><div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160; GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);</div><div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160;</div><div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160; gtk_container_set_border_width(GTK_CONTAINER(vbox), 0);</div><div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160;</div><div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160; GtkWidget *handle = gtk_drawing_area_new();</div><div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160;</div><div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160; gtk_widget_set_size_request(handle, 4, 4);</div><div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160; gtk_widget_set_name(handle, <span class="stringliteral">&quot;ftb-handle&quot;</span>);</div><div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160;</div><div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160; revealer = gtk_revealer_new();</div><div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160;</div><div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160; gtk_widget_set_halign(GTK_WIDGET(priv-&gt;overlay_ftb_overlay), GTK_ALIGN_CENTER);</div><div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160;</div><div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> == <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d">FLOATING_TOOLBAR_PLACEMENT_BOTTOM</a>) {</div><div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), handle, FALSE, FALSE, 0);</div><div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), revealer, FALSE, FALSE, 0);</div><div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160; gtk_revealer_set_transition_type(GTK_REVEALER(revealer), GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP);</div><div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160; gtk_widget_set_valign(GTK_WIDGET(priv-&gt;overlay_ftb_overlay), GTK_ALIGN_END);</div><div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), revealer, FALSE, FALSE, 0);</div><div class="line"><a name="l03877"></a><span class="lineno"> 3877</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), handle, FALSE, FALSE, 0);</div><div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160; gtk_revealer_set_transition_type(GTK_REVEALER(revealer), GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN);</div><div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160; gtk_widget_set_valign(GTK_WIDGET(priv-&gt;overlay_ftb_overlay), GTK_ALIGN_START);</div><div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160; }</div><div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160;</div><div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160;</div><div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160; gtk_container_add(GTK_CONTAINER(revealer), priv-&gt;floating_toolbar_widget);</div><div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160; gtk_widget_set_halign(GTK_WIDGET(revealer), GTK_ALIGN_CENTER);</div><div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160; gtk_widget_set_valign(GTK_WIDGET(revealer), GTK_ALIGN_START);</div><div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160;</div><div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160; priv-&gt;revealer = revealer;</div><div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160;</div><div class="line"><a name="l03889"></a><span class="lineno"> 3889</span>&#160; GtkWidget *fr;</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160;</div><div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160; fr = gtk_frame_new(NULL);</div><div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160; gtk_container_add(GTK_CONTAINER(priv-&gt;overlay_ftb_overlay), fr);</div><div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160; gtk_container_add(GTK_CONTAINER(fr), vbox);</div><div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160;</div><div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160; gtk_widget_show(vbox);</div><div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160; gtk_widget_show(revealer);</div><div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160; gtk_widget_show(handle);</div><div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160; gtk_widget_show(priv-&gt;overlay_ftb_overlay);</div><div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160; gtk_widget_show(fr);</div><div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160;</div><div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> == <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d">FLOATING_TOOLBAR_PLACEMENT_BOTTOM</a>)</div><div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160; gtk_widget_set_name(fr, <span class="stringliteral">&quot;ftbbox-lower&quot;</span>);</div><div class="line"><a name="l03903"></a><span class="lineno"> 3903</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160; gtk_widget_set_name(fr, <span class="stringliteral">&quot;ftbbox-upper&quot;</span>);</div><div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160;</div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160; gtk_overlay_add_overlay(GTK_OVERLAY(priv-&gt;overlay), priv-&gt;overlay_ftb_overlay);</div><div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160;</div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160; <a class="code" href="rcw_8c.html#a10b9b689406b4b3071ace2b7c8562aa7">rcw_floating_toolbar_show</a>(cnnwin, TRUE);</div><div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160;</div><div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160; g_signal_connect(G_OBJECT(priv-&gt;overlay_ftb_overlay), <span class="stringliteral">&quot;enter-notify-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a961e539a6f6ccbe73a301869c6960ab6">rcw_floating_toolbar_on_enter</a>), cnnwin);</div><div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160; g_signal_connect(G_OBJECT(priv-&gt;overlay_ftb_overlay), <span class="stringliteral">&quot;leave-notify-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a3fa4224150aace5830b6d93cdc883fd8">rcw_floating_toolbar_on_leave</a>), cnnwin);</div><div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160; g_signal_connect(G_OBJECT(priv-&gt;overlay_ftb_overlay), <span class="stringliteral">&quot;scroll-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a2f4b8ba7f51a4bf6e12a585177d55758">rcw_floating_toolbar_on_scroll</a>), cnnwin);</div><div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160; gtk_widget_add_events(</div><div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160; GTK_WIDGET(priv-&gt;overlay_ftb_overlay),</div><div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160; GDK_SCROLL_MASK</div><div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160;#<span class="keywordflow">if</span> GTK_CHECK_VERSION(3, 4, 0)</div><div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>&#160; | GDK_SMOOTH_SCROLL_MASK</div><div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>&#160;#endif</div><div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160; );</div><div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160;</div><div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160; <span class="comment">/* Add drag and drop capabilities to the source */</span></div><div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>&#160; gtk_drag_source_set(GTK_WIDGET(priv-&gt;overlay_ftb_overlay), GDK_BUTTON1_MASK,</div><div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>&#160; dnd_targets_ftb, <span class="keyword">sizeof</span> dnd_targets_ftb / <span class="keyword">sizeof</span> *dnd_targets_ftb, GDK_ACTION_MOVE);</div><div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160; g_signal_connect_after(GTK_WIDGET(priv-&gt;overlay_ftb_overlay), <span class="stringliteral">&quot;drag-begin&quot;</span>, G_CALLBACK(rcw_ftb_drag_begin), cnnwin);</div><div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160;</div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> == <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c">FLOATING_TOOLBAR_VISIBILITY_DISABLE</a>)</div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160; <span class="comment">/* toolbar in fullscreenmode disabled, hide everything */</span></div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160; gtk_widget_hide(fr);</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160;}</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160;</div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160;</div><div class="line"><a name="l03932"></a><span class="lineno"><a class="line" href="rcw_8c.html#a4ab5e41b9227097a9eec6f73dcb453ea"> 3932</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a4ab5e41b9227097a9eec6f73dcb453ea">rcw_ftb_drag_drop</a>(GtkWidget *widget, GdkDragContext *context,</div><div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>&#160; gint x, gint y, guint time, <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin)</div><div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160;{</div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160; GtkAllocation wa;</div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160; gint new_floating_toolbar_placement;</div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160;</div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160; gtk_widget_get_allocation(widget, &amp;wa);</div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160;</div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160; <span class="keywordflow">if</span> (y &gt;= wa.height / 2)</div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160; new_floating_toolbar_placement = <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d">FLOATING_TOOLBAR_PLACEMENT_BOTTOM</a>;</div><div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160; new_floating_toolbar_placement = <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796">FLOATING_TOOLBAR_PLACEMENT_TOP</a>;</div><div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160;</div><div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160; gtk_drag_finish(context, TRUE, TRUE, time);</div><div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>&#160;</div><div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160; <span class="keywordflow">if</span> (new_floating_toolbar_placement != remmina_pref.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a>) {</div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160; <span class="comment">/* Destroy and recreate the FTB */</span></div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> = new_floating_toolbar_placement;</div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>&#160; <a class="code" href="rcw_8c.html#a0cb504e984baf9ad7ba06b03da6ab746">rcw_create_overlay_ftb_overlay</a>(cnnwin);</div><div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>&#160; cnnobj = <a class="code" href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a>(cnnwin);</div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160; <span class="keywordflow">if</span> (cnnobj) <a class="code" href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726">rco_update_toolbar</a>(cnnobj);</div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160; }</div><div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160;</div><div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160;}</div><div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160;</div><div class="line"><a name="l03961"></a><span class="lineno"><a class="line" href="rcw_8c.html#a73532ae8f8fa05711035bc3d4c82ac2a"> 3961</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a73532ae8f8fa05711035bc3d4c82ac2a">rcw_ftb_drag_begin</a>(GtkWidget *widget, GdkDragContext *context, gpointer user_data)</div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160;{</div><div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160;</div><div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160; cairo_surface_t *surface;</div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160; cairo_t *cr;</div><div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160; GtkAllocation wa;</div><div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160; <span class="keywordtype">double</span> dashes[] = { 10 };</div><div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160;</div><div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160; gtk_widget_get_allocation(widget, &amp;wa);</div><div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160;</div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160; surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, wa.width, wa.height);</div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160; cr = cairo_create(surface);</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160; cairo_set_source_rgb(cr, 0.6, 0.6, 0.6);</div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; cairo_set_line_width(cr, 2);</div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160; cairo_set_dash(cr, dashes, 1, 0);</div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160; cairo_rectangle(cr, 0, 0, wa.width, wa.height);</div><div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160; cairo_stroke(cr);</div><div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160; cairo_destroy(cr);</div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160;</div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160; gtk_drag_set_icon_surface(context, surface);</div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160;}</div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160;</div><div class="line"><a name="l03984"></a><span class="lineno"><a class="line" href="rcw_8c.html#a11bb04a25b6c8a79af3cb34f22e28dd8"> 3984</a></span>&#160;<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *<a class="code" href="rcw_8c.html#a11bb04a25b6c8a79af3cb34f22e28dd8">rcw_create_fullscreen</a>(GtkWindow *old, gint view_mode)</div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160;{</div><div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin;</div><div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160; GtkNotebook *notebook;</div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160;</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160; gint n_monitors;</div><div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160; gint i;</div><div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160; GdkMonitor *old_monitor;</div><div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>&#160; GdkDisplay *old_display;</div><div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160; GdkWindow *old_window;</div><div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160; gint full_screen_target_monitor;</div><div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160;</div><div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160; full_screen_target_monitor = FULL_SCREEN_TARGET_MONITOR_UNDEFINED;</div><div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160; <span class="keywordflow">if</span> (old) {</div><div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160; old_window = gtk_widget_get_window(GTK_WIDGET(old));</div><div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160; old_display = gdk_window_get_display(old_window);</div><div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160; old_monitor = gdk_display_get_monitor_at_window(old_display, old_window);</div><div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160; n_monitors = gdk_display_get_n_monitors(old_display);</div><div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; n_monitors; ++i) {</div><div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160; <span class="keywordflow">if</span> (gdk_display_get_monitor(old_display, i) == old_monitor) {</div><div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160; full_screen_target_monitor = i;</div><div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160; }</div><div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160; }</div><div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160; full_screen_target_monitor = gdk_screen_get_monitor_at_window(</div><div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160; gdk_screen_get_default(),</div><div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160; gtk_widget_get_window(GTK_WIDGET(old)));</div><div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160; }</div><div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160;</div><div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160; cnnwin = <a class="code" href="rcw_8c.html#a3f9d79b58064438a513d47b4ff690b73">rcw_new</a>(TRUE, full_screen_target_monitor);</div><div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160; gtk_widget_set_name(GTK_WIDGET(cnnwin), <span class="stringliteral">&quot;remmina-connection-window-fullscreen&quot;</span>);</div><div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160; gtk_widget_realize(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>&#160;</div><div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160; <span class="keywordflow">if</span> (!view_mode)</div><div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160; view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160;</div><div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160; notebook = <a class="code" href="rcw_8c.html#a1fce938658aee966b1ccffb4a0ab4cff">rcw_create_notebook</a>(cnnwin);</div><div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>&#160;</div><div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;overlay = gtk_overlay_new();</div><div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160; gtk_container_add(GTK_CONTAINER(cnnwin), cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;overlay);</div><div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160; gtk_container_add(GTK_CONTAINER(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;overlay), GTK_WIDGET(notebook));</div><div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160; gtk_widget_show(GTK_WIDGET(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;overlay));</div><div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160;</div><div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook = notebook;</div><div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode = view_mode;</div><div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;fss_view_mode = view_mode;</div><div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160;</div><div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160; <span class="comment">/* Create the floating toolbar */</span></div><div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160; <a class="code" href="rcw_8c.html#a0cb504e984baf9ad7ba06b03da6ab746">rcw_create_overlay_ftb_overlay</a>(cnnwin);</div><div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160; <span class="comment">/* Add drag and drop capabilities to the drop/dest target for floating toolbar */</span></div><div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160; gtk_drag_dest_set(GTK_WIDGET(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;overlay), GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT,</div><div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160; dnd_targets_ftb, <span class="keyword">sizeof</span> dnd_targets_ftb / <span class="keyword">sizeof</span> *dnd_targets_ftb, GDK_ACTION_MOVE);</div><div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160; gtk_drag_dest_set_track_motion(GTK_WIDGET(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook), TRUE);</div><div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160; g_signal_connect(GTK_WIDGET(cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;overlay), <span class="stringliteral">&quot;drag-drop&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a4ab5e41b9227097a9eec6f73dcb453ea">rcw_ftb_drag_drop</a>), cnnwin);</div><div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160;</div><div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160; gtk_widget_show(GTK_WIDGET(cnnwin));</div><div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160; GtkWindowGroup *wingrp = gtk_window_group_new();</div><div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160; gtk_window_group_add_window(wingrp, GTK_WINDOW(cnnwin));</div><div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(cnnwin), NULL);</div><div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160;</div><div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160; <span class="keywordflow">return</span> cnnwin;</div><div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160;}</div><div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>&#160;</div><div class="line"><a name="l04053"></a><span class="lineno"><a class="line" href="rcw_8c.html#acb1b2ab629603837e08f8d8de542316d"> 4053</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#acb1b2ab629603837e08f8d8de542316d">rcw_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, guint keyval, gboolean release)</div><div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>&#160;{</div><div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>&#160; gint i;</div><div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>&#160;</div><div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>&#160; <span class="keywordflow">if</span> (release) {</div><div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> &amp;&amp; keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>) {</div><div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>&#160; priv-&gt;hostkey_activated = FALSE;</div><div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>&#160; <span class="keywordflow">if</span> (priv-&gt;hostkey_used)</div><div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>&#160; <span class="comment">/* hostkey pressed + something else */</span></div><div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>&#160; }</div><div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>&#160; <span class="comment">/* If hostkey is released without pressing other keys, we should execute the</span></div><div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160;<span class="comment"> * shortcut key which is the same as hostkey. Be default, this is grab/ungrab</span></div><div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160;<span class="comment"> * keyboard */</span></div><div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (priv-&gt;hostkey_activated) {</div><div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>&#160; <span class="comment">/* Trap all key releases when hostkey is pressed */</span></div><div class="line"><a name="l04073"></a><span class="lineno"> 4073</span>&#160; <span class="comment">/* hostkey pressed + something else */</span></div><div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>&#160; <span class="comment">/* Any key pressed, no hostkey */</span></div><div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>&#160; }</div><div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> &amp;&amp; keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>) {</div><div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>&#160; priv-&gt;hostkey_activated = TRUE;</div><div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>&#160; priv-&gt;hostkey_used = FALSE;</div><div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!priv-&gt;hostkey_activated) {</div><div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>&#160; <span class="comment">/* Any key pressed, no hostkey */</span></div><div class="line"><a name="l04086"></a><span class="lineno"> 4086</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04087"></a><span class="lineno"> 4087</span>&#160; }</div><div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>&#160;</div><div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>&#160; priv-&gt;hostkey_used = TRUE;</div><div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160; keyval = gdk_keyval_to_lower(keyval);</div><div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160; <span class="keywordflow">if</span> (keyval == GDK_KEY_Up || keyval == GDK_KEY_Down</div><div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160; || keyval == GDK_KEY_Left || keyval == GDK_KEY_Right) {</div><div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>&#160; GtkAdjustment *adjust;</div><div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>&#160; <span class="keywordtype">int</span> pos;</div><div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>&#160;</div><div class="line"><a name="l04096"></a><span class="lineno"> 4096</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a> &amp;&amp; GTK_IS_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)) {</div><div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160; <span class="keywordflow">if</span> (keyval == GDK_KEY_Up || keyval == GDK_KEY_Down)</div><div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>&#160; adjust = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>));</div><div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>&#160; adjust = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>));</div><div class="line"><a name="l04101"></a><span class="lineno"> 4101</span>&#160;</div><div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>&#160; <span class="keywordflow">if</span> (keyval == GDK_KEY_Up || keyval == GDK_KEY_Left)</div><div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>&#160; pos = 0;</div><div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>&#160; pos = gtk_adjustment_get_upper(adjust);</div><div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>&#160;</div><div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>&#160; gtk_adjustment_set_value(adjust, pos);</div><div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>&#160; <span class="keywordflow">if</span> (keyval == GDK_KEY_Up || keyval == GDK_KEY_Down)</div><div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>&#160; gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>), adjust);</div><div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>&#160; gtk_scrolled_window_set_hadjustment(GTK_SCROLLED_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>), adjust);</div><div class="line"><a name="l04112"></a><span class="lineno"> 4112</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (REMMINA_IS_SCROLLED_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>)) {</div><div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>&#160; <a class="code" href="struct___remmina_scrolled_viewport.html">RemminaScrolledViewport</a> *gsv;</div><div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>&#160; GtkWidget *child;</div><div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>&#160; GdkWindow *gsvwin;</div><div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>&#160; gint sz;</div><div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>&#160; GtkAdjustment *adj;</div><div class="line"><a name="l04118"></a><span class="lineno"> 4118</span>&#160; gdouble value;</div><div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>&#160;</div><div class="line"><a name="l04120"></a><span class="lineno"> 4120</span>&#160; <span class="keywordflow">if</span> (!GTK_IS_BIN(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>))</div><div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160;</div><div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>&#160; gsv = REMMINA_SCROLLED_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>);</div><div class="line"><a name="l04124"></a><span class="lineno"> 4124</span>&#160; child = gtk_bin_get_child(GTK_BIN(gsv));</div><div class="line"><a name="l04125"></a><span class="lineno"> 4125</span>&#160; <span class="keywordflow">if</span> (!GTK_IS_VIEWPORT(child))</div><div class="line"><a name="l04126"></a><span class="lineno"> 4126</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>&#160;</div><div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>&#160; gsvwin = gtk_widget_get_window(GTK_WIDGET(gsv));</div><div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>&#160; <span class="keywordflow">if</span> (!gsv)</div><div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160;</div><div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>&#160; <span class="keywordflow">if</span> (keyval == GDK_KEY_Up || keyval == GDK_KEY_Down) {</div><div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>&#160; sz = gdk_window_get_height(gsvwin) + 2; <span class="comment">// Add 2px of black scroll border</span></div><div class="line"><a name="l04134"></a><span class="lineno"> 4134</span>&#160; adj = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(child));</div><div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>&#160; sz = gdk_window_get_width(gsvwin) + 2; <span class="comment">// Add 2px of black scroll border</span></div><div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>&#160; adj = gtk_scrollable_get_hadjustment(GTK_SCROLLABLE(child));</div><div class="line"><a name="l04138"></a><span class="lineno"> 4138</span>&#160; }</div><div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>&#160;</div><div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>&#160; <span class="keywordflow">if</span> (keyval == GDK_KEY_Up || keyval == GDK_KEY_Left)</div><div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>&#160; value = 0;</div><div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>&#160; value = gtk_adjustment_get_upper(GTK_ADJUSTMENT(adj)) - (gdouble)sz + 2.0;</div><div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>&#160;</div><div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>&#160; gtk_adjustment_set_value(GTK_ADJUSTMENT(adj), value);</div><div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>&#160; }</div><div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>&#160; }</div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>&#160;</div><div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>&#160; <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>&#160; <span class="keywordflow">switch</span> (priv-&gt;view_mode) {</div><div class="line"><a name="l04151"></a><span class="lineno"> 4151</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>:</div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160; <a class="code" href="rcw_8c.html#afec9666876babf3ae115fade7470915e">rcw_switch_viewmode</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, priv-&gt;fss_view_mode);</div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>:</div><div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>:</div><div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>&#160; <a class="code" href="rcw_8c.html#afec9666876babf3ae115fade7470915e">rcw_switch_viewmode</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>);</div><div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04158"></a><span class="lineno"> 4158</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l04159"></a><span class="lineno"> 4159</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>&#160; }</div><div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>&#160; <span class="keywordflow">if</span> (priv-&gt;toolitem_autofit &amp;&amp; gtk_widget_is_sensitive(GTK_WIDGET(priv-&gt;toolitem_autofit)))</div><div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>&#160; <a class="code" href="rcw_8c.html#adf4d204cce70b6609c15c1ca95082a43">rcw_toolbar_autofit</a>(GTK_TOOL_ITEM(gp), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160; i = gtk_notebook_get_current_page(GTK_NOTEBOOK(priv-&gt;notebook)) + 1;</div><div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160; <span class="keywordflow">if</span> (i &gt;= gtk_notebook_get_n_pages(GTK_NOTEBOOK(priv-&gt;notebook)))</div><div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160; i = 0;</div><div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160; gtk_notebook_set_current_page(GTK_NOTEBOOK(priv-&gt;notebook), i);</div><div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160; i = gtk_notebook_get_current_page(GTK_NOTEBOOK(priv-&gt;notebook)) - 1;</div><div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160; <span class="keywordflow">if</span> (i &lt; 0)</div><div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160; i = gtk_notebook_get_n_pages(GTK_NOTEBOOK(priv-&gt;notebook)) - 1;</div><div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160; gtk_notebook_set_current_page(GTK_NOTEBOOK(priv-&gt;notebook), i);</div><div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160; <span class="keywordflow">if</span> (gtk_widget_is_sensitive(GTK_WIDGET(priv-&gt;toolitem_scale))) {</div><div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160; gtk_toggle_tool_button_set_active(</div><div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160; GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_scale),</div><div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160; !gtk_toggle_tool_button_get_active(</div><div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160; GTK_TOGGLE_TOOL_BUTTON(</div><div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>&#160; priv-&gt;toolitem_scale)));</div><div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>&#160; }</div><div class="line"><a name="l04182"></a><span class="lineno"> 4182</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>&#160; gtk_toggle_tool_button_set_active(</div><div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160; GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_grab),</div><div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>&#160; !gtk_toggle_tool_button_get_active(</div><div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160; GTK_TOGGLE_TOOL_BUTTON(</div><div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>&#160; priv-&gt;toolitem_grab)));</div><div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160; <a class="code" href="rcw_8c.html#af90b8a8028b16a89a43f5377df5885c8">rcw_toolbar_minimize</a>(GTK_TOOL_ITEM(gp),</div><div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;viewonly&quot;</span>,</div><div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>&#160; (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;viewonly&quot;</span>, 0)</div><div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160; == 0) ? 1 : 0);</div><div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160; <a class="code" href="rcw_8c.html#a93650a12c555e40554b8b8e7382f42a3">rcw_toolbar_screenshot</a>(GTK_TOOL_ITEM(gp),</div><div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160; <a class="code" href="rcw_8c.html#a2690c97a972e458dea9f5c0566ea50b9">rco_disconnect_current_page</a>(cnnobj);</div><div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (keyval == remmina_pref.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a> &amp;&amp; !<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>) {</div><div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160; <span class="keywordflow">if</span> (priv-&gt;view_mode == <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>) {</div><div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160; remmina_pref.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> =</div><div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160; !remmina_pref.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>;</div><div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>&#160; <a class="code" href="rcw_8c.html#a23d848e45205a65618c84bb70b882b3f">rcw_set_toolbar_visibility</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160; }</div><div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160; <span class="keywordflow">for</span> (feature =</div><div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(</div><div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160; REMMINA_PROTOCOL_WIDGET(</div><div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>;</div><div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160; feature++) {</div><div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a></div><div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160; == <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a></div><div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>&#160; &amp;&amp; GPOINTER_TO_UINT(</div><div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a>)</div><div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160; == keyval) {</div><div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(</div><div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160; REMMINA_PROTOCOL_WIDGET(</div><div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l04221"></a><span class="lineno"> 4221</span>&#160; feature);</div><div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160; }</div><div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160; }</div><div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160; }</div><div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160; <span class="comment">/* If a keypress makes the current cnnobj to move to another window,</span></div><div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160;<span class="comment"> * priv is now invalid. So we can no longer use priv here */</span></div><div class="line"><a name="l04228"></a><span class="lineno"> 4228</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;hostkey_activated = FALSE;</div><div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160;</div><div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160; <span class="comment">/* Trap all keypresses when hostkey is pressed */</span></div><div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160;}</div><div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160;</div><div class="line"><a name="l04234"></a><span class="lineno"><a class="line" href="rcw_8c.html#a6a61db497c95cf18aea60b2a3a5a31c0"> 4234</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *<a class="code" href="rcw_8c.html#a6a61db497c95cf18aea60b2a3a5a31c0">rcw_find</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160;{</div><div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160; <span class="keyword">const</span> gchar *tag;</div><div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160;</div><div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160; <span class="keywordflow">switch</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>) {</div><div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33">REMMINA_TAB_BY_GROUP</a>:</div><div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160; tag = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;group&quot;</span>);</div><div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558">REMMINA_TAB_BY_PROTOCOL</a>:</div><div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>&#160; tag = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>);</div><div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9">REMMINA_TAB_ALL</a>:</div><div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160; tag = NULL;</div><div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eadc41dc23d32d8955a469953bee975631">REMMINA_TAB_NONE</a>:</div><div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160; }</div><div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160; <span class="keywordflow">return</span> RCW(<a class="code" href="remmina__widget__pool_8c.html#ab776b24a3b829a1d5dd7974cb8582c05">remmina_widget_pool_find</a>(REMMINA_TYPE_CONNECTION_WINDOW, tag));</div><div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160;}</div><div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160;</div><div class="line"><a name="l04256"></a><span class="lineno"><a class="line" href="rcw_8c.html#add97977d493b64a6ea1c54ee7412f2c9"> 4256</a></span>&#160;gboolean <a class="code" href="rcw_8c.html#add97977d493b64a6ea1c54ee7412f2c9">rcw_delayed_window_present</a>(gpointer user_data)</div><div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160;{</div><div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *)user_data;</div><div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160;</div><div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; <span class="keywordflow">if</span> (cnnwin) {</div><div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160; gtk_window_present_with_time(GTK_WINDOW(cnnwin), (guint32)(g_get_monotonic_time() / 1000));</div><div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160; <a class="code" href="rcw_8c.html#a7189a0f1289a24fc5cc9fdfaf37244f3">rcw_grab_focus</a>(cnnwin);</div><div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160; }</div><div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;dwp_eventsourceid = 0;</div><div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160;}</div><div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160;</div><div class="line"><a name="l04268"></a><span class="lineno"><a class="line" href="rcw_8c.html#a3237ef26caa19b9926b485f94132cea7"> 4268</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a3237ef26caa19b9926b485f94132cea7">rco_on_connect</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160;{</div><div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160;</div><div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Connect signal emitted&quot;</span>);</div><div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160;</div><div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160; <span class="comment">/* This signal handler is called by a plugin when it’s correctly connected</span></div><div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160;<span class="comment"> * (and authenticated) */</span></div><div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160;</div><div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a> = TRUE;</div><div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160;</div><div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(REMMINA_PROTOCOL_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>),</div><div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160; (<a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a>)rcw_hostkey_func);</div><div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160;</div><div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>) == NULL)</div><div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160; <a class="code" href="remmina__pref_8c.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>),</div><div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We save the last successful connection date&quot;</span>);</div><div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160; <span class="comment">//remmina_file_set_string(cnnobj-&gt;remmina_file, &quot;last_success&quot;, last_success);</span></div><div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160; <a class="code" href="remmina__file_8c.html#a493ffa77b862ff3bad9ea951592715a8">remmina_file_state_last_success</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>);</div><div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Last connection made on %s.&quot;, last_success);</span></div><div class="line"><a name="l04292"></a><span class="lineno"> 4292</span>&#160;</div><div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving credentials&quot;</span>);</div><div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160; <span class="comment">/* Save credentials */</span></div><div class="line"><a name="l04295"></a><span class="lineno"> 4295</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>);</div><div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160;</div><div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;floating_toolbar_widget)</div><div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160; gtk_widget_show(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;floating_toolbar_widget);</div><div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160;</div><div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160; <a class="code" href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726">rco_update_toolbar</a>(cnnobj);</div><div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>&#160;</div><div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Trying to present the window&quot;</span>);</div><div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160; <span class="comment">/* Try to present window */</span></div><div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;dwp_eventsourceid = g_timeout_add(200, <a class="code" href="rcw_8c.html#add97977d493b64a6ea1c54ee7412f2c9">rcw_delayed_window_present</a>, (gpointer)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160;}</div><div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160;</div><div class="line"><a name="l04307"></a><span class="lineno"><a class="line" href="rcw_8c.html#a56e026ede7a3e50374579ad538e33db7"> 4307</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a56e026ede7a3e50374579ad538e33db7">cb_lasterror_confirmed</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160;{</div><div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160; <a class="code" href="rcw_8c.html#aaef82069514845b2987ac0659993cecd">rco_closewin</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cbdata);</div><div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160;}</div><div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160;</div><div class="line"><a name="l04313"></a><span class="lineno"><a class="line" href="rcw_8c.html#a029feea88b7ef32425595efe7d270947"> 4313</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a029feea88b7ef32425595efe7d270947">rco_on_disconnect</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</div><div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160;{</div><div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; <a class="code" href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a> *priv = cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>;</div><div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160; GtkWidget *pparent;</div><div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160;</div><div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Disconnect signal received on RemminaProtocolWidget&quot;</span>);</div><div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160; <span class="comment">/* Detach the protocol widget from the notebook now, or we risk that a</span></div><div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160;<span class="comment"> * window delete will destroy cnnobj-&gt;proto before we complete disconnection.</span></div><div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160; pparent = gtk_widget_get_parent(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l04325"></a><span class="lineno"> 4325</span>&#160; <span class="keywordflow">if</span> (pparent != NULL) {</div><div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160; g_object_ref(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160; gtk_container_remove(GTK_CONTAINER(pparent), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160; }</div><div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160;</div><div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aed1d667ed3085ee229c0dfdcf715084d">connected</a> = FALSE;</div><div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160;</div><div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160; <span class="keywordflow">if</span> (remmina_pref.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>) {</div><div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>)</div><div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;viewmode&quot;</span>, cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode);</div><div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>);</div><div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>&#160; }</div><div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160;</div><div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160; <a class="code" href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>);</div><div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>&#160; gtk_toggle_tool_button_set_active(</div><div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>&#160; GTK_TOGGLE_TOOL_BUTTON(priv-&gt;toolitem_grab),</div><div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>&#160; FALSE);</div><div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>&#160;</div><div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>(gp)) {</div><div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160; <span class="comment">/* We cannot close window immediately, but we must show a message panel */</span></div><div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160; <span class="comment">/* Destroy scrolled_container (and viewport) and all its children the plugin created</span></div><div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160;<span class="comment"> * on it, so they will not receive GUI signals */</span></div><div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>) {</div><div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160; gtk_widget_destroy(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>);</div><div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a> = NULL;</div><div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>&#160; }</div><div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a> = NULL;</div><div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae01d27ae9f678dc5a4fa32f0b401f434">remmina_message_panel_setup_message</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(gp), <a class="code" href="rcw_8c.html#a56e026ede7a3e50374579ad538e33db7">cb_lasterror_confirmed</a>, gp);</div><div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Could not disconnect&quot;</span>);</div><div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160; <a class="code" href="rcw_8c.html#aaef82069514845b2987ac0659993cecd">rco_closewin</a>(gp);</div><div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Disconnected&quot;</span>);</div><div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160; }</div><div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160;}</div><div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160;</div><div class="line"><a name="l04363"></a><span class="lineno"><a class="line" href="rcw_8c.html#a61b9eae2dd47962c5966d5d32eec9964"> 4363</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a61b9eae2dd47962c5966d5d32eec9964">rco_on_desktop_resize</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</div><div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160;{</div><div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160;</div><div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160; <span class="keywordflow">if</span> (cnnobj &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> &amp;&amp; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;view_mode != <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>)</div><div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160; <a class="code" href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34">rco_check_resize</a>(cnnobj);</div><div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160;}</div><div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160;</div><div class="line"><a name="l04372"></a><span class="lineno"><a class="line" href="rcw_8c.html#adca4317296daf9b6c51c4258a70faf5a"> 4372</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#adca4317296daf9b6c51c4258a70faf5a">rco_on_update_align</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</div><div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160;{</div><div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160;</div><div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160; <a class="code" href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d">remmina_protocol_widget_update_alignment</a>(cnnobj);</div><div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160;}</div><div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160;</div><div class="line"><a name="l04380"></a><span class="lineno"><a class="line" href="rcw_8c.html#a01f06672daa6653c3ee7fc72e83ae82f"> 4380</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a01f06672daa6653c3ee7fc72e83ae82f">rco_on_lock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</div><div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160;{</div><div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160;</div><div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a71136a01b1cc4d14e0047b32ec4d8a4a">dynres_unlocked</a> = FALSE;</div><div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160; <a class="code" href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726">rco_update_toolbar</a>(cnnobj);</div><div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160;}</div><div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160;</div><div class="line"><a name="l04389"></a><span class="lineno"><a class="line" href="rcw_8c.html#aa79b4c65a2a416a94c27363324c1cede"> 4389</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#aa79b4c65a2a416a94c27363324c1cede">rco_on_unlock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</div><div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160;{</div><div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160;</div><div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a71136a01b1cc4d14e0047b32ec4d8a4a">dynres_unlocked</a> = TRUE;</div><div class="line"><a name="l04395"></a><span class="lineno"> 4395</span>&#160; <a class="code" href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726">rco_update_toolbar</a>(cnnobj);</div><div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160;}</div><div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160;</div><div class="line"><a name="l04398"></a><span class="lineno"><a class="line" href="rcw_8h.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5"> 4398</a></span>&#160;gboolean <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(<span class="keyword">const</span> gchar *filename)</div><div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160;{</div><div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160;</div><div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160; remminafile = <a class="code" href="remmina__file__manager_8c.html#af7b58659604660eb0cb40b0e0f8348ab">remmina_file_manager_load_file</a>(filename);</div><div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a> (remminafile, <span class="stringliteral">&quot;profile-lock&quot;</span>, FALSE)</div><div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(<a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>()) == 0)</div><div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04409"></a><span class="lineno"> 4409</span>&#160; <a class="code" href="rcw_8c.html#a1b7a771392e15e527005305e71cc2546">rcw_open_from_file</a>(remminafile);</div><div class="line"><a name="l04410"></a><span class="lineno"> 4410</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>&#160; dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,</div><div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>&#160; _(<span class="stringliteral">&quot;The file “%s” is corrupted, unreadable, or could not be found.&quot;</span>), filename);</div><div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>&#160; g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(dialog);</div><div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160; }</div><div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160;}</div><div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160;</div><div class="line"><a name="l04421"></a><span class="lineno"><a class="line" href="rcw_8c.html#a80f465cb910660ded402fb0e7bb3a7fd"> 4421</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="rcw_8c.html#a80f465cb910660ded402fb0e7bb3a7fd">open_connection_last_stage</a>(gpointer user_data)</div><div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160;{</div><div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)user_data;</div><div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>&#160;</div><div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>&#160; <span class="comment">/* Now we have an allocated size for our RemminaProtocolWidget. We can proceed with the connection */</span></div><div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a>(gp);</div><div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a>(gp);</div><div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160; <a class="code" href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34">rco_check_resize</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160;</div><div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160;}</div><div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160;</div><div class="line"><a name="l04433"></a><span class="lineno"><a class="line" href="rcw_8c.html#ad5ac9d52e0afc18834da73ef2bf18edd"> 4433</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ad5ac9d52e0afc18834da73ef2bf18edd">rpw_size_allocated_on_connection</a>(GtkWidget *w, GdkRectangle *allocation, gpointer user_data)</div><div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160;{</div><div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)w;</div><div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160;</div><div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160; <span class="comment">/* Disconnect signal handler to avoid to be called again after a normal resize */</span></div><div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160; g_signal_handler_disconnect(w, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>-&gt;<a class="code" href="struct___remmina_connection_object.html#a09f89d6c0e4e52905aba1dd093e5c7f2">deferred_open_size_allocate_handler</a>);</div><div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160;</div><div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160; <span class="comment">/* Allow extra 100 ms for size allocation (do we really need it?) */</span></div><div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160; g_timeout_add(100, <a class="code" href="rcw_8c.html#a80f465cb910660ded402fb0e7bb3a7fd">open_connection_last_stage</a>, gp);</div><div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160;</div><div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160;}</div><div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160;</div><div class="line"><a name="l04446"></a><span class="lineno"><a class="line" href="rcw_8h.html#a1b7a771392e15e527005305e71cc2546"> 4446</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a1b7a771392e15e527005305e71cc2546">rcw_open_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160;{</div><div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04449"></a><span class="lineno"> 4449</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(remminafile, NULL, NULL, NULL);</div><div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160;}</div><div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160;</div><div class="line"><a name="l04452"></a><span class="lineno"><a class="line" href="rcw_8c.html#a78e4acb7bd8b9e502442949ef6204f58"> 4452</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a78e4acb7bd8b9e502442949ef6204f58">set_label_selectable</a>(gpointer data, gpointer user_data)</div><div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160;{</div><div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160; GtkWidget *widget = GTK_WIDGET(data);</div><div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160;</div><div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>&#160; <span class="keywordflow">if</span> (GTK_IS_LABEL(widget))</div><div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160; gtk_label_set_selectable(GTK_LABEL(widget), TRUE);</div><div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160;}</div><div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160;</div><div class="line"><a name="l04465"></a><span class="lineno"><a class="line" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3"> 4465</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3">GTKSOCKET_NOT_AVAIL_RESPONSE_TYPE</a> {</div><div class="line"><a name="l04466"></a><span class="lineno"><a class="line" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a6fafaf979c15a6300f4533321f1890d7"> 4466</a></span>&#160; <a class="code" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a6fafaf979c15a6300f4533321f1890d7">GTKSOCKET_NOT_AVAIL_RESPONSE_OPEN_BROWSER</a> = 0,</div><div class="line"><a name="l04467"></a><span class="lineno"><a class="line" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a7fddf807a1d5d3c26b28cfdf89e4300e"> 4467</a></span>&#160; <a class="code" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a7fddf807a1d5d3c26b28cfdf89e4300e">GTKSOCKET_NOT_AVAIL_RESPONSE_NUM</a></div><div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>&#160;};</div><div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>&#160;</div><div class="line"><a name="l04474"></a><span class="lineno"><a class="line" href="rcw_8c.html#af11fbe0be155430d135da25ca115777e"> 4474</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#af11fbe0be155430d135da25ca115777e">rcw_gtksocket_not_available_dialog_response</a>(GtkDialog * <span class="keyword">self</span>,</div><div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160; gint response_id,</div><div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> * cnnobj)</div><div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>&#160;{</div><div class="line"><a name="l04478"></a><span class="lineno"> 4478</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>&#160;</div><div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>&#160; GError *error = NULL;</div><div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>&#160;</div><div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>&#160; <span class="keywordflow">if</span> (response_id == <a class="code" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a6fafaf979c15a6300f4533321f1890d7">GTKSOCKET_NOT_AVAIL_RESPONSE_OPEN_BROWSER</a>) {</div><div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>&#160; gtk_show_uri_on_window(</div><div class="line"><a name="l04484"></a><span class="lineno"> 4484</span>&#160; NULL,</div><div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>&#160; <span class="comment">// TRANSLATORS: This should be a link to the Remmina wiki page:</span></div><div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>&#160; <span class="comment">// TRANSLATORS: &#39;GtkSocket feature is not available&#39;.</span></div><div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>&#160; _(<span class="stringliteral">&quot;https://gitlab.com/Remmina/Remmina/-/wikis/GtkSocket-feature-is-not-available-in-a-Wayland-session&quot;</span>),</div><div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>&#160; GDK_CURRENT_TIME, &amp;error</div><div class="line"><a name="l04489"></a><span class="lineno"> 4489</span>&#160; );</div><div class="line"><a name="l04490"></a><span class="lineno"> 4490</span>&#160; }</div><div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>&#160;</div><div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>&#160; <span class="comment">// Close the current page since it&#39;s useless without GtkSocket.</span></div><div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>&#160; <span class="comment">// The user would need to manually click the close button.</span></div><div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>&#160; <span class="keywordflow">if</span> (cnnobj) <a class="code" href="rcw_8c.html#a2690c97a972e458dea9f5c0566ea50b9">rco_disconnect_current_page</a>(cnnobj);</div><div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>&#160;</div><div class="line"><a name="l04496"></a><span class="lineno"> 4496</span>&#160; gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>&#160;}</div><div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>&#160;</div><div class="line"><a name="l04499"></a><span class="lineno"><a class="line" href="rcw_8h.html#ad3c2fe67b137c757bd21b79ad5dcc5ff"> 4499</a></span>&#160;GtkWidget *<a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, GCallback disconnect_cb, gpointer data, guint *handler)</div><div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>&#160;{</div><div class="line"><a name="l04501"></a><span class="lineno"> 4501</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04502"></a><span class="lineno"> 4502</span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj;</div><div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>&#160;</div><div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>&#160; gint ret;</div><div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>&#160; GtkWidget *newpage;</div><div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>&#160; gint width, height;</div><div class="line"><a name="l04508"></a><span class="lineno"> 4508</span>&#160; gboolean maximize;</div><div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>&#160; gint view_mode;</div><div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>&#160; <span class="keyword">const</span> gchar *msg;</div><div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode;</div><div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>&#160;</div><div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>&#160; <span class="keywordflow">if</span> (disconnect_cb) {</div><div class="line"><a name="l04514"></a><span class="lineno"> 4514</span>&#160; g_print(<span class="stringliteral">&quot;disconnect_cb is deprecated inside rcw_open_from_file_full() and should be null\n&quot;</span>);</div><div class="line"><a name="l04515"></a><span class="lineno"> 4515</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l04516"></a><span class="lineno"> 4516</span>&#160; }</div><div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>&#160;</div><div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>&#160;</div><div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>&#160; <span class="comment">/* Create the RemminaConnectionObject */</span></div><div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>&#160; cnnobj = g_new0(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a>, 1);</div><div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a> = remminafile;</div><div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>&#160;</div><div class="line"><a name="l04523"></a><span class="lineno"> 4523</span>&#160; <span class="comment">/* Create the RemminaProtocolWidget */</span></div><div class="line"><a name="l04524"></a><span class="lineno"> 4524</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a> = <a class="code" href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a>();</div><div class="line"><a name="l04525"></a><span class="lineno"> 4525</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>, remminafile, cnnobj);</div><div class="line"><a name="l04526"></a><span class="lineno"> 4526</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>)) {</div><div class="line"><a name="l04527"></a><span class="lineno"> 4527</span>&#160; GtkWindow *wparent;</div><div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>&#160; wparent = <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>();</div><div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>&#160; msg = <a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>&#160; dialog = gtk_message_dialog_new(wparent, GTK_DIALOG_DESTROY_WITH_PARENT,</div><div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>&#160; GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, <span class="stringliteral">&quot;%s&quot;</span>, msg);</div><div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>&#160; gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l04534"></a><span class="lineno"> 4534</span>&#160; <span class="comment">/* We should destroy cnnobj-&gt;proto and cnnobj now… TODO: Fix this leak */</span></div><div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>&#160; }</div><div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>&#160;</div><div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>&#160;</div><div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>&#160;</div><div class="line"><a name="l04540"></a><span class="lineno"> 4540</span>&#160; <span class="comment">/* Set a name for the widget, for CSS selector */</span></div><div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>&#160; gtk_widget_set_name(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;remmina-protocol-widget&quot;</span>);</div><div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>&#160;</div><div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>&#160; gtk_widget_set_halign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_FILL);</div><div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>&#160; gtk_widget_set_valign(GTK_WIDGET(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), GTK_ALIGN_FILL);</div><div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>&#160;</div><div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>&#160; <span class="keywordflow">if</span> (data)</div><div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>&#160; g_object_set_data(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;user-data&quot;</span>, data);</div><div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>&#160;</div><div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>&#160; view_mode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;viewmode&quot;</span>, 0);</div><div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a>)</div><div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>&#160; view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>&#160; gint ismultimon = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, 0);</div><div class="line"><a name="l04553"></a><span class="lineno"> 4553</span>&#160;</div><div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>&#160; <span class="keywordflow">if</span> (ismultimon)</div><div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>&#160; view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>&#160;</div><div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>)</div><div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>&#160; view_mode = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</div><div class="line"><a name="l04559"></a><span class="lineno"> 4559</span>&#160;</div><div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>&#160; <span class="comment">/* Create the viewport to make the RemminaProtocolWidget scrollable */</span></div><div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a> = gtk_viewport_new(NULL, NULL);</div><div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>&#160; gtk_widget_set_name(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>, <span class="stringliteral">&quot;remmina-cw-viewport&quot;</span>);</div><div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>&#160; gtk_widget_show(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>);</div><div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>&#160; gtk_container_set_border_width(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>), 0);</div><div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>&#160; gtk_viewport_set_shadow_type(GTK_VIEWPORT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>), GTK_SHADOW_NONE);</div><div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>&#160;</div><div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>&#160; <span class="comment">/* Create the scrolled container */</span></div><div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>&#160; scalemode = <a class="code" href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a>(cnnobj, NULL, NULL);</div><div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a> = <a class="code" href="rcw_8c.html#a36c08f198ab102d001d1221bdd8ea38c">rco_create_scrolled_container</a>(scalemode, view_mode);</div><div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>&#160;</div><div class="line"><a name="l04571"></a><span class="lineno"> 4571</span>&#160; gtk_container_add(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">scrolled_container</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>);</div><div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>&#160;</div><div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>&#160; <span class="comment">/* Determine whether the plugin can scale or not. If the plugin can scale and we do</span></div><div class="line"><a name="l04574"></a><span class="lineno"> 4574</span>&#160;<span class="comment"> * not want to expand, then we add a GtkAspectFrame to maintain aspect ratio during scaling */</span></div><div class="line"><a name="l04575"></a><span class="lineno"> 4575</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a1f3920f6710917d6944491ae1d7b1250">plugin_can_scale</a> = <a class="code" href="remmina__plugin__manager_8c.html#a1668951fd7067f2c405e001836855080">remmina_plugin_manager_query_feature_by_type</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>,</div><div class="line"><a name="l04576"></a><span class="lineno"> 4576</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>),</div><div class="line"><a name="l04577"></a><span class="lineno"> 4577</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f">REMMINA_PROTOCOL_FEATURE_TYPE_SCALE</a>);</div><div class="line"><a name="l04578"></a><span class="lineno"> 4578</span>&#160;</div><div class="line"><a name="l04579"></a><span class="lineno"> 4579</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">aspectframe</a> = NULL;</div><div class="line"><a name="l04580"></a><span class="lineno"> 4580</span>&#160; gtk_container_add(GTK_CONTAINER(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>), cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l04581"></a><span class="lineno"> 4581</span>&#160;</div><div class="line"><a name="l04582"></a><span class="lineno"> 4582</span>&#160; <span class="comment">/* Determine whether this connection will be put on a new window</span></div><div class="line"><a name="l04583"></a><span class="lineno"> 4583</span>&#160;<span class="comment"> * or in an existing one */</span></div><div class="line"><a name="l04584"></a><span class="lineno"> 4584</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> = <a class="code" href="rcw_8c.html#a6a61db497c95cf18aea60b2a3a5a31c0">rcw_find</a>(remminafile);</div><div class="line"><a name="l04585"></a><span class="lineno"> 4585</span>&#160; <span class="keywordflow">if</span> (!cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>) {</div><div class="line"><a name="l04586"></a><span class="lineno"> 4586</span>&#160; <span class="comment">/* Connection goes on a new toplevel window */</span></div><div class="line"><a name="l04587"></a><span class="lineno"> 4587</span>&#160; <span class="keywordflow">switch</span> (view_mode) {</div><div class="line"><a name="l04588"></a><span class="lineno"> 4588</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a>:</div><div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>:</div><div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> = <a class="code" href="rcw_8c.html#a11bb04a25b6c8a79af3cb34f22e28dd8">rcw_create_fullscreen</a>(NULL, view_mode);</div><div class="line"><a name="l04591"></a><span class="lineno"> 4591</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04592"></a><span class="lineno"> 4592</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a>:</div><div class="line"><a name="l04593"></a><span class="lineno"> 4593</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l04594"></a><span class="lineno"> 4594</span>&#160; width = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_width&quot;</span>, 640);</div><div class="line"><a name="l04595"></a><span class="lineno"> 4595</span>&#160; height = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_height&quot;</span>, 480);</div><div class="line"><a name="l04596"></a><span class="lineno"> 4596</span>&#160; maximize = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;window_maximize&quot;</span>, FALSE) ? TRUE : FALSE;</div><div class="line"><a name="l04597"></a><span class="lineno"> 4597</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a> = <a class="code" href="rcw_8c.html#a95c64795004c7778c56068abeb1a6bd0">rcw_create_scrolled</a>(width, height, maximize);</div><div class="line"><a name="l04598"></a><span class="lineno"> 4598</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>&#160; }</div><div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>&#160; <a class="code" href="rcw_8c.html#af8d1a8843f974fb8170d76f945a72080">rcw_update_tag</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, cnnobj);</div><div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>&#160; <a class="code" href="rcw_8c.html#ad5a67ac52028302d5681cceaf9ac46bc">rcw_append_new_page</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, cnnobj);</div><div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>&#160; newpage = <a class="code" href="rcw_8c.html#ad5a67ac52028302d5681cceaf9ac46bc">rcw_append_new_page</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>, cnnobj);</div><div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>&#160; gtk_window_present(GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>));</div><div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>&#160; <a class="code" href="rcw_8c.html#a5e70819cad41022a0070c8102dd6dd6f">nb_set_current_page</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook, newpage);</div><div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>&#160; }</div><div class="line"><a name="l04607"></a><span class="lineno"> 4607</span>&#160;</div><div class="line"><a name="l04608"></a><span class="lineno"> 4608</span>&#160; <span class="comment">// Do not call remmina_protocol_widget_update_alignment(cnnobj); here or cnnobj-&gt;proto will not fill its parent size</span></div><div class="line"><a name="l04609"></a><span class="lineno"> 4609</span>&#160; <span class="comment">// and remmina_protocol_widget_update_remote_resolution() cannot autodetect available space</span></div><div class="line"><a name="l04610"></a><span class="lineno"> 4610</span>&#160;</div><div class="line"><a name="l04611"></a><span class="lineno"> 4611</span>&#160; gtk_widget_show(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>);</div><div class="line"><a name="l04612"></a><span class="lineno"> 4612</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;connect&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a3237ef26caa19b9926b485f94132cea7">rco_on_connect</a>), cnnobj);</div><div class="line"><a name="l04613"></a><span class="lineno"> 4613</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;disconnect&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a029feea88b7ef32425595efe7d270947">rco_on_disconnect</a>), NULL);</div><div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;desktop-resize&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a61b9eae2dd47962c5966d5d32eec9964">rco_on_desktop_resize</a>), NULL);</div><div class="line"><a name="l04615"></a><span class="lineno"> 4615</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;update-align&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#adca4317296daf9b6c51c4258a70faf5a">rco_on_update_align</a>), NULL);</div><div class="line"><a name="l04616"></a><span class="lineno"> 4616</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;lock-dynres&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a01f06672daa6653c3ee7fc72e83ae82f">rco_on_lock_dynres</a>), NULL);</div><div class="line"><a name="l04617"></a><span class="lineno"> 4617</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;unlock-dynres&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#aa79b4c65a2a416a94c27363324c1cede">rco_on_unlock_dynres</a>), NULL);</div><div class="line"><a name="l04618"></a><span class="lineno"> 4618</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;enter-notify-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#a0650f31e99dd15c719328345411deba0">rco_enter_protocol_widget</a>), cnnobj);</div><div class="line"><a name="l04619"></a><span class="lineno"> 4619</span>&#160; g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;leave-notify-event&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ad45e51f5a72b7ffe9bca86d336563757">rco_leave_protocol_widget</a>), cnnobj);</div><div class="line"><a name="l04620"></a><span class="lineno"> 4620</span>&#160;</div><div class="line"><a name="l04621"></a><span class="lineno"> 4621</span>&#160; <span class="keywordflow">if</span> (!remmina_pref.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>)</div><div class="line"><a name="l04622"></a><span class="lineno"> 4622</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">remmina_file</a>, <span class="stringliteral">&quot;viewmode&quot;</span>, remmina_pref.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a>);</div><div class="line"><a name="l04623"></a><span class="lineno"> 4623</span>&#160;</div><div class="line"><a name="l04624"></a><span class="lineno"> 4624</span>&#160;</div><div class="line"><a name="l04625"></a><span class="lineno"> 4625</span>&#160; <span class="comment">/* If it is a GtkSocket plugin and X11 is not available, we inform the</span></div><div class="line"><a name="l04626"></a><span class="lineno"> 4626</span>&#160;<span class="comment"> * user and close the connection */</span></div><div class="line"><a name="l04627"></a><span class="lineno"> 4627</span>&#160; ret = <a class="code" href="remmina__plugin__manager_8c.html#a1668951fd7067f2c405e001836855080">remmina_plugin_manager_query_feature_by_type</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>,</div><div class="line"><a name="l04628"></a><span class="lineno"> 4628</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>),</div><div class="line"><a name="l04629"></a><span class="lineno"> 4629</span>&#160; <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a4a9b04df122e3a20c3ae51d90280fea7">REMMINA_PROTOCOL_FEATURE_TYPE_GTKSOCKET</a>);</div><div class="line"><a name="l04630"></a><span class="lineno"> 4630</span>&#160; <span class="keywordflow">if</span> (ret &amp;&amp; !<a class="code" href="remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f">remmina_gtksocket_available</a>()) {</div><div class="line"><a name="l04631"></a><span class="lineno"> 4631</span>&#160; gchar *title = _(<span class="stringliteral">&quot;Warning: This plugin requires GtkSocket, but this &quot;</span></div><div class="line"><a name="l04632"></a><span class="lineno"> 4632</span>&#160; <span class="stringliteral">&quot;feature is unavailable in a Wayland session.&quot;</span>);</div><div class="line"><a name="l04633"></a><span class="lineno"> 4633</span>&#160;</div><div class="line"><a name="l04634"></a><span class="lineno"> 4634</span>&#160; gchar *err_msg =</div><div class="line"><a name="l04635"></a><span class="lineno"> 4635</span>&#160; <span class="comment">// TRANSLATORS: This should be a link to the Remmina wiki page:</span></div><div class="line"><a name="l04636"></a><span class="lineno"> 4636</span>&#160; <span class="comment">// &#39;GtkSocket feature is not available&#39;.</span></div><div class="line"><a name="l04637"></a><span class="lineno"> 4637</span>&#160; _(<span class="stringliteral">&quot;Plugins relying on GtkSocket can&#39;t run in a &quot;</span></div><div class="line"><a name="l04638"></a><span class="lineno"> 4638</span>&#160; <span class="stringliteral">&quot;Wayland session.\nFor more info and a possible &quot;</span></div><div class="line"><a name="l04639"></a><span class="lineno"> 4639</span>&#160; <span class="stringliteral">&quot;workaround, please visit the Remmina wiki at:\n\n&quot;</span></div><div class="line"><a name="l04640"></a><span class="lineno"> 4640</span>&#160; <span class="stringliteral">&quot;https://gitlab.com/Remmina/Remmina/-/wikis/GtkSocket-feature-is-not-available-in-a-Wayland-session&quot;</span>);</div><div class="line"><a name="l04641"></a><span class="lineno"> 4641</span>&#160;</div><div class="line"><a name="l04642"></a><span class="lineno"> 4642</span>&#160; dialog = gtk_message_dialog_new(</div><div class="line"><a name="l04643"></a><span class="lineno"> 4643</span>&#160; GTK_WINDOW(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>),</div><div class="line"><a name="l04644"></a><span class="lineno"> 4644</span>&#160; GTK_DIALOG_MODAL,</div><div class="line"><a name="l04645"></a><span class="lineno"> 4645</span>&#160; GTK_MESSAGE_WARNING,</div><div class="line"><a name="l04646"></a><span class="lineno"> 4646</span>&#160; GTK_BUTTONS_OK,</div><div class="line"><a name="l04647"></a><span class="lineno"> 4647</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>, title);</div><div class="line"><a name="l04648"></a><span class="lineno"> 4648</span>&#160;</div><div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>&#160; gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), <span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>&#160; err_msg);</div><div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>&#160; gtk_dialog_add_button(GTK_DIALOG(dialog), _(<span class="stringliteral">&quot;Open in web browser&quot;</span>),</div><div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>&#160; <a class="code" href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a6fafaf979c15a6300f4533321f1890d7">GTKSOCKET_NOT_AVAIL_RESPONSE_OPEN_BROWSER</a>);</div><div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>&#160;</div><div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>&#160; REMMINA_CRITICAL(g_strdup_printf(<span class="stringliteral">&quot;%s\n%s&quot;</span>, title, err_msg));</div><div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>&#160;</div><div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>&#160; g_signal_connect(G_OBJECT(dialog),</div><div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>&#160; <span class="stringliteral">&quot;response&quot;</span>,</div><div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>&#160; G_CALLBACK(<a class="code" href="rcw_8c.html#af11fbe0be155430d135da25ca115777e">rcw_gtksocket_not_available_dialog_response</a>),</div><div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>&#160; cnnobj);</div><div class="line"><a name="l04660"></a><span class="lineno"> 4660</span>&#160;</div><div class="line"><a name="l04661"></a><span class="lineno"> 4661</span>&#160; <span class="comment">// Make Text selectable. Usefull because of the link in the text.</span></div><div class="line"><a name="l04662"></a><span class="lineno"> 4662</span>&#160; GtkWidget *area = gtk_message_dialog_get_message_area(</div><div class="line"><a name="l04663"></a><span class="lineno"> 4663</span>&#160; GTK_MESSAGE_DIALOG(dialog));</div><div class="line"><a name="l04664"></a><span class="lineno"> 4664</span>&#160; GtkContainer *box = (GtkContainer *)area;</div><div class="line"><a name="l04665"></a><span class="lineno"> 4665</span>&#160;</div><div class="line"><a name="l04666"></a><span class="lineno"> 4666</span>&#160; GList *children = gtk_container_get_children(box);</div><div class="line"><a name="l04667"></a><span class="lineno"> 4667</span>&#160; g_list_foreach(children, <a class="code" href="rcw_8c.html#a78e4acb7bd8b9e502442949ef6204f58">set_label_selectable</a>, NULL);</div><div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>&#160; g_list_free(children);</div><div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>&#160;</div><div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l04671"></a><span class="lineno"> 4671</span>&#160;</div><div class="line"><a name="l04672"></a><span class="lineno"> 4672</span>&#160; <span class="keywordflow">return</span> NULL; <span class="comment">/* Should we destroy something before returning? */</span></div><div class="line"><a name="l04673"></a><span class="lineno"> 4673</span>&#160; }</div><div class="line"><a name="l04674"></a><span class="lineno"> 4674</span>&#160;</div><div class="line"><a name="l04675"></a><span class="lineno"> 4675</span>&#160; <span class="keywordflow">if</span> (cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;floating_toolbar_widget)</div><div class="line"><a name="l04676"></a><span class="lineno"> 4676</span>&#160; gtk_widget_show(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;floating_toolbar_widget);</div><div class="line"><a name="l04677"></a><span class="lineno"> 4677</span>&#160;</div><div class="line"><a name="l04678"></a><span class="lineno"> 4678</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>)) {</div><div class="line"><a name="l04679"></a><span class="lineno"> 4679</span>&#160; printf(<span class="stringliteral">&quot;OK, an error occurred in initializing the protocol plugin before connecting. The error is %s.\n&quot;</span></div><div class="line"><a name="l04680"></a><span class="lineno"> 4680</span>&#160; <span class="stringliteral">&quot;TODO: Put this string as an error to show&quot;</span>, <a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>((<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>));</div><div class="line"><a name="l04681"></a><span class="lineno"> 4681</span>&#160; <span class="keywordflow">return</span> cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>;</div><div class="line"><a name="l04682"></a><span class="lineno"> 4682</span>&#160; }</div><div class="line"><a name="l04683"></a><span class="lineno"> 4683</span>&#160;</div><div class="line"><a name="l04684"></a><span class="lineno"> 4684</span>&#160;</div><div class="line"><a name="l04685"></a><span class="lineno"> 4685</span>&#160; <span class="comment">/* GTK window setup is done here, and we are almost ready to call remmina_protocol_widget_open_connection().</span></div><div class="line"><a name="l04686"></a><span class="lineno"> 4686</span>&#160;<span class="comment"> * But size has not yet been allocated by GTK</span></div><div class="line"><a name="l04687"></a><span class="lineno"> 4687</span>&#160;<span class="comment"> * to the widgets. If we are in RES_USE_INITIAL_WINDOW_SIZE resolution mode or scale is REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES,</span></div><div class="line"><a name="l04688"></a><span class="lineno"> 4688</span>&#160;<span class="comment"> * we should wait for a size allocation from GTK for cnnobj-&gt;proto</span></div><div class="line"><a name="l04689"></a><span class="lineno"> 4689</span>&#160;<span class="comment"> * before connecting */</span></div><div class="line"><a name="l04690"></a><span class="lineno"> 4690</span>&#160;</div><div class="line"><a name="l04691"></a><span class="lineno"> 4691</span>&#160; cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a09f89d6c0e4e52905aba1dd093e5c7f2">deferred_open_size_allocate_handler</a> = g_signal_connect(G_OBJECT(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>), <span class="stringliteral">&quot;size-allocate&quot;</span>, G_CALLBACK(<a class="code" href="rcw_8c.html#ad5ac9d52e0afc18834da73ef2bf18edd">rpw_size_allocated_on_connection</a>), NULL);</div><div class="line"><a name="l04692"></a><span class="lineno"> 4692</span>&#160;</div><div class="line"><a name="l04693"></a><span class="lineno"> 4693</span>&#160; <span class="keywordflow">return</span> cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">proto</a>;</div><div class="line"><a name="l04694"></a><span class="lineno"> 4694</span>&#160;}</div><div class="line"><a name="l04695"></a><span class="lineno"> 4695</span>&#160;</div><div class="line"><a name="l04696"></a><span class="lineno"><a class="line" href="rcw_8h.html#affd4a8e1c05f88299990bb0f3d5d1b9d"> 4696</a></span>&#160;GtkWindow *<a class="code" href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l04697"></a><span class="lineno"> 4697</span>&#160;{</div><div class="line"><a name="l04698"></a><span class="lineno"> 4698</span>&#160; <span class="keywordflow">return</span> &amp;cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a587c1131f16856f8b114d0a51d261d0d">window</a>;</div><div class="line"><a name="l04699"></a><span class="lineno"> 4699</span>&#160;}</div><div class="line"><a name="l04700"></a><span class="lineno"><a class="line" href="rcw_8h.html#a96f1d274dafe5e4953da52beb75f7d14"> 4700</a></span>&#160;GtkWidget *<a class="code" href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l04701"></a><span class="lineno"> 4701</span>&#160;{</div><div class="line"><a name="l04702"></a><span class="lineno"> 4702</span>&#160; <span class="keywordflow">return</span> cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a016a7b65f9db00458f3fc000c7e3a89d">viewport</a>;</div><div class="line"><a name="l04703"></a><span class="lineno"> 4703</span>&#160;}</div><div class="line"><a name="l04704"></a><span class="lineno"> 4704</span>&#160;</div><div class="line"><a name="l04705"></a><span class="lineno"><a class="line" href="rcw_8h.html#a4204fcd726a60493b290dd5590ec693d"> 4705</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a4204fcd726a60493b290dd5590ec693d">rcw_set_delete_confirm_mode</a>(<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *cnnwin, <a class="code" href="rcw_8h.html#a2450dfe27d3ded59370ea879419f307f">RemminaConnectionWindowOnDeleteConfirmMode</a> mode)</div><div class="line"><a name="l04706"></a><span class="lineno"> 4706</span>&#160;{</div><div class="line"><a name="l04707"></a><span class="lineno"> 4707</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04708"></a><span class="lineno"> 4708</span>&#160; cnnwin-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;on_delete_confirm_mode = mode;</div><div class="line"><a name="l04709"></a><span class="lineno"> 4709</span>&#160;}</div><div class="line"><a name="l04710"></a><span class="lineno"> 4710</span>&#160;</div><div class="line"><a name="l04715"></a><span class="lineno"><a class="line" href="rcw_8h.html#a96e821dc68caa7f3380a513eb47aead7"> 4715</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, RemminaMessagePanel *mp)</div><div class="line"><a name="l04716"></a><span class="lineno"> 4716</span>&#160;{</div><div class="line"><a name="l04717"></a><span class="lineno"> 4717</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04718"></a><span class="lineno"> 4718</span>&#160; GList *childs, *cc;</div><div class="line"><a name="l04719"></a><span class="lineno"> 4719</span>&#160; RemminaMessagePanel *lastPanel;</div><div class="line"><a name="l04720"></a><span class="lineno"> 4720</span>&#160; gboolean was_visible;</div><div class="line"><a name="l04721"></a><span class="lineno"> 4721</span>&#160; GtkWidget *page;</div><div class="line"><a name="l04722"></a><span class="lineno"> 4722</span>&#160;</div><div class="line"><a name="l04723"></a><span class="lineno"> 4723</span>&#160; page = <a class="code" href="rcw_8c.html#a756830638372adda00be33468c8d3ed2">nb_find_page_by_cnnobj</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook, cnnobj);</div><div class="line"><a name="l04724"></a><span class="lineno"> 4724</span>&#160; childs = gtk_container_get_children(GTK_CONTAINER(page));</div><div class="line"><a name="l04725"></a><span class="lineno"> 4725</span>&#160; cc = g_list_first(childs);</div><div class="line"><a name="l04726"></a><span class="lineno"> 4726</span>&#160; <span class="keywordflow">while</span> (cc != NULL) {</div><div class="line"><a name="l04727"></a><span class="lineno"> 4727</span>&#160; <span class="keywordflow">if</span> ((RemminaMessagePanel *)cc-&gt;data == mp)</div><div class="line"><a name="l04728"></a><span class="lineno"> 4728</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04729"></a><span class="lineno"> 4729</span>&#160; cc = g_list_next(cc);</div><div class="line"><a name="l04730"></a><span class="lineno"> 4730</span>&#160; }</div><div class="line"><a name="l04731"></a><span class="lineno"> 4731</span>&#160; g_list_free(childs);</div><div class="line"><a name="l04732"></a><span class="lineno"> 4732</span>&#160;</div><div class="line"><a name="l04733"></a><span class="lineno"> 4733</span>&#160; <span class="keywordflow">if</span> (cc == NULL) {</div><div class="line"><a name="l04734"></a><span class="lineno"> 4734</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Warning. There was a request to destroy a RemminaMessagePanel that is not on the page\n&quot;</span>);</div><div class="line"><a name="l04735"></a><span class="lineno"> 4735</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l04736"></a><span class="lineno"> 4736</span>&#160; }</div><div class="line"><a name="l04737"></a><span class="lineno"> 4737</span>&#160; was_visible = gtk_widget_is_visible(GTK_WIDGET(mp));</div><div class="line"><a name="l04738"></a><span class="lineno"> 4738</span>&#160; gtk_widget_destroy(GTK_WIDGET(mp));</div><div class="line"><a name="l04739"></a><span class="lineno"> 4739</span>&#160;</div><div class="line"><a name="l04740"></a><span class="lineno"> 4740</span>&#160; <span class="comment">/* And now, show the last remaining message panel, if needed */</span></div><div class="line"><a name="l04741"></a><span class="lineno"> 4741</span>&#160; <span class="keywordflow">if</span> (was_visible) {</div><div class="line"><a name="l04742"></a><span class="lineno"> 4742</span>&#160; childs = gtk_container_get_children(GTK_CONTAINER(page));</div><div class="line"><a name="l04743"></a><span class="lineno"> 4743</span>&#160; cc = g_list_first(childs);</div><div class="line"><a name="l04744"></a><span class="lineno"> 4744</span>&#160; lastPanel = NULL;</div><div class="line"><a name="l04745"></a><span class="lineno"> 4745</span>&#160; <span class="keywordflow">while</span> (cc != NULL) {</div><div class="line"><a name="l04746"></a><span class="lineno"> 4746</span>&#160; <span class="keywordflow">if</span> (G_TYPE_CHECK_INSTANCE_TYPE(cc-&gt;data, REMMINA_TYPE_MESSAGE_PANEL))</div><div class="line"><a name="l04747"></a><span class="lineno"> 4747</span>&#160; lastPanel = (RemminaMessagePanel *)cc-&gt;data;</div><div class="line"><a name="l04748"></a><span class="lineno"> 4748</span>&#160; cc = g_list_next(cc);</div><div class="line"><a name="l04749"></a><span class="lineno"> 4749</span>&#160; }</div><div class="line"><a name="l04750"></a><span class="lineno"> 4750</span>&#160; g_list_free(childs);</div><div class="line"><a name="l04751"></a><span class="lineno"> 4751</span>&#160; <span class="keywordflow">if</span> (lastPanel)</div><div class="line"><a name="l04752"></a><span class="lineno"> 4752</span>&#160; gtk_widget_show(GTK_WIDGET(lastPanel));</div><div class="line"><a name="l04753"></a><span class="lineno"> 4753</span>&#160; }</div><div class="line"><a name="l04754"></a><span class="lineno"> 4754</span>&#160;}</div><div class="line"><a name="l04755"></a><span class="lineno"> 4755</span>&#160;</div><div class="line"><a name="l04762"></a><span class="lineno"><a class="line" href="rcw_8h.html#ac5eda3a29c88ac88d80b5775e39ffcb4"> 4762</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, RemminaMessagePanel *mp)</div><div class="line"><a name="l04763"></a><span class="lineno"> 4763</span>&#160;{</div><div class="line"><a name="l04764"></a><span class="lineno"> 4764</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l04765"></a><span class="lineno"> 4765</span>&#160; GList *childs, *cc;</div><div class="line"><a name="l04766"></a><span class="lineno"> 4766</span>&#160; GtkWidget *page;</div><div class="line"><a name="l04767"></a><span class="lineno"> 4767</span>&#160;</div><div class="line"><a name="l04768"></a><span class="lineno"> 4768</span>&#160; <span class="comment">/* Hides all RemminaMessagePanels childs of cnnobj-&gt;page */</span></div><div class="line"><a name="l04769"></a><span class="lineno"> 4769</span>&#160; page = <a class="code" href="rcw_8c.html#a756830638372adda00be33468c8d3ed2">nb_find_page_by_cnnobj</a>(cnnobj-&gt;<a class="code" href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">cnnwin</a>-&gt;<a class="code" href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">priv</a>-&gt;notebook, cnnobj);</div><div class="line"><a name="l04770"></a><span class="lineno"> 4770</span>&#160; childs = gtk_container_get_children(GTK_CONTAINER(page));</div><div class="line"><a name="l04771"></a><span class="lineno"> 4771</span>&#160; cc = g_list_first(childs);</div><div class="line"><a name="l04772"></a><span class="lineno"> 4772</span>&#160; <span class="keywordflow">while</span> (cc != NULL) {</div><div class="line"><a name="l04773"></a><span class="lineno"> 4773</span>&#160; <span class="keywordflow">if</span> (G_TYPE_CHECK_INSTANCE_TYPE(cc-&gt;data, REMMINA_TYPE_MESSAGE_PANEL))</div><div class="line"><a name="l04774"></a><span class="lineno"> 4774</span>&#160; gtk_widget_hide(GTK_WIDGET(cc-&gt;data));</div><div class="line"><a name="l04775"></a><span class="lineno"> 4775</span>&#160; cc = g_list_next(cc);</div><div class="line"><a name="l04776"></a><span class="lineno"> 4776</span>&#160; }</div><div class="line"><a name="l04777"></a><span class="lineno"> 4777</span>&#160; g_list_free(childs);</div><div class="line"><a name="l04778"></a><span class="lineno"> 4778</span>&#160;</div><div class="line"><a name="l04779"></a><span class="lineno"> 4779</span>&#160; <span class="comment">/* Add the new message panel at the top of cnnobj-&gt;page */</span></div><div class="line"><a name="l04780"></a><span class="lineno"> 4780</span>&#160; gtk_box_pack_start(GTK_BOX(page), GTK_WIDGET(mp), FALSE, FALSE, 0);</div><div class="line"><a name="l04781"></a><span class="lineno"> 4781</span>&#160; gtk_box_reorder_child(GTK_BOX(page), GTK_WIDGET(mp), 0);</div><div class="line"><a name="l04782"></a><span class="lineno"> 4782</span>&#160;</div><div class="line"><a name="l04783"></a><span class="lineno"> 4783</span>&#160; <span class="comment">/* Show the message panel */</span></div><div class="line"><a name="l04784"></a><span class="lineno"> 4784</span>&#160; gtk_widget_show_all(GTK_WIDGET(mp));</div><div class="line"><a name="l04785"></a><span class="lineno"> 4785</span>&#160;</div><div class="line"><a name="l04786"></a><span class="lineno"> 4786</span>&#160; <span class="comment">/* Focus the correct field of the RemminaMessagePanel */</span></div><div class="line"><a name="l04787"></a><span class="lineno"> 4787</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aacb1f47e5ad88086c1bda1b0a156c34d">remmina_message_panel_focus_auth_entry</a>(mp);</div><div class="line"><a name="l04788"></a><span class="lineno"> 4788</span>&#160;}</div><div class="ttc" id="rcw_8c_html_a6a61db497c95cf18aea60b2a3a5a31c0"><div class="ttname"><a href="rcw_8c.html#a6a61db497c95cf18aea60b2a3a5a31c0">rcw_find</a></div><div class="ttdeci">static RemminaConnectionWindow * rcw_find(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04234">rcw.c:4234</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01420">remmina_protocol_widget.c:1420</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01425">remmina_protocol_widget.c:1425</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a10b1f3d9b49687c09ec5dd98a0577d7f"><div class="ttname"><a href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">_RemminaPref::shortcutkey_fullscreen</a></div><div class="ttdeci">guint shortcutkey_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00175">remmina_pref.h:175</a></div></div>
<div class="ttc" id="rcw_8c_html_a319e8c05fa25a57aa34875d48e182726"><div class="ttname"><a href="rcw_8c.html#a319e8c05fa25a57aa34875d48e182726">rco_update_toolbar</a></div><div class="ttdeci">static void rco_update_toolbar(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02628">rcw.c:2628</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a508044024b303c286a0e643e44d85a29"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_error_message(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01439">remmina_protocol_widget.c:1439</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a508044024b303c286a0e643e44d85a29"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_error_message(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01444">remmina_protocol_widget.c:1444</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_a09f89d6c0e4e52905aba1dd093e5c7f2"><div class="ttname"><a href="struct___remmina_connection_object.html#a09f89d6c0e4e52905aba1dd093e5c7f2">_RemminaConnectionObject::deferred_open_size_allocate_handler</a></div><div class="ttdeci">gulong deferred_open_size_allocate_handler</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00177">rcw.c:177</a></div></div>
<div class="ttc" id="struct___remmina_pref_html"><div class="ttname"><a href="struct___remmina_pref.html">_RemminaPref</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00133">remmina_pref.h:133</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ac95fed56e8995e3361928ebf87505f21"><div class="ttname"><a href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">_RemminaPref::floating_toolbar_placement</a></div><div class="ttdeci">gint floating_toolbar_placement</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00224">remmina_pref.h:224</a></div></div>
@@ -98,8 +98,8 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a8a789be4e849f79bf8064bc47ba85ea3"><div class="ttname"><a href="rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3">rcw_focus_in</a></div><div class="ttdeci">static void rcw_focus_in(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02941">rcw.c:2941</a></div></div>
<div class="ttc" id="rcw_8c_html_a10c64d29db5f199eb4c86b0ae5a5a0bd"><div class="ttname"><a href="rcw_8c.html#a10c64d29db5f199eb4c86b0ae5a5a0bd">rcw_init</a></div><div class="ttdeci">static void rcw_init(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03216">rcw.c:3216</a></div></div>
<div class="ttc" id="rcw_8c_html_abbc84b2c450f62c288ff827c5d2c5cd2"><div class="ttname"><a href="rcw_8c.html#abbc84b2c450f62c288ff827c5d2c5cd2">get_current_allowed_scale_mode</a></div><div class="ttdeci">static RemminaScaleMode get_current_allowed_scale_mode(RemminaConnectionObject *cnnobj, gboolean *dynres_avail, gboolean *scale_avail)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00391">rcw.c:391</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_adbe15328275677cb38bd8c8a2d5e039d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00770">remmina_protocol_widget.c:770</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_af9b6a2c2665010ab09a6d9943f9850bd"><div class="ttname"><a href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a></div><div class="ttdeci">const RemminaProtocolFeature * remmina_protocol_widget_get_features(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00764">remmina_protocol_widget.c:764</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_adbe15328275677cb38bd8c8a2d5e039d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00775">remmina_protocol_widget.c:775</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_af9b6a2c2665010ab09a6d9943f9850bd"><div class="ttname"><a href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a></div><div class="ttdeci">const RemminaProtocolFeature * remmina_protocol_widget_get_features(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00769">remmina_protocol_widget.c:769</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a887cbbd379d159cd0ac1acea7173d07b"><div class="ttname"><a href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">_RemminaPref::shortcutkey_minimize</a></div><div class="ttdeci">guint shortcutkey_minimize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00185">remmina_pref.h:185</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f"><div class="ttname"><a href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f">TOOLBAR_PLACEMENT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00077">remmina_pref.h:77</a></div></div>
@@ -110,7 +110,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a5f5bc6d5bc53adaf815444145242a7df"><div class="ttname"><a href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">_RemminaPref::grab_color</a></div><div class="ttdeci">const gchar * grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00159">remmina_pref.h:159</a></div></div>
<div class="ttc" id="rcw_8c_html_a0ca9e87bf2fc3855699f80315d72314b"><div class="ttname"><a href="rcw_8c.html#a0ca9e87bf2fc3855699f80315d72314b">rcw_tb_drag_begin</a></div><div class="ttdeci">static void rcw_tb_drag_begin(GtkWidget *widget, GdkDragContext *context, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00828">rcw.c:828</a></div></div>
<div class="ttc" id="struct___remmina_applet_menu_item_html"><div class="ttname"><a href="struct___remmina_applet_menu_item.html">_RemminaAppletMenuItem</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu__item_8h_source.html#l00053">remmina_applet_menu_item.h:53</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a4017a800d7803a40d606ffce2578509a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00787">remmina_protocol_widget.c:787</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a4017a800d7803a40d606ffce2578509a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00792">remmina_protocol_widget.c:792</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558"><div class="ttname"><a href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558">REMMINA_TAB_BY_PROTOCOL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00085">remmina_pref.h:85</a></div></div>
<div class="ttc" id="rcw_8c_html_a5d41c895ab988890cfcd442afdb0d7b9"><div class="ttname"><a href="rcw_8c.html#a5d41c895ab988890cfcd442afdb0d7b9">rcw_toolbar_multi_monitor_mode</a></div><div class="ttdeci">static void rcw_toolbar_multi_monitor_mode(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01722">rcw.c:1722</a></div></div>
<div class="ttc" id="rcw_8c_html_ae09c2a83e973c3041254fb57bd58666f"><div class="ttname"><a href="rcw_8c.html#ae09c2a83e973c3041254fb57bd58666f">rco_call_protocol_feature_check</a></div><div class="ttdeci">static void rco_call_protocol_feature_check(GtkMenuItem *menuitem, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01816">rcw.c:1816</a></div></div>
@@ -118,11 +118,11 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_af2f5c8716d84e6223a4b2cbc9efc532b"><div class="ttname"><a href="rcw_8c.html#af2f5c8716d84e6223a4b2cbc9efc532b">rcw_toolbar_fullscreen</a></div><div class="ttdeci">static void rcw_toolbar_fullscreen(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01351">rcw.c:1351</a></div></div>
<div class="ttc" id="rcw_8c_html_a8f8175377bfbda4794674e619ca0fa8b"><div class="ttname"><a href="rcw_8c.html#a8f8175377bfbda4794674e619ca0fa8b">rcw_on_switch_page</a></div><div class="ttdeci">static void rcw_on_switch_page(GtkNotebook *notebook, GtkWidget *newpage, guint page_num, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03653">rcw.c:3653</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a7740488de65c0e642895cc9dfba07b6e"><div class="ttname"><a href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a></div><div class="ttdeci">GtkWindow * remmina_main_get_window()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01648">remmina_main.c:1648</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01384">remmina_protocol_widget.c:1384</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01389">remmina_protocol_widget.c:1389</a></div></div>
<div class="ttc" id="rcw_8c_html_acb1b2ab629603837e08f8d8de542316d"><div class="ttname"><a href="rcw_8c.html#acb1b2ab629603837e08f8d8de542316d">rcw_hostkey_func</a></div><div class="ttdeci">static gboolean rcw_hostkey_func(RemminaProtocolWidget *gp, guint keyval, gboolean release)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04053">rcw.c:4053</a></div></div>
<div class="ttc" id="remmina__scrolled__viewport_8c_html_a0ba56f429a9c1ec05b093f5f78be692c"><div class="ttname"><a href="remmina__scrolled__viewport_8c.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport_remove_motion</a></div><div class="ttdeci">void remmina_scrolled_viewport_remove_motion(RemminaScrolledViewport *gsv)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__scrolled__viewport_8c_source.html#l00190">remmina_scrolled_viewport.c:190</a></div></div>
<div class="ttc" id="types_8h_html_aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946"><div class="ttname"><a href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00144">types.h:144</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01355">remmina_protocol_widget.c:1355</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01360">remmina_protocol_widget.c:1360</a></div></div>
<div class="ttc" id="rcw_8c_html_ab1f5606917a73b7048b748ac33668523"><div class="ttname"><a href="rcw_8c.html#ab1f5606917a73b7048b748ac33668523">rcw_toolbar_preferences</a></div><div class="ttdeci">static void rcw_toolbar_preferences(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01895">rcw.c:1895</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a6ae707cecd1f6660d8e2168d7422b797"><div class="ttname"><a href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">_RemminaPref::hostkey</a></div><div class="ttdeci">guint hostkey</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00174">remmina_pref.h:174</a></div></div>
<div class="ttc" id="rcw_8c_html_a5e70819cad41022a0070c8102dd6dd6f"><div class="ttname"><a href="rcw_8c.html#a5e70819cad41022a0070c8102dd6dd6f">nb_set_current_page</a></div><div class="ttdeci">static void nb_set_current_page(GtkNotebook *notebook, GtkWidget *page)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01221">rcw.c:1221</a></div></div>
@@ -140,12 +140,12 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a45d70bbebf5163081d67df3dbb73cc1b"><div class="ttname"><a href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">_RemminaPref::shortcutkey_prevtab</a></div><div class="ttdeci">guint shortcutkey_prevtab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00177">remmina_pref.h:177</a></div></div>
<div class="ttc" id="rcw_8c_html_a95c64795004c7778c56068abeb1a6bd0"><div class="ttname"><a href="rcw_8c.html#a95c64795004c7778c56068abeb1a6bd0">rcw_create_scrolled</a></div><div class="ttdeci">static RemminaConnectionWindow * rcw_create_scrolled(gint width, gint height, gboolean maximize)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03766">rcw.c:3766</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01433">remmina_protocol_widget.c:1433</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01438">remmina_protocol_widget.c:1438</a></div></div>
<div class="ttc" id="rcw_8c_html_ab80a8d73f4a051adb133a847908293e9"><div class="ttname"><a href="rcw_8c.html#ab80a8d73f4a051adb133a847908293e9">rcw_toolbar_dynres</a></div><div class="ttdeci">static void rcw_toolbar_dynres(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01678">rcw.c:1678</a></div></div>
<div class="ttc" id="rcw_8c_html_ac5eda3a29c88ac88d80b5775e39ffcb4"><div class="ttname"><a href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a></div><div class="ttdeci">void rco_show_message_panel(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdoc">Each cnnobj-&gt;page can have more than one RemminaMessagePanel, but 0 or 1 are visible. </div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04762">rcw.c:4762</a></div></div>
<div class="ttc" id="remmina_8h_html"><div class="ttname"><a href="remmina_8h.html">remmina.h</a></div></div>
<div class="ttc" id="rcw_8c_html_a66d25df4427d16304571025bc6f88679"><div class="ttname"><a href="rcw_8c.html#a66d25df4427d16304571025bc6f88679">rcw_toolbar_grab</a></div><div class="ttdeci">static void rcw_toolbar_grab(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02297">rcw.c:2297</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01837">remmina_protocol_widget.c:1837</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01842">remmina_protocol_widget.c:1842</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_a1f3920f6710917d6944491ae1d7b1250"><div class="ttname"><a href="struct___remmina_connection_object.html#a1f3920f6710917d6944491ae1d7b1250">_RemminaConnectionObject::plugin_can_scale</a></div><div class="ttdeci">gboolean plugin_can_scale</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00172">rcw.c:172</a></div></div>
<div class="ttc" id="rcw_8c_html_ad3c2fe67b137c757bd21b79ad5dcc5ff"><div class="ttname"><a href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a></div><div class="ttdeci">GtkWidget * rcw_open_from_file_full(RemminaFile *remminafile, GCallback disconnect_cb, gpointer data, guint *handler)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04499">rcw.c:4499</a></div></div>
<div class="ttc" id="structitem_html"><div class="ttname"><a href="structitem.html">item</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00133">remmina_ssh.c:133</a></div></div>
@@ -162,7 +162,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_ad13167e478305c3fae8a4cea1d0e2f76"><div class="ttname"><a href="rcw_8c.html#ad13167e478305c3fae8a4cea1d0e2f76">rcw_toolbar_preferences_radio</a></div><div class="ttdeci">void rcw_toolbar_preferences_radio(RemminaConnectionObject *cnnobj, RemminaFile *remminafile, GtkWidget *menu, const RemminaProtocolFeature *feature, const gchar *domain, gboolean enabled)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01837">rcw.c:1837</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33"><div class="ttname"><a href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33">REMMINA_TAB_BY_GROUP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00084">remmina_pref.h:84</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_ae9dfd6986f18cb3d846a4933ac792fd5a3272be70c922ec6a1eaf498461943c51"><div class="ttname"><a href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5a3272be70c922ec6a1eaf498461943c51">REMMINA_CONDEXIT_ONDISCONNECT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00059">remmina_exec.h:59</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac705ffa194e3c3457e9a0a1bd6c79be8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a></div><div class="ttdeci">void remmina_protocol_widget_setup(RemminaProtocolWidget *gp, RemminaFile *remminafile, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02052">remmina_protocol_widget.c:2052</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac705ffa194e3c3457e9a0a1bd6c79be8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a></div><div class="ttdeci">void remmina_protocol_widget_setup(RemminaProtocolWidget *gp, RemminaFile *remminafile, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02058">remmina_protocol_widget.c:2058</a></div></div>
<div class="ttc" id="rcw_8c_html_a0cb504e984baf9ad7ba06b03da6ab746"><div class="ttname"><a href="rcw_8c.html#a0cb504e984baf9ad7ba06b03da6ab746">rcw_create_overlay_ftb_overlay</a></div><div class="ttdeci">static void rcw_create_overlay_ftb_overlay(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03838">rcw.c:3838</a></div></div>
<div class="ttc" id="rcw_8c_html_adae469553aa0647d0df5d88b180e7cd7"><div class="ttname"><a href="rcw_8c.html#adae469553aa0647d0df5d88b180e7cd7">rcw_delete</a></div><div class="ttdeci">gboolean rcw_delete(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00648">rcw.c:648</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00047">plugin.h:47</a></div></div>
@@ -181,19 +181,19 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_afc62938ff8bcaad6b743f50ecf36d292"><div class="ttname"><a href="rcw_8c.html#afc62938ff8bcaad6b743f50ecf36d292">rcw_place_toolbar</a></div><div class="ttdeci">static void rcw_place_toolbar(GtkToolbar *toolbar, GtkGrid *grid, GtkWidget *sibling, int toolbar_placement)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02594">rcw.c:2594</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae5c3a7fd35cc51f658dda67052440b47"><div class="ttname"><a href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">_RemminaPref::shortcutkey_autofit</a></div><div class="ttdeci">guint shortcutkey_autofit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00176">remmina_pref.h:176</a></div></div>
<div class="ttc" id="rcw_8c_html_a8ec8f547c27d9bfeb98abab525bb4a76"><div class="ttname"><a href="rcw_8c.html#a8ec8f547c27d9bfeb98abab525bb4a76">rcw_toolbar_preferences_popdown</a></div><div class="ttdeci">static void rcw_toolbar_preferences_popdown(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01758">rcw.c:1758</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00793">remmina_protocol_widget.c:793</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00798">remmina_protocol_widget.c:798</a></div></div>
<div class="ttc" id="rcw_8c_html_a3928a83b083a55e3af1ed81da49b25eb"><div class="ttname"><a href="rcw_8c.html#a3928a83b083a55e3af1ed81da49b25eb">rco_create_tab_label</a></div><div class="ttdeci">static GtkWidget * rco_create_tab_label(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03519">rcw.c:3519</a></div></div>
<div class="ttc" id="rcw_8c_html_a96e821dc68caa7f3380a513eb47aead7"><div class="ttname"><a href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a></div><div class="ttdeci">void rco_destroy_message_panel(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdoc">Deletes a RemminaMessagePanel from the current cnnobj and if it was visible, make visible the last re...</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04715">rcw.c:4715</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a4a9b04df122e3a20c3ae51d90280fea7"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a4a9b04df122e3a20c3ae51d90280fea7">REMMINA_PROTOCOL_FEATURE_TYPE_GTKSOCKET</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00054">types.h:54</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5aaadd752a3275a0a8e0018a3dd669f8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a></div><div class="ttdeci">void remmina_protocol_widget_set_hostkey_func(RemminaProtocolWidget *gp, RemminaHostkeyFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00859">remmina_protocol_widget.c:859</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5aaadd752a3275a0a8e0018a3dd669f8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a></div><div class="ttdeci">void remmina_protocol_widget_set_hostkey_func(RemminaProtocolWidget *gp, RemminaHostkeyFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00864">remmina_protocol_widget.c:864</a></div></div>
<div class="ttc" id="rcw_8c_html_a9c0d937c233cdb903058119839eb4f07"><div class="ttname"><a href="rcw_8c.html#a9c0d937c233cdb903058119839eb4f07">nb_migrate_message_panels</a></div><div class="ttdeci">static void nb_migrate_message_panels(GtkWidget *frompage, GtkWidget *topage)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01234">rcw.c:1234</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html"><div class="ttname"><a href="struct___remmina_connection_object.html">_RemminaConnectionObject</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00162">rcw.c:162</a></div></div>
<div class="ttc" id="rcw_8c_html_a3463779f231df73defb8ff86f27ec9ef"><div class="ttname"><a href="rcw_8c.html#a3463779f231df73defb8ff86f27ec9ef">rco_viewport_fullscreen_mode</a></div><div class="ttdeci">static void rco_viewport_fullscreen_mode(GtkWidget *widget, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01387">rcw.c:1387</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01396">remmina_protocol_widget.c:1396</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01408">remmina_protocol_widget.c:1408</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01401">remmina_protocol_widget.c:1401</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01413">remmina_protocol_widget.c:1413</a></div></div>
<div class="ttc" id="rcw_8c_html_a0e69db7ebd2d2998d34fbf6853ce2f27"><div class="ttname"><a href="rcw_8c.html#a0e69db7ebd2d2998d34fbf6853ce2f27">rcw_update_pin</a></div><div class="ttdeci">static void rcw_update_pin(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03118">rcw.c:3118</a></div></div>
<div class="ttc" id="rcw_8c_html_a2258ee24612affeef60abd2f18107b2c"><div class="ttname"><a href="rcw_8c.html#a2258ee24612affeef60abd2f18107b2c">rcw_toolbar_fullscreen_option</a></div><div class="ttdeci">void rcw_toolbar_fullscreen_option(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01421">rcw.c:1421</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ad6e2d00646e8268aa0e8bbe31b77db48"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a></div><div class="ttdeci">void remmina_protocol_widget_set_current_scale_mode(RemminaProtocolWidget *gp, RemminaScaleMode scalemode)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01414">remmina_protocol_widget.c:1414</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ad6e2d00646e8268aa0e8bbe31b77db48"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a></div><div class="ttdeci">void remmina_protocol_widget_set_current_scale_mode(RemminaProtocolWidget *gp, RemminaScaleMode scalemode)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01419">remmina_protocol_widget.c:1419</a></div></div>
<div class="ttc" id="rcw_8c_html_a3237ef26caa19b9926b485f94132cea7"><div class="ttname"><a href="rcw_8c.html#a3237ef26caa19b9926b485f94132cea7">rco_on_connect</a></div><div class="ttdeci">void rco_on_connect(RemminaProtocolWidget *gp, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04268">rcw.c:4268</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_aea86c673d5c1600844e0d1642c856995"><div class="ttname"><a href="struct___remmina_connection_object.html#aea86c673d5c1600844e0d1642c856995">_RemminaConnectionObject::proto</a></div><div class="ttdeci">GtkWidget * proto</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00166">rcw.c:166</a></div></div>
<div class="ttc" id="rcw_8c_html_a756830638372adda00be33468c8d3ed2"><div class="ttname"><a href="rcw_8c.html#a756830638372adda00be33468c8d3ed2">nb_find_page_by_cnnobj</a></div><div class="ttdeci">static GtkWidget * nb_find_page_by_cnnobj(GtkNotebook *notebook, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03452">rcw.c:3452</a></div></div>
@@ -216,7 +216,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01136">remmina_pref.c:1136</a></div></div>
<div class="ttc" id="rcw_8c_html_affd8155adb04dc7ffbb7f4fff379dc47"><div class="ttname"><a href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a></div><div class="ttdeci">static RemminaConnectionObject * rcw_get_visible_cnnobj(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00377">rcw.c:377</a></div></div>
<div class="ttc" id="rcw_8c_html_ab01e6d10d9c1f5803dac15087b512346"><div class="ttname"><a href="rcw_8c.html#ab01e6d10d9c1f5803dac15087b512346">rcw_focus_in_event</a></div><div class="ttdeci">static gboolean rcw_focus_in_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03240">rcw.c:3240</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a6399c3828908e36ed6202b5599bd206b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00315">remmina_protocol_widget.c:315</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a6399c3828908e36ed6202b5599bd206b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00316">remmina_protocol_widget.c:316</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796"><div class="ttname"><a href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796">FLOATING_TOOLBAR_PLACEMENT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00072">remmina_pref.h:72</a></div></div>
<div class="ttc" id="rcw_8c_html_a495019c0de716af850af656dd3345092"><div class="ttname"><a href="rcw_8c.html#a495019c0de716af850af656dd3345092">rcw_toolbar_menu_popdown</a></div><div class="ttdeci">void rcw_toolbar_menu_popdown(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01773">rcw.c:1773</a></div></div>
<div class="ttc" id="remmina__applet__menu_8c_html_adc65e597bc73ddbda587caa929efe872"><div class="ttname"><a href="remmina__applet__menu_8c.html#adc65e597bc73ddbda587caa929efe872">remmina_applet_menu_new</a></div><div class="ttdeci">GtkWidget * remmina_applet_menu_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu_8c_source.html#l00226">remmina_applet_menu.c:226</a></div></div>
@@ -224,11 +224,11 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_ae1c994940909e60d4f565be0e0478b34"><div class="ttname"><a href="rcw_8c.html#ae1c994940909e60d4f565be0e0478b34">rco_check_resize</a></div><div class="ttdeci">static void rco_check_resize(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01060">rcw.c:1060</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527">REMMINA_PROTOCOL_FEATURE_TYPE_PREF</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00048">types.h:48</a></div></div>
<div class="ttc" id="rcw_8h_html_a4bfcfdfd9d43712dd05d90ed3fd47dec"><div class="ttname"><a href="rcw_8h.html#a4bfcfdfd9d43712dd05d90ed3fd47dec">RemminaConnectionWindowPriv</a></div><div class="ttdeci">struct _RemminaConnectionWindowPriv RemminaConnectionWindowPriv</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8h_source.html#l00052">rcw.h:52</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac9da39853a32523057759a498bf6ac0a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_unmap_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00731">remmina_protocol_widget.c:731</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac9da39853a32523057759a498bf6ac0a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_unmap_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00736">remmina_protocol_widget.c:736</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f">REMMINA_PROTOCOL_FEATURE_TYPE_SCALE</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00051">types.h:51</a></div></div>
<div class="ttc" id="rcw_8c_html_a21e0a6e416667f30c2b1599b8b24faec"><div class="ttname"><a href="rcw_8c.html#a21e0a6e416667f30c2b1599b8b24faec">G_DEFINE_TYPE</a></div><div class="ttdeci">G_DEFINE_TYPE(RemminaConnectionWindow, rcw, GTK_TYPE_WINDOW)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00081">rcw.c:81</a></div></div>
<div class="ttc" id="rcw_8c_html_a5f5a9e8173b3ce9831f1771089fe778a"><div class="ttname"><a href="rcw_8c.html#a5f5a9e8173b3ce9831f1771089fe778a">rcw_map_event_fullscreen</a></div><div class="ttdeci">static gboolean rcw_map_event_fullscreen(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03320">rcw.c:3320</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_affb2413c00f0681fe08f90523f7e1471"><div class="ttname"><a href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_keystrokes(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdoc">Send to the plugin some keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00507">remmina_protocol_widget.c:507</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_affb2413c00f0681fe08f90523f7e1471"><div class="ttname"><a href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_keystrokes(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdoc">Send to the plugin some keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00512">remmina_protocol_widget.c:512</a></div></div>
<div class="ttc" id="rcw_8c_html_ab7dc553cbd2005feb77163cf79f48f6d"><div class="ttname"><a href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d">remmina_protocol_widget_update_alignment</a></div><div class="ttdeci">static void remmina_protocol_widget_update_alignment(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01148">rcw.c:1148</a></div></div>
<div class="ttc" id="remmina__scrolled__viewport_8c_html_aadfe00c3960eab12d17bdb47495dd1ee"><div class="ttname"><a href="remmina__scrolled__viewport_8c.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport_new</a></div><div class="ttdeci">GtkWidget * remmina_scrolled_viewport_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__scrolled__viewport_8c_source.html#l00201">remmina_scrolled_viewport.c:201</a></div></div>
<div class="ttc" id="rcw_8c_html_af99dc9a4135deff0a11c2d56877bad93"><div class="ttname"><a href="rcw_8c.html#af99dc9a4135deff0a11c2d56877bad93">rcw_on_switch_page_finalsel</a></div><div class="ttdeci">static gboolean rcw_on_switch_page_finalsel(gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03624">rcw.c:3624</a></div></div>
@@ -249,7 +249,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="remmina__message__panel_8h_html"><div class="ttname"><a href="remmina__message__panel_8h.html">remmina_message_panel.h</a></div></div>
<div class="ttc" id="rcw_8c_html_affd4a8e1c05f88299990bb0f3d5d1b9d"><div class="ttname"><a href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a></div><div class="ttdeci">GtkWindow * rcw_get_gtkwindow(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04696">rcw.c:4696</a></div></div>
<div class="ttc" id="rcw_8c_html_aadf6b28ed1ba344b9c93bfb7077030d3a7fddf807a1d5d3c26b28cfdf89e4300e"><div class="ttname"><a href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a7fddf807a1d5d3c26b28cfdf89e4300e">GTKSOCKET_NOT_AVAIL_RESPONSE_NUM</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04467">rcw.c:4467</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5c2137462d3168e90c812f1ce75a6e62"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02087">remmina_protocol_widget.c:2087</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5c2137462d3168e90c812f1ce75a6e62"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02093">remmina_protocol_widget.c:2093</a></div></div>
<div class="ttc" id="rcw_8c_html_a6515e726b5d3e4c0a9aefc3cf20f3d90"><div class="ttname"><a href="rcw_8c.html#a6515e726b5d3e4c0a9aefc3cf20f3d90">dnd_targets_ftb</a></div><div class="ttdeci">static const GtkTargetEntry dnd_targets_ftb[]</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00203">rcw.c:203</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9"><div class="ttname"><a href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9">REMMINA_TAB_ALL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00086">remmina_pref.h:86</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa9a057b8d4095678d3c0806ab37af365"><div class="ttname"><a href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">_RemminaPref::confirm_close</a></div><div class="ttdeci">gboolean confirm_close</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00147">remmina_pref.h:147</a></div></div>
@@ -259,7 +259,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a0242e9fcc63d6d24257f63fc23077133"><div class="ttname"><a href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">_RemminaPref::toolbar_placement</a></div><div class="ttdeci">gint toolbar_placement</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00225">remmina_pref.h:225</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a1826baafd2d7b5dc8a009ef4fcad77e9"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">_RemminaProtocolFeature::type</a></div><div class="ttdeci">RemminaProtocolFeatureType type</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00073">types.h:73</a></div></div>
<div class="ttc" id="rcw_8c_html_aa1044979d82ce73db51117de1262832f"><div class="ttname"><a href="rcw_8c.html#aa1044979d82ce73db51117de1262832f">rcw_toolbar_autofit_restore</a></div><div class="ttdeci">gboolean rcw_toolbar_autofit_restore(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00950">rcw.c:950</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a1585ea6908dd5c0a9b0f47d409916435"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_map_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00719">remmina_protocol_widget.c:719</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a1585ea6908dd5c0a9b0f47d409916435"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_map_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00724">remmina_protocol_widget.c:724</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_a45652d9f81875c51991ddf6942d7b2ae"><div class="ttname"><a href="struct___remmina_connection_object.html#a45652d9f81875c51991ddf6942d7b2ae">_RemminaConnectionObject::aspectframe</a></div><div class="ttdeci">GtkWidget * aspectframe</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00167">rcw.c:167</a></div></div>
<div class="ttc" id="rcw_8c_html_ab8d75ff6c88b131e1bf5ddc15d7de3e2"><div class="ttname"><a href="rcw_8c.html#ab8d75ff6c88b131e1bf5ddc15d7de3e2">rcw_toolbar_tools</a></div><div class="ttdeci">static void rcw_toolbar_tools(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02015">rcw.c:2015</a></div></div>
<div class="ttc" id="rcw_8c_html_adf9a57dc0cdd6261bef9a92df145c80c"><div class="ttname"><a href="rcw_8c.html#adf9a57dc0cdd6261bef9a92df145c80c">rcw_on_enter_notify_event</a></div><div class="ttdeci">static gboolean rcw_on_enter_notify_event(GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02809">rcw.c:2809</a></div></div>
@@ -293,7 +293,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a4ecafd7f885c5953e5c3b28f84d6af79"><div class="ttname"><a href="rcw_8c.html#a4ecafd7f885c5953e5c3b28f84d6af79">rcw_toolbar_switch_page</a></div><div class="ttdeci">static void rcw_toolbar_switch_page(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01582">rcw.c:1582</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a2859598ef2f87afb5a970a197a503765"><div class="ttname"><a href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">_RemminaPref::shortcutkey_scale</a></div><div class="ttdeci">guint shortcutkey_scale</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00180">remmina_pref.h:180</a></div></div>
<div class="ttc" id="rcw_8c_html_a366b8717c9906fdb1938659dc2ab1b03"><div class="ttname"><a href="rcw_8c.html#a366b8717c9906fdb1938659dc2ab1b03">rcw_toolbar_place_signal</a></div><div class="ttdeci">static void rcw_toolbar_place_signal(RemminaConnectionWindow *cnnwin, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03200">rcw.c:3200</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_acf40f566116cf43af26891cd37af4eb1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a></div><div class="ttdeci">void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00694">remmina_protocol_widget.c:694</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_acf40f566116cf43af26891cd37af4eb1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a></div><div class="ttdeci">void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00699">remmina_protocol_widget.c:699</a></div></div>
<div class="ttc" id="rcw_8c_html_a6d710132769d5f21989af6844c04b43f"><div class="ttname"><a href="rcw_8c.html#a6d710132769d5f21989af6844c04b43f">rcw_on_notebook_create_window</a></div><div class="ttdeci">static GtkNotebook * rcw_on_notebook_create_window(GtkNotebook *notebook, GtkWidget *page, gint x, gint y, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03684">rcw.c:3684</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955"><div class="ttname"><a href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00068">remmina_pref.h:68</a></div></div>
<div class="ttc" id="rcw_8c_html_a1cc1f656edfbe0d9c5483ac858b76517"><div class="ttname"><a href="rcw_8c.html#a1cc1f656edfbe0d9c5483ac858b76517">RemminaConnectionObject</a></div><div class="ttdeci">struct _RemminaConnectionObject RemminaConnectionObject</div></div>
@@ -304,17 +304,17 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a1420e43974421458b64d07fc858b1243"><div class="ttname"><a href="rcw_8c.html#a1420e43974421458b64d07fc858b1243">rcw_unmap_event</a></div><div class="ttdeci">static gboolean rcw_unmap_event(GtkWidget *widget, GdkEvent *event, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03302">rcw.c:3302</a></div></div>
<div class="ttc" id="rcw_8c_html_ae6aeab2ffe3fe798cc017e02f8781358"><div class="ttname"><a href="rcw_8c.html#ae6aeab2ffe3fe798cc017e02f8781358">rcw_toolbar_menu</a></div><div class="ttdeci">static void rcw_toolbar_menu(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01978">rcw.c:1978</a></div></div>
<div class="ttc" id="rcw_8c_html_a2ea4e41deacf11e9b9b71e7eac06869e"><div class="ttname"><a href="rcw_8c.html#a2ea4e41deacf11e9b9b71e7eac06869e">rcw_signals</a></div><div class="ttdeci">static guint rcw_signals[LAST_SIGNAL]</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00185">rcw.c:185</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a14684e3222e6afb1b43d77634a174767"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a></div><div class="ttdeci">void remmina_protocol_widget_update_remote_resolution(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02136">remmina_protocol_widget.c:2136</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a14684e3222e6afb1b43d77634a174767"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a></div><div class="ttdeci">void remmina_protocol_widget_update_remote_resolution(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02142">remmina_protocol_widget.c:2142</a></div></div>
<div class="ttc" id="remmina_8c_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00464">remmina_protocol_widget.c:464</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00469">remmina_protocol_widget.c:469</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a92025b5f6512955f9c29608b5451a12c"><div class="ttname"><a href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a></div><div class="ttdeci">void remmina_public_popup_position(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00293">remmina_public.c:293</a></div></div>
<div class="ttc" id="struct___remmina_plugin_screenshot_data_html_acc352444c31929a1ef7aee2a0e37827d"><div class="ttname"><a href="struct___remmina_plugin_screenshot_data.html#acc352444c31929a1ef7aee2a0e37827d">_RemminaPluginScreenshotData::bitsPerPixel</a></div><div class="ttdeci">int bitsPerPixel</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00085">types.h:85</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00708">remmina_protocol_widget.c:708</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00713">remmina_protocol_widget.c:713</a></div></div>
<div class="ttc" id="remmina__applet__menu_8c_html_a8029065504aef0e850d79f3823d18f66"><div class="ttname"><a href="remmina__applet__menu_8c.html#a8029065504aef0e850d79f3823d18f66">remmina_applet_menu_populate</a></div><div class="ttdeci">void remmina_applet_menu_populate(RemminaAppletMenu *menu)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu_8c_source.html#l00242">remmina_applet_menu.c:242</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a9a8d02227eb703bccc3f9296a5d89d6f"><div class="ttname"><a href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a></div><div class="ttdeci">gboolean remmina_pref_get_boolean(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01150">remmina_pref.c:1150</a></div></div>
<div class="ttc" id="rcw_8c_html_aadf6b28ed1ba344b9c93bfb7077030d3"><div class="ttname"><a href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3">GTKSOCKET_NOT_AVAIL_RESPONSE_TYPE</a></div><div class="ttdeci">GTKSOCKET_NOT_AVAIL_RESPONSE_TYPE</div><div class="ttdoc">These define the response id&amp;#39;s of the gtksocket-is-not-available-warning-dialog buttons. </div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04465">rcw.c:4465</a></div></div>
<div class="ttc" id="rcw_8c_html_a82c93bbb1ab73807b366b86928c37946"><div class="ttname"><a href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a></div><div class="ttdeci">static void rcw_kp_ungrab(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00429">rcw.c:429</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00216">remmina_protocol_widget.c:216</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00217">remmina_protocol_widget.c:217</a></div></div>
<div class="ttc" id="rcw_8c_html_a17bcf18cd1834d594b6e8f9777c63907"><div class="ttname"><a href="rcw_8c.html#a17bcf18cd1834d594b6e8f9777c63907">rcw_toolbar_scaled_mode</a></div><div class="ttdeci">static void rcw_toolbar_scaled_mode(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01701">rcw.c:1701</a></div></div>
<div class="ttc" id="rcw_8c_html_aaef82069514845b2987ac0659993cecd"><div class="ttname"><a href="rcw_8c.html#aaef82069514845b2987ac0659993cecd">rco_closewin</a></div><div class="ttdeci">void rco_closewin(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03473">rcw.c:3473</a></div></div>
<div class="ttc" id="rcw_8c_html_a1aa257faac7a8b75c12a286ad20ce823"><div class="ttname"><a href="rcw_8c.html#a1aa257faac7a8b75c12a286ad20ce823">rcw_on_configure</a></div><div class="ttdeci">static gboolean rcw_on_configure(GtkWidget *widget, GdkEventConfigure *event, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03086">rcw.c:3086</a></div></div>
@@ -327,7 +327,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_aaad3184fedef1eccd1f92d8ef43cca44"><div class="ttname"><a href="rcw_8c.html#aaad3184fedef1eccd1f92d8ef43cca44">rcw_get_cnnobj_at_page</a></div><div class="ttdeci">static RemminaConnectionObject * rcw_get_cnnobj_at_page(RemminaConnectionWindow *cnnwin, gint npage)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00367">rcw.c:367</a></div></div>
<div class="ttc" id="rcw_8c_html_a14a8e53afac8e750b7839d74dc50c758"><div class="ttname"><a href="rcw_8c.html#a14a8e53afac8e750b7839d74dc50c758">rcw_tb_drag_failed</a></div><div class="ttdeci">static gboolean rcw_tb_drag_failed(GtkWidget *widget, GdkDragContext *context, GtkDragResult result, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00769">rcw.c:769</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_acee9d7384a5e3949df53cdf54390bbcd"><div class="ttname"><a href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">_RemminaPref::applet_hide_count</a></div><div class="ttdeci">gboolean applet_hide_count</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00163">remmina_pref.h:163</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_abdf99138612d02bc3921b0b77bdc89cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a></div><div class="ttdeci">gint remmina_protocol_widget_get_multimon(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01362">remmina_protocol_widget.c:1362</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_abdf99138612d02bc3921b0b77bdc89cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a></div><div class="ttdeci">gint remmina_protocol_widget_get_multimon(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01367">remmina_protocol_widget.c:1367</a></div></div>
<div class="ttc" id="rcw_8c_html_a96f1d274dafe5e4953da52beb75f7d14"><div class="ttname"><a href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a></div><div class="ttdeci">GtkWidget * rcw_get_gtkviewport(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04700">rcw.c:4700</a></div></div>
<div class="ttc" id="rcw_8c_html_a3fa4224150aace5830b6d93cdc883fd8"><div class="ttname"><a href="rcw_8c.html#a3fa4224150aace5830b6d93cdc883fd8">rcw_floating_toolbar_on_leave</a></div><div class="ttdeci">static gboolean rcw_floating_toolbar_on_leave(GtkWidget *widget, GdkEventCrossing *event, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02799">rcw.c:2799</a></div></div>
<div class="ttc" id="rcw_8c_html_aa9d246740106aae9643ab7edc32923f3"><div class="ttname"><a href="rcw_8c.html#aa9d246740106aae9643ab7edc32923f3">rcw_state_event</a></div><div class="ttdeci">static gboolean rcw_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03261">rcw.c:3261</a></div></div>
@@ -340,7 +340,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="types_8h_html_aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd"><div class="ttname"><a href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00142">types.h:142</a></div></div>
<div class="ttc" id="struct___remmina_connection_window_html_a05faadfc5f0372cca2f4552b1882813c"><div class="ttname"><a href="struct___remmina_connection_window.html#a05faadfc5f0372cca2f4552b1882813c">_RemminaConnectionWindow::priv</a></div><div class="ttdeci">RemminaConnectionWindowPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8h_source.html#l00056">rcw.h:56</a></div></div>
<div class="ttc" id="rcw_8h_html"><div class="ttname"><a href="rcw_8h.html">rcw.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01465">remmina_protocol_widget.c:1465</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01470">remmina_protocol_widget.c:1470</a></div></div>
<div class="ttc" id="rcw_8c_html_a1b7a771392e15e527005305e71cc2546"><div class="ttname"><a href="rcw_8c.html#a1b7a771392e15e527005305e71cc2546">rcw_open_from_file</a></div><div class="ttdeci">void rcw_open_from_file(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04446">rcw.c:4446</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_aa7ac5ec9d95867734619583a2049e952"><div class="ttname"><a href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">_RemminaProtocolFeature::opt1</a></div><div class="ttdeci">gpointer opt1</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00075">types.h:75</a></div></div>
<div class="ttc" id="rcw_8c_html_aadf6b28ed1ba344b9c93bfb7077030d3a6fafaf979c15a6300f4533321f1890d7"><div class="ttname"><a href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3a6fafaf979c15a6300f4533321f1890d7">GTKSOCKET_NOT_AVAIL_RESPONSE_OPEN_BROWSER</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04466">rcw.c:4466</a></div></div>
@@ -359,14 +359,14 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a177a2ece80374b29bc26595fff8bed42"><div class="ttname"><a href="rcw_8c.html#a177a2ece80374b29bc26595fff8bed42">rcw_pointer_ungrab</a></div><div class="ttdeci">static void rcw_pointer_ungrab(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00497">rcw.c:497</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa3dc5f8676c4747f2fcaf9a68d16d11b"><div class="ttname"><a href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">_RemminaPref::shortcutkey_toolbar</a></div><div class="ttdeci">guint shortcutkey_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00187">remmina_pref.h:187</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_aef266e6ae11db020512b3dec8f689d30"><div class="ttname"><a href="struct___remmina_connection_object.html#aef266e6ae11db020512b3dec8f689d30">_RemminaConnectionObject::scrolled_container</a></div><div class="ttdeci">GtkWidget * scrolled_container</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00170">rcw.c:170</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a605b69a9aa4393024369cc5070488692"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00806">remmina_protocol_widget.c:806</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a605b69a9aa4393024369cc5070488692"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00811">remmina_protocol_widget.c:811</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_a431b19fa993d0810e88cc973a307303c"><div class="ttname"><a href="struct___remmina_connection_object.html#a431b19fa993d0810e88cc973a307303c">_RemminaConnectionObject::remmina_file</a></div><div class="ttdeci">RemminaFile * remmina_file</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00164">rcw.c:164</a></div></div>
<div class="ttc" id="rcw_8c_html_af11fbe0be155430d135da25ca115777e"><div class="ttname"><a href="rcw_8c.html#af11fbe0be155430d135da25ca115777e">rcw_gtksocket_not_available_dialog_response</a></div><div class="ttdeci">static void rcw_gtksocket_not_available_dialog_response(GtkDialog *self, gint response_id, RemminaConnectionObject *cnnobj)</div><div class="ttdoc">Gets called if the user interacts with the gtksocket-is-not-available-warning-dialog. </div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04474">rcw.c:4474</a></div></div>
<div class="ttc" id="rcw_8c_html_a042a37c7e92f49443ddbdc6dc948b8b5"><div class="ttname"><a href="rcw_8c.html#a042a37c7e92f49443ddbdc6dc948b8b5">rco_change_scalemode</a></div><div class="ttdeci">static void rco_change_scalemode(RemminaConnectionObject *cnnobj, gboolean bdyn, gboolean bscale)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01651">rcw.c:1651</a></div></div>
<div class="ttc" id="struct___remmina_applet_menu_html"><div class="ttname"><a href="struct___remmina_applet_menu.html">_RemminaAppletMenu</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu_8h_source.html#l00058">remmina_applet_menu.h:58</a></div></div>
<div class="ttc" id="struct___remmina_connection_window_class_html"><div class="ttname"><a href="struct___remmina_connection_window_class.html">_RemminaConnectionWindowClass</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8h_source.html#l00059">rcw.h:59</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_aab44850c13a7e5e20a02603ae173d53d"><div class="ttname"><a href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">_RemminaProtocolFeature::opt2</a></div><div class="ttdeci">gpointer opt2</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00076">types.h:76</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01371">remmina_protocol_widget.c:1371</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01376">remmina_protocol_widget.c:1376</a></div></div>
<div class="ttc" id="remmina__applet__menu__item_8h_html_a75e42156d38612a96ae48899316b4727a9edd77222ca6a7576822feebf0588572"><div class="ttname"><a href="remmina__applet__menu__item_8h.html#a75e42156d38612a96ae48899316b4727a9edd77222ca6a7576822feebf0588572">REMMINA_APPLET_MENU_ITEM_FILE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu__item_8h_source.html#l00050">remmina_applet_menu_item.h:50</a></div></div>
<div class="ttc" id="rcw_8c_html_a327f62be43b7f312982f9e22b86a2867"><div class="ttname"><a href="rcw_8c.html#a327f62be43b7f312982f9e22b86a2867">rcw_update_notebook</a></div><div class="ttdeci">static void rcw_update_notebook(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03603">rcw.c:3603</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a0658dd6adcfaf5cb52d6d99c97c352d1"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a0658dd6adcfaf5cb52d6d99c97c352d1">REMMINA_PROTOCOL_FEATURE_TYPE_UNFOCUS</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00050">types.h:50</a></div></div>
@@ -389,7 +389,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="remmina__message__panel_8c_html_ae01d27ae9f678dc5a4fa32f0b401f434"><div class="ttname"><a href="remmina__message__panel_8c.html#ae01d27ae9f678dc5a4fa32f0b401f434">remmina_message_panel_setup_message</a></div><div class="ttdeci">void remmina_message_panel_setup_message(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00174">remmina_message_panel.c:174</a></div></div>
<div class="ttc" id="remmina_8c_html_ab4a9a67c5372ff07b71d0558679ab7ae"><div class="ttname"><a href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a></div><div class="ttdeci">gboolean kioskmode</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00087">remmina.c:87</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_aaa67e07e2426828d7e7b9b30d2038d31"><div class="ttname"><a href="remmina__exec_8c.html#aaa67e07e2426828d7e7b9b30d2038d31">remmina_application_condexit</a></div><div class="ttdeci">void remmina_application_condexit(RemminaCondExitType why)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00123">remmina_exec.c:123</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01426">remmina_protocol_widget.c:1426</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01431">remmina_protocol_widget.c:1431</a></div></div>
<div class="ttc" id="rcw_8c_html_a5472fed2058a6597c3c7b7c91e98a73e"><div class="ttname"><a href="rcw_8c.html#a5472fed2058a6597c3c7b7c91e98a73e">focus_in_delayed_grab</a></div><div class="ttdeci">static gboolean focus_in_delayed_grab(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02918">rcw.c:2918</a></div></div>
<div class="ttc" id="rcw_8c_html_a23692809213a6dfe683afe3d0dece3aa"><div class="ttname"><a href="rcw_8c.html#a23692809213a6dfe683afe3d0dece3aa">rco_update_toolbar_autofit_button</a></div><div class="ttdeci">void rco_update_toolbar_autofit_button(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01633">rcw.c:1633</a></div></div>
<div class="ttc" id="remmina_8c_html_ae729d4262682c8674b8dd0135014810a"><div class="ttname"><a href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a></div><div class="ttdeci">gboolean extrahardening</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00090">remmina.c:90</a></div></div>
@@ -399,7 +399,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_aee06df544a91184cba1fe77c6991065a"><div class="ttname"><a href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a></div><div class="ttdeci">void rco_get_monitor_geometry(RemminaConnectionObject *cnnobj, GdkRectangle *sz)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01009">rcw.c:1009</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c"><div class="ttname"><a href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c">FLOATING_TOOLBAR_VISIBILITY_DISABLE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00103">remmina_pref.h:103</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076"><div class="ttname"><a href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076">TOOLBAR_PLACEMENT_BOTTOM</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00079">remmina_pref.h:79</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a480f842fac65440c367bf3c3d87d2601"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_receives_keystrokes(RemminaProtocolWidget *gp)</div><div class="ttdoc">Check if the plugin accepts keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00499">remmina_protocol_widget.c:499</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a480f842fac65440c367bf3c3d87d2601"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_receives_keystrokes(RemminaProtocolWidget *gp)</div><div class="ttdoc">Check if the plugin accepts keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00504">remmina_protocol_widget.c:504</a></div></div>
<div class="ttc" id="struct___remmina_connection_window_html"><div class="ttname"><a href="struct___remmina_connection_window.html">_RemminaConnectionWindow</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8h_source.html#l00054">rcw.h:54</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_af7b58659604660eb0cb40b0e0f8348ab"><div class="ttname"><a href="remmina__file__manager_8c.html#af7b58659604660eb0cb40b0e0f8348ab">remmina_file_manager_load_file</a></div><div class="ttdeci">RemminaFile * remmina_file_manager_load_file(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00355">remmina_file_manager.c:355</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc"><div class="ttname"><a href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc">FLOATING_TOOLBAR_VISIBILITY_INVISIBLE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00102">remmina_pref.h:102</a></div></div>
diff --git a/public/remmina__masterthread__exec_8c_source.html b/public/remmina__masterthread__exec_8c_source.html
index 0ecc146bd..5754db5e7 100644
--- a/public/remmina__masterthread__exec_8c_source.html
+++ b/public/remmina__masterthread__exec_8c_source.html
@@ -88,8 +88,8 @@ $(document).ready(function(){initNavTree('remmina__masterthread__exec_8c_source.
<div class="contents">
<a href="remmina__masterthread__exec_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">/* Support for execution on main thread of some GTK related</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * functions (due to threads deprecations in GTK) */</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0"> 44</a></span>&#160;<span class="keyword">static</span> pthread_t <a class="code" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0">gMainThreadID</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8c.html#ae5c4d736f1856249c255430e010a179f"> 46</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__masterthread__exec_8c.html#ae5c4d736f1856249c255430e010a179f">remmina_masterthread_exec_callback</a>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">/* This function is called on main GTK Thread via gdk_threads_add_idlde()</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * from remmina_masterthread_exec_and_wait() */</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (!d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63">cancelled</a>) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">switch</span> (d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a>) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> FUNC_INIT_SAVE_CRED:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f">init_save_creds</a>.gp);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> FUNC_CHAT_RECEIVE:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.gp, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.text);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> FUNC_FILE_GET_STRING:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.retval = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.remminafile, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">file_get_string</a>.setting );</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> FUNC_FILE_SET_STRING:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.remminafile, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.setting, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">file_set_string</a>.value );</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> FUNC_GTK_LABEL_SET_TEXT:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; gtk_label_set_text( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a85a0c3a54c87297e585fac9d52cd83c1">gtk_label_set_text</a>.label, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a85a0c3a54c87297e585fac9d52cd83c1">gtk_label_set_text</a>.str );</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">case</span> FUNC_FTP_CLIENT_UPDATE_TASK:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="remmina__ftp__client_8c.html#ad96358f40ab056c91f796ddda886a1dd">remmina_ftp_client_update_task</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#aacac54eb2616abc1a48d52f1cdcddf40">ftp_client_update_task</a>.client, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#aacac54eb2616abc1a48d52f1cdcddf40">ftp_client_update_task</a>.task );</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> FUNC_FTP_CLIENT_GET_WAITING_TASK:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac6b3f7b8019945e2f0c8039f7a78fed6">ftp_client_get_waiting_task</a>.retval = <a class="code" href="remmina__ftp__client_8c.html#a33e4993b60c36eae89a6a0a943d28141">remmina_ftp_client_get_waiting_task</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#ac6b3f7b8019945e2f0c8039f7a78fed6">ftp_client_get_waiting_task</a>.client );</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_EMIT_SIGNAL:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.gp, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.signal_name);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_MPPROGRESS:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.ret_mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.cnnobj, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.message,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback_data);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_MPDESTROY:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.cnnobj, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.mp);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_MPSHOWRETRY:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af">protocolwidget_mpshowretry</a>.gp);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> FUNC_PROTOCOLWIDGET_PANELSHOWLISTEN:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.gp, d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.port);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> FUNC_SFTP_CLIENT_CONFIRM_RESUME:</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd">sftp_client_confirm_resume</a>.retval = <a class="code" href="remmina__sftp__client_8c.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client_confirm_resume</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd">sftp_client_confirm_resume</a>.client,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd">sftp_client_confirm_resume</a>.path );</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">case</span> FUNC_VTE_TERMINAL_SET_ENCODING_AND_PTY:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="remmina__ssh__plugin_8c.html#adc8e3776e67abca9ab913bc33172e4ce">remmina_plugin_ssh_vte_terminal_set_encoding_and_pty</a>( d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.terminal,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.codeset,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.master,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">vte_terminal_set_encoding_and_pty</a>.slave);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ad6766566c40f5265a8ec504e56951319">pt_mutex</a>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#a2609267a5c4dcf8b9cbe411ee51656d9">complete</a> = TRUE;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; pthread_cond_signal(&amp;d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#a41d44d1cc03512701f61bb88a983e94b">pt_cond</a>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ad6766566c40f5265a8ec504e56951319">pt_mutex</a>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">/* thread has been cancelled, so we must free d memory here */</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; g_free(d);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8c.html#a94985f15fd0d27c037824ee90b0ecd3c"> 118</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__masterthread__exec_8c.html#a94985f15fd0d27c037824ee90b0ecd3c">remmina_masterthread_exec_cleanup_handler</a>(gpointer data)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d = data;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63">cancelled</a> = TRUE;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8h.html#a14628c2470cac50e87916a70ea05c97d"> 125</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63">cancelled</a> = FALSE;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#a2609267a5c4dcf8b9cbe411ee51656d9">complete</a> = FALSE;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; pthread_cleanup_push(<a class="code" href="remmina__masterthread__exec_8c.html#a94985f15fd0d27c037824ee90b0ecd3c">remmina_masterthread_exec_cleanup_handler</a>, (<span class="keywordtype">void</span>*)d);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; pthread_mutex_init(&amp;d-&gt;pt_mutex, NULL);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; pthread_cond_init(&amp;d-&gt;pt_cond, NULL);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; gdk_threads_add_idle((GSourceFunc)<a class="code" href="remmina__masterthread__exec_8c.html#ae5c4d736f1856249c255430e010a179f">remmina_masterthread_exec_callback</a>, (gpointer)d);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; pthread_mutex_lock(&amp;d-&gt;pt_mutex);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">while</span> (!d-&gt;complete)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; pthread_cond_wait(&amp;d-&gt;pt_cond, &amp;d-&gt;pt_mutex);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; pthread_cleanup_pop(0);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; pthread_mutex_destroy(&amp;d-&gt;pt_mutex);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; pthread_cond_destroy(&amp;d-&gt;pt_cond);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8h.html#a3d6fe9efdc6b84c16d99809003cfc850"> 141</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__masterthread__exec_8c.html#a4a595ce198f8adda31fe11348b0f734e">remmina_masterthread_exec_save_main_thread_id</a>()</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">/* To be called from main thread at startup */</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0">gMainThreadID</a> = pthread_self();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;}</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="remmina__masterthread__exec_8h.html#a7b90b9539fd1bffa1fdace50f9caf29c"> 147</a></span>&#160;gboolean <a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> pthread_equal(<a class="code" href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0">gMainThreadID</a>, pthread_self()) != 0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="ttc" id="structremmina__masterthread__exec__data_html_a00585ef650a083f1e8270cbdf05d437f"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f">remmina_masterthread_exec_data::init_save_creds</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@14 init_save_creds</div></div>
<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02030">remmina_protocol_widget.c:2030</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01885">remmina_protocol_widget.c:1885</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02036">remmina_protocol_widget.c:2036</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01890">remmina_protocol_widget.c:1890</a></div></div>
<div class="ttc" id="remmina__sftp__client_8c_html_a138904893cb9c7f6535b8dfc7ba17e33"><div class="ttname"><a href="remmina__sftp__client_8c.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client_confirm_resume</a></div><div class="ttdeci">gint remmina_sftp_client_confirm_resume(RemminaSFTPClient *client, const gchar *path)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__sftp__client_8c_source.html#l00931">remmina_sftp_client.c:931</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html"><div class="ttname"><a href="structremmina__masterthread__exec__data.html">remmina_masterthread_exec_data</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8h_source.html#l00043">remmina_masterthread_exec.h:43</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a2852b6a6de556164946570c4d7786ece"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">remmina_masterthread_exec_data::protocolwidget_panelshowlisten</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@24 protocolwidget_panelshowlisten</div></div>
@@ -102,22 +102,22 @@ $(document).ready(function(){initNavTree('remmina__masterthread__exec_8c_source.
<div class="ttc" id="remmina__masterthread__exec_8c_html_a8eeacd537241e5af184a2007c476baf0"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a8eeacd537241e5af184a2007c476baf0">gMainThreadID</a></div><div class="ttdeci">static pthread_t gMainThreadID</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00044">remmina_masterthread_exec.c:44</a></div></div>
<div class="ttc" id="remmina__ftp__client_8c_html_a33e4993b60c36eae89a6a0a943d28141"><div class="ttname"><a href="remmina__ftp__client_8c.html#a33e4993b60c36eae89a6a0a943d28141">remmina_ftp_client_get_waiting_task</a></div><div class="ttdeci">RemminaFTPTask * remmina_ftp_client_get_waiting_task(RemminaFTPClient *client)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8c_source.html#l01186">remmina_ftp_client.c:1186</a></div></div>
<div class="ttc" id="remmina__ftp__client_8c_html_ad96358f40ab056c91f796ddda886a1dd"><div class="ttname"><a href="remmina__ftp__client_8c.html#ad96358f40ab056c91f796ddda886a1dd">remmina_ftp_client_update_task</a></div><div class="ttdeci">void remmina_ftp_client_update_task(RemminaFTPClient *client, RemminaFTPTask *task)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ftp__client_8c_source.html#l01234">remmina_ftp_client.c:1234</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01939">remmina_protocol_widget.c:1939</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01944">remmina_protocol_widget.c:1944</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a3b8dfbacdde21a1a75007cde8e31bfd6"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">remmina_masterthread_exec_data::protocolwidget_mpprogress</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@21 protocolwidget_mpprogress</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_ac390f60a6ecc7312c7e4cbc1c4de0a63"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63">remmina_masterthread_exec_data::cancelled</a></div><div class="ttdeci">gboolean cancelled</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8h_source.html#l00129">remmina_masterthread_exec.h:129</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8c_html_a3a52e863a3a3da6da6bb5d36c13b7ff4"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a></div><div class="ttdeci">gboolean remmina_masterthread_exec_is_main_thread()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00147">remmina_masterthread_exec.c:147</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a75007c472a404959a00cdebd8efc951a"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">remmina_masterthread_exec_data::protocolwidget_mpdestroy</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@22 protocolwidget_mpdestroy</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_af47270db94513116a8c0f7658848c4af"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af">remmina_masterthread_exec_data::protocolwidget_mpshowretry</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@23 protocolwidget_mpshowretry</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_addc82d31b5441f2bf02630b9ddbe7fdb"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb">remmina_masterthread_exec_data::vte_terminal_set_encoding_and_pty</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@26 vte_terminal_set_encoding_and_pty</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a97cba8208a4348446159bf465b3233f5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a></div><div class="ttdeci">void remmina_protocol_widget_mpdestroy(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00890">remmina_protocol_widget.c:890</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a97cba8208a4348446159bf465b3233f5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a></div><div class="ttdeci">void remmina_protocol_widget_mpdestroy(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00895">remmina_protocol_widget.c:895</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a070d5e12c3eede1d1799d83c433f9abd"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd">remmina_masterthread_exec_data::sftp_client_confirm_resume</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@25 sftp_client_confirm_resume</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a78b123eca6709bceeacda7d791a94bf1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a></div><div class="ttdeci">RemminaMessagePanel * remmina_protocol_widget_mpprogress(RemminaConnectionObject *cnnobj, const gchar *msg, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00865">remmina_protocol_widget.c:865</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01968">remmina_protocol_widget.c:1968</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a78b123eca6709bceeacda7d791a94bf1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a></div><div class="ttdeci">RemminaMessagePanel * remmina_protocol_widget_mpprogress(RemminaConnectionObject *cnnobj, const gchar *msg, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00870">remmina_protocol_widget.c:870</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01973">remmina_protocol_widget.c:1973</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_af4aac360c396741c659474158d7c0e87"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87">remmina_masterthread_exec_data::file_set_string</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@17 file_set_string</div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_ac76a0900842e936efdd2add9ec352886"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886">remmina_masterthread_exec_data::file_get_string</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@16 file_get_string</div></div>
<div class="ttc" id="remmina__masterthread__exec_8c_html_a94985f15fd0d27c037824ee90b0ecd3c"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a94985f15fd0d27c037824ee90b0ecd3c">remmina_masterthread_exec_cleanup_handler</a></div><div class="ttdeci">static void remmina_masterthread_exec_cleanup_handler(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00118">remmina_masterthread_exec.c:118</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8c_html_a14628c2470cac50e87916a70ea05c97d"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a></div><div class="ttdeci">void remmina_masterthread_exec_and_wait(RemminaMTExecData *d)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00125">remmina_masterthread_exec.c:125</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00743">remmina_protocol_widget.c:743</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00748">remmina_protocol_widget.c:748</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8c_html_ae5c4d736f1856249c255430e010a179f"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#ae5c4d736f1856249c255430e010a179f">remmina_masterthread_exec_callback</a></div><div class="ttdeci">static gboolean remmina_masterthread_exec_callback(RemminaMTExecData *d)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00046">remmina_masterthread_exec.c:46</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8h_html"><div class="ttname"><a href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a85a0c3a54c87297e585fac9d52cd83c1"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a85a0c3a54c87297e585fac9d52cd83c1">remmina_masterthread_exec_data::gtk_label_set_text</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@13 gtk_label_set_text</div></div>
diff --git a/public/remmina__plugin__manager_8c_source.html b/public/remmina__plugin__manager_8c_source.html
index 5e8f931ea..3d3d6a5af 100644
--- a/public/remmina__plugin__manager_8c_source.html
+++ b/public/remmina__plugin__manager_8c_source.html
@@ -86,47 +86,47 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="title">remmina_plugin_manager.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__plugin__manager_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2010-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gmodule.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;gio/gio.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkx.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#elif defined(GDK_WINDOWING_WAYLAND)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__main_8h.html">remmina_main.h</a>&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a>&quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__native_8h.html">remmina_plugin_native.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e"> 64</a></span>&#160;<span class="keyword">static</span> GPtrArray* <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a> = NULL;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">/* A GHashTable of GHashTables where to store the names of the encrypted settings */</span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49"> 67</a></span>&#160;<span class="keyword">static</span> GHashTable *<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> = NULL;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">/* There can be only one secret plugin loaded */</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e"> 70</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *<a class="code" href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e">remmina_secret_plugin</a> = NULL;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// TRANSLATORS: &quot;Language Wrapper&quot; is a wrapper for plugins written in other programmin languages (Python in this context)</span></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10"> 73</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[] =</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{ <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Protocol&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Entry&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;File&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Tool&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Preference&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Secret&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Language Wrapper&quot;</span>), NULL };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#ae78fa0b2eab8c987d810c6997b136d2e"> 76</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina__plugin__manager_8c.html#ae78fa0b2eab8c987d810c6997b136d2e">remmina_plugin_manager_compare_func</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> **a, <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> **b)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> g_strcmp0((*a)-&gt;name, (*b)-&gt;name);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86"> 82</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86">htdestroy</a>(gpointer ht)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; g_hash_table_unref(ht);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a72f0dbafb41acc4a5834f5c0719e6046"> 87</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a72f0dbafb41acc4a5834f5c0719e6046">init_settings_cache</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a>* setting_iter;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; GHashTable *pht;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">/* This code make a encrypted setting cache only for protocol plugins */</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> != <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> == NULL)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, <a class="code" href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86">htdestroy</a>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (!(pht = g_hash_table_lookup(<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>))) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; pht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; g_hash_table_insert(<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a>, g_strdup(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>), pht);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">/* Some settings are encrypted &quot;by name&quot; */</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">/* g_hash_table_insert(pht, g_strdup(&quot;proxy_password&quot;), (gpointer)TRUE); */</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; g_hash_table_insert(pht, g_strdup(<span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>), (gpointer)TRUE);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; g_hash_table_insert(pht, g_strdup(<span class="stringliteral">&quot;ssh_tunnel_passphrase&quot;</span>), (gpointer)TRUE);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">/* ssh_password is no longer used starting from remmina 1.4.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * But we MUST mark it as encrypted setting, or the migration procedure will fail */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; g_hash_table_insert(pht, g_strdup(<span class="stringliteral">&quot;ssh_password&quot;</span>), (gpointer)TRUE);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">/* Other settings are encrypted because of their type */</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)plugin;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">basic_settings</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; g_hash_table_insert(pht, g_strdup(<a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)), (gpointer)TRUE);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; setting_iter++;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db">advanced_settings</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; g_hash_table_insert(pht, g_strdup(<a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)), (gpointer)TRUE);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; setting_iter++;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#ad4cb2d85f9cf76089a082122f2891fb8"> 139</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__plugin__manager_8c.html#ad4cb2d85f9cf76089a082122f2891fb8">remmina_plugin_manager_register_plugin</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa0d17e841a53921a7a6156f5d30e9f09c">REMMINA_PLUGIN_TYPE_SECRET</a>) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; g_print(<span class="stringliteral">&quot;Remmina plugin %s (type=%s) has been registered, but is not yet initialized/activated. &quot;</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="stringliteral">&quot;The initialization order is %d.\n&quot;</span>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; _(<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a>]),</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; ((<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)plugin)-&gt;init_order);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a72f0dbafb41acc4a5834f5c0719e6046">init_settings_cache</a>(plugin);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; g_ptr_array_add(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, plugin);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; g_ptr_array_sort(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, (GCompareFunc)<a class="code" href="remmina__plugin__manager_8c.html#ae78fa0b2eab8c987d810c6997b136d2e">remmina_plugin_manager_compare_func</a>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a1ef27b953decb0c707ec9a18da47a38f"> 155</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f">remmina_gtksocket_available</a>()</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; GdkDisplayManager* dm;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; GdkDisplay* d;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; gboolean available;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; dm = gdk_display_manager_get();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; d = gdk_display_manager_get_default_display(dm);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; available = FALSE;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (GDK_IS_X11_DISPLAY(d)) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">/* GtkSocket support is available only under X.Org */</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; available = TRUE;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> available;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a3996819fdb2c833f3c64c2ad399e5f10"> 174</a></span>&#160;<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> <a class="code" href="remmina__plugin__manager_8c.html#a3996819fdb2c833f3c64c2ad399e5f10">remmina_plugin_manager_service</a> =</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#ad4cb2d85f9cf76089a082122f2891fb8">remmina_plugin_manager_register_plugin</a>,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>,</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>,</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>,</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>,</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>,</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>,</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>,</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>,</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>,</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>,</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>,</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>,</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>,</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>,</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>,</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>,</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>,</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a>,</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>,</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>,</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a>,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>,</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>,</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a>,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a>,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267">remmina_pref_get_ssh_loglevel</a>,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a>,</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a>,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a>,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="remmina__log_8c.html#a49817b70a398a2f21514fb0066c6e04c">_remmina_info</a>,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="remmina__log_8c.html#ae439b5fb61045d22c9474b32d0158185">_remmina_message</a>,</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="remmina__log_8c.html#a9234814488626cc2513e9fb255a90f53">_remmina_debug</a>,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="remmina__log_8c.html#a8a47ecac307ae1787cdad1ccc4b43d13">_remmina_warning</a>,</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="remmina__log_8c.html#a19da9a0d0eac2a2b7fcc926dee2eb368">_remmina_audit</a>,</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="remmina__log_8c.html#a984e0494481144aa121893f5d14025f7">_remmina_error</a>,</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="remmina__log_8c.html#a35109f5950931f79c13dac26143a69d3">_remmina_critical</a>,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="remmina__log_8c.html#aca8f826a273194e22f4467421af9b3aa">remmina_log_print</a>,</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="remmina__log_8c.html#ac7848510c1fe1990c992e28cd31af9d8">remmina_log_printf</a>,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>,</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="remmina__public_8c.html#a4b8a7b85d58148cf856ea71b1d9f22c1">remmina_public_open_unix_sock</a>,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>,</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f">remmina_gtksocket_available</a>,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>,</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>,</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>,</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>,</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>,</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>,</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>,</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>,</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>,</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>,</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>,</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>,</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>,</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>,</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>,</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>,</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>,</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>,</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>,</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>,</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>,</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>,</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>,</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>,</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>,</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>,</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>,</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a>,</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;};</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206"> 312</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206">get_filename_ext</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* last = strrchr(filename, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *dot = strrchr(last, <span class="charliteral">&#39;.&#39;</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span>(!dot || dot == filename) <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> dot + 1;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;}</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5"> 319</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5">compare_secret_plugin_init_order</a>(gconstpointer a, gconstpointer b)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;{</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *sa, *sb;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; sa = (<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)a;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; sb = (<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)b;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (sa-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a> &gt; sb-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a>)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sa-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a> &lt; sb-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a>)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a92c2264598a43702594535cebbf4d8cd"> 333</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a9df07091ff7d32bcde595a6d3a3598f5">remmina_plugin_manager_init</a>()</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; GDir *dir;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keyword">const</span> gchar *name, *ptr;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; gchar *fullpath;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *sp;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">int</span> i, j;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; GSList *secret_plugins;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; GSList *sple;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; GPtrArray *alternative_language_plugins;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a> = g_ptr_array_new();</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; alternative_language_plugins = g_ptr_array_new();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (!g_module_supported()) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; g_print(<span class="stringliteral">&quot;Dynamic loading of plugins is not supported on this platform!\n&quot;</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; g_print(<span class="stringliteral">&quot;Load modules from %s\n&quot;</span>, REMMINA_RUNTIME_PLUGINDIR);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; dir = g_dir_open(REMMINA_RUNTIME_PLUGINDIR, 0, NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span> (dir == NULL)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">while</span> ((name = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> ((ptr = strrchr(name, <span class="charliteral">&#39;.&#39;</span>)) == NULL)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; ptr++;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; fullpath = g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR <span class="stringliteral">&quot;/%s&quot;</span>, name);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__plugin__manager_8c.html#a1a5e6eeb6e116b5768d5e0c02544149d">remmina_plugin_manager_loader_supported</a>(ptr)) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; g_ptr_array_add(alternative_language_plugins, g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR <span class="stringliteral">&quot;/%s&quot;</span>, name));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="remmina__plugin__native_8c.html#ae60c5371a41a83ef94c6a2b3dc8c9520">remmina_plugin_native_load</a>(&amp;remmina_plugin_manager_service, fullpath);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; g_free(fullpath);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">while</span> (alternative_language_plugins-&gt;len &gt; 0) {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; gboolean has_loaded = FALSE;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; gchar* name = (gchar*)g_ptr_array_remove_index(alternative_language_plugins, 0);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> gchar* ext = <a class="code" href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206">get_filename_ext</a>(name);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len &amp;&amp; !has_loaded; j++) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, j);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa93a45ba624f83d17a6d8619933a54b3e">REMMINA_PLUGIN_TYPE_LANGUAGE_WRAPPER</a>) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="struct___remmina_language_wrapper_plugin.html">RemminaLanguageWrapperPlugin</a>* wrapper_plugin = (<a class="code" href="struct___remmina_language_wrapper_plugin.html">RemminaLanguageWrapperPlugin</a>*)plugin;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> gchar** supported_extention = wrapper_plugin-&gt;<a class="code" href="struct___remmina_language_wrapper_plugin.html#aea49b9e057254020e13f615331ef239b">supported_extentions</a>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">while</span> (*supported_extention) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (g_str_equal(*supported_extention, ext)) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; has_loaded = wrapper_plugin-&gt;<a class="code" href="struct___remmina_language_wrapper_plugin.html#a1270e29b6e988d6b320ef3f0465b6272">load</a>(wrapper_plugin, name);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (has_loaded) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; supported_extention++;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (has_loaded) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">if</span> (!has_loaded) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; g_print(<span class="stringliteral">&quot;%s: Skip unsupported file type &#39;%s&#39;\n&quot;</span>, name, ext);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; g_free(name);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="comment">/* Now all secret plugins needs to initialize, following their init_order.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> * The 1st plugin which will initialize correctly will be</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"> * the default remmina_secret_plugin */</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (remmina_secret_plugin)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; g_print(<span class="stringliteral">&quot;Internal ERROR: remmina_secret_plugin must be null here\n&quot;</span>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; secret_plugins = NULL;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa0d17e841a53921a7a6156f5d30e9f09c">REMMINA_PLUGIN_TYPE_SECRET</a>) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; secret_plugins = g_slist_insert_sorted(secret_plugins, (gpointer)plugin, <a class="code" href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5">compare_secret_plugin_init_order</a>);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; sple = secret_plugins;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">while</span>(sple != NULL) {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; sp = (<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)sple-&gt;data;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; if (sp-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a6c664274cd540fea91013d298d1ef031">init</a>(sp)) {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; g_print(<span class="stringliteral">&quot;The %s secret plugin has been initialized and it will be your default secret plugin\n&quot;</span>,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; sp-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a197b28d8b71ccb0c91ce8bf27690968a">name</a>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; remmina_secret_plugin = sp;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; sple = sple-&gt;next;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; g_slist_free(secret_plugins);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;}</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a1a5e6eeb6e116b5768d5e0c02544149d"> 433</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#a1a5e6eeb6e116b5768d5e0c02544149d">remmina_plugin_manager_loader_supported</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filetype) {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> g_str_equal(G_MODULE_SUFFIX, filetype);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a3872c8656a8a3d5147bcc603471c1932"> 438</a></span>&#160;<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624a">RemminaPluginType</a> type, <span class="keyword">const</span> gchar *name)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; gint i;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == type &amp;&amp; g_strcmp0(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>, name) == 0) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> plugin;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#af60b8edfa50563ae4c7593efc3deed55"> 453</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a>* setting)</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a> == NULL) {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;server&quot;</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;password&quot;</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a>)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;resolution&quot;</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;missing_setting_name_into_plugin_RemminaProtocolSetting&quot;</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a13f13a6a4280268656f258cb5aeff031"> 467</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a13f13a6a4280268656f258cb5aeff031">remmina_plugin_manager_for_each_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624a">RemminaPluginType</a> type, <a class="code" href="remmina__plugin__manager_8h.html#a68d4ed61b9d039dd06ba4252a8971c18">RemminaPluginFunc</a> func, gpointer data)</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; gint i;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == type) {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; func((gchar*)plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>, plugin, data);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;}</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment">/* A copy of remmina_plugin_manager_show and remmina_plugin_manager_show_for_each</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment"> * This is because we want to print the list of plugins, and their versions, to the standard output</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="comment"> * with the remmina command line option --full-version instead of using the plugins widget</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment"> ** @todo Investigate to use only GListStore and than pass the elements to be shown to 2 separate</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment"> * functions</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment"> * WARNING: GListStore is supported only from GLib 2.44 */</span></div><div class="line"><a name="l00487"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07"> 487</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07">remmina_plugin_manager_show_for_each_stdout</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;{</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; g_print(<span class="stringliteral">&quot;%-20s%-16s%-64s%-10s\n&quot;</span>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>,</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; _(<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a>]),</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; g_dgettext(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a024d3e6d752dd29828b31c60c8c7c201">domain</a>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">description</a>),</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_plugin.html#aecdad5d7ff5bdfbf0ce80b4b73f65099">version</a>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;}</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#afe0881986b2a64bfb5460981dadcf28d"> 498</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#afe0881986b2a64bfb5460981dadcf28d">remmina_plugin_manager_show_stdout</a>()</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;{</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; g_print(<span class="stringliteral">&quot;%-20s%-16s%-64s%-10s\n&quot;</span>, <span class="stringliteral">&quot;NAME&quot;</span>, <span class="stringliteral">&quot;TYPE&quot;</span>, <span class="stringliteral">&quot;DESCRIPTION&quot;</span>, <span class="stringliteral">&quot;PLUGIN AND LIBRARY VERSION&quot;</span>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; g_ptr_array_foreach(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, (GFunc)<a class="code" href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07">remmina_plugin_manager_show_for_each_stdout</a>, NULL);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;}</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c"> 505</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c">remmina_plugin_manager_show_for_each</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin, GtkListStore *store)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; gtk_list_store_append(store, &amp;iter);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; gtk_list_store_set(store, &amp;iter, 0, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>, 1, _(<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a>]), 2,</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; g_dgettext(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a024d3e6d752dd29828b31c60c8c7c201">domain</a>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">description</a>), 3, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#aecdad5d7ff5bdfbf0ce80b4b73f65099">version</a>, -1);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#aedec4e9cf18d99a559aa51065c2bc276"> 516</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a>(GtkWindow *parent)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; GtkWidget *scrolledwindow;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; GtkWidget *tree;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; GtkCellRenderer *renderer;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; GtkTreeViewColumn *column;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; GtkListStore *store;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; dialog = gtk_dialog_new_with_buttons(_(<span class="stringliteral">&quot;Plugins&quot;</span>), parent, GTK_DIALOG_MODAL, _(<span class="stringliteral">&quot;_OK&quot;</span>), GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(gtk_widget_destroy), dialog);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 350);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; scrolledwindow = gtk_scrolled_window_new(NULL, NULL);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; gtk_widget_show(scrolledwindow);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), scrolledwindow, TRUE, TRUE, 0);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; tree = gtk_tree_view_new();</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; gtk_container_add(GTK_CONTAINER(scrolledwindow), tree);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; gtk_widget_show(tree);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; store = gtk_list_store_new(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; g_ptr_array_foreach(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, (GFunc)<a class="code" href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c">remmina_plugin_manager_show_for_each</a>, store);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Name&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 0, NULL);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 0);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Type&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 1, NULL);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 1);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Description&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 2, NULL);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 2);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Version&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 3, NULL);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 3);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a859348bddc9069f06195915692b65076"> 570</a></span>&#160;<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#a859348bddc9069f06195915692b65076">remmina_plugin_manager_get_import_file_handler</a>(<span class="keyword">const</span> gchar *file)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;{</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; gint i;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; plugin = (<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a3ff85e56bf902817630aafea67e3e494">type</a> != <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa9af260da7aa2ad0ee90e8dae5439dbac">REMMINA_PLUGIN_TYPE_FILE</a>)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a5cbc050a2735ee5d896a110a25e91ca9">import_test_func</a>(plugin, file)) {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> plugin;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;}</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#afce14b101da527ada9b44a4503e91e07"> 589</a></span>&#160;<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#afce14b101da527ada9b44a4503e91e07">remmina_plugin_manager_get_export_file_handler</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; gint i;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; plugin = (<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a3ff85e56bf902817630aafea67e3e494">type</a> != <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa9af260da7aa2ad0ee90e8dae5439dbac">REMMINA_PLUGIN_TYPE_FILE</a>)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a0a3d5cd1b41d206d01ba52ab5ea554b6">export_test_func</a>(plugin, remminafile)) {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> plugin;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;}</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#ad380a98f6624aa8c830015c8b428b7b4"> 606</a></span>&#160;<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e">remmina_secret_plugin</a>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a1668951fd7067f2c405e001836855080"> 612</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#a1668951fd7067f2c405e001836855080">remmina_plugin_manager_query_feature_by_type</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624a">RemminaPluginType</a> ptype, <span class="keyword">const</span> gchar* name, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> ftype)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a>* plugin;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a>*)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(ptype, name);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> (plugin == NULL) {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">for</span> (feature = plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++) {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == ftype)</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;}</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#aef243c58b9e8c778232d5acb32c7729b"> 631</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *pp, <span class="keyword">const</span> <span class="keywordtype">char</span> *setting)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;{</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; GHashTable *pht;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> == NULL)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (!(pht = g_hash_table_lookup(<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a>, pp-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">name</a>)))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span> (!g_hash_table_lookup(pht, setting))</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div><div class="ttc" id="remmina__protocol__widget_8c_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01420">remmina_protocol_widget.c:1420</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a843c2455a10c9382aee454515f9e7f8b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01989">remmina_protocol_widget.c:1989</a></div></div>
+<a href="remmina__plugin__manager_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2010-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gmodule.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;gio/gio.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkx.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#elif defined(GDK_WINDOWING_WAYLAND)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__main_8h.html">remmina_main.h</a>&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file__manager_8h.html">remmina_file_manager.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a>&quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__native_8h.html">remmina_plugin_native.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e"> 64</a></span>&#160;<span class="keyword">static</span> GPtrArray* <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a> = NULL;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">/* A GHashTable of GHashTables where to store the names of the encrypted settings */</span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49"> 67</a></span>&#160;<span class="keyword">static</span> GHashTable *<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> = NULL;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">/* There can be only one secret plugin loaded */</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e"> 70</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *<a class="code" href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e">remmina_secret_plugin</a> = NULL;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// TRANSLATORS: &quot;Language Wrapper&quot; is a wrapper for plugins written in other programmin languages (Python in this context)</span></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10"> 73</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[] =</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{ <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Protocol&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Entry&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;File&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Tool&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Preference&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Secret&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Language Wrapper&quot;</span>), NULL };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#ae78fa0b2eab8c987d810c6997b136d2e"> 76</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina__plugin__manager_8c.html#ae78fa0b2eab8c987d810c6997b136d2e">remmina_plugin_manager_compare_func</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> **a, <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> **b)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> g_strcmp0((*a)-&gt;name, (*b)-&gt;name);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86"> 82</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86">htdestroy</a>(gpointer ht)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; g_hash_table_unref(ht);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a72f0dbafb41acc4a5834f5c0719e6046"> 87</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a72f0dbafb41acc4a5834f5c0719e6046">init_settings_cache</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *protocol_plugin;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a>* setting_iter;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; GHashTable *pht;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">/* This code make a encrypted setting cache only for protocol plugins */</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> != <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> == NULL)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, <a class="code" href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86">htdestroy</a>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (!(pht = g_hash_table_lookup(<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>))) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; pht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; g_hash_table_insert(<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a>, g_strdup(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>), pht);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">/* Some settings are encrypted &quot;by name&quot; */</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">/* g_hash_table_insert(pht, g_strdup(&quot;proxy_password&quot;), (gpointer)TRUE); */</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; g_hash_table_insert(pht, g_strdup(<span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>), (gpointer)TRUE);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; g_hash_table_insert(pht, g_strdup(<span class="stringliteral">&quot;ssh_tunnel_passphrase&quot;</span>), (gpointer)TRUE);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">/* ssh_password is no longer used starting from remmina 1.4.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * But we MUST mark it as encrypted setting, or the migration procedure will fail */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; g_hash_table_insert(pht, g_strdup(<span class="stringliteral">&quot;ssh_password&quot;</span>), (gpointer)TRUE);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">/* Other settings are encrypted because of their type */</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; protocol_plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)plugin;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">basic_settings</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; g_hash_table_insert(pht, g_strdup(<a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)), (gpointer)TRUE);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; setting_iter++;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; setting_iter = protocol_plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db">advanced_settings</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (setting_iter) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">while</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> != <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> (setting_iter-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; g_hash_table_insert(pht, g_strdup(<a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(setting_iter)), (gpointer)TRUE);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; setting_iter++;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#ad4cb2d85f9cf76089a082122f2891fb8"> 139</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__plugin__manager_8c.html#ad4cb2d85f9cf76089a082122f2891fb8">remmina_plugin_manager_register_plugin</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa0d17e841a53921a7a6156f5d30e9f09c">REMMINA_PLUGIN_TYPE_SECRET</a>) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; g_print(<span class="stringliteral">&quot;Remmina plugin %s (type=%s) has been registered, but is not yet initialized/activated. &quot;</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="stringliteral">&quot;The initialization order is %d.\n&quot;</span>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; _(<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a>]),</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; ((<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)plugin)-&gt;init_order);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a72f0dbafb41acc4a5834f5c0719e6046">init_settings_cache</a>(plugin);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; g_ptr_array_add(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, plugin);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; g_ptr_array_sort(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, (GCompareFunc)<a class="code" href="remmina__plugin__manager_8c.html#ae78fa0b2eab8c987d810c6997b136d2e">remmina_plugin_manager_compare_func</a>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a1ef27b953decb0c707ec9a18da47a38f"> 155</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f">remmina_gtksocket_available</a>()</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; GdkDisplayManager* dm;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; GdkDisplay* d;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; gboolean available;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; dm = gdk_display_manager_get();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; d = gdk_display_manager_get_default_display(dm);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; available = FALSE;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (GDK_IS_X11_DISPLAY(d)) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">/* GtkSocket support is available only under X.Org */</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; available = TRUE;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> available;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a3996819fdb2c833f3c64c2ad399e5f10"> 174</a></span>&#160;<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> <a class="code" href="remmina__plugin__manager_8c.html#a3996819fdb2c833f3c64c2ad399e5f10">remmina_plugin_manager_service</a> =</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#ad4cb2d85f9cf76089a082122f2891fb8">remmina_plugin_manager_register_plugin</a>,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>,</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>,</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>,</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>,</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>,</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>,</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>,</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>,</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>,</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>,</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>,</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>,</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>,</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>,</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>,</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>,</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>,</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>,</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="remmina__file_8c.html#ad514c2523ff0c919ddf535e3dbad9f3a">remmina_file_get_secret</a>,</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a>,</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>,</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a>,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>,</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>,</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a>,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a>,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267">remmina_pref_get_ssh_loglevel</a>,</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a>,</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a>,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a>,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="remmina__log_8c.html#a49817b70a398a2f21514fb0066c6e04c">_remmina_info</a>,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="remmina__log_8c.html#ae439b5fb61045d22c9474b32d0158185">_remmina_message</a>,</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="remmina__log_8c.html#a9234814488626cc2513e9fb255a90f53">_remmina_debug</a>,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="remmina__log_8c.html#a8a47ecac307ae1787cdad1ccc4b43d13">_remmina_warning</a>,</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="remmina__log_8c.html#a19da9a0d0eac2a2b7fcc926dee2eb368">_remmina_audit</a>,</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="remmina__log_8c.html#a984e0494481144aa121893f5d14025f7">_remmina_error</a>,</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="remmina__log_8c.html#a35109f5950931f79c13dac26143a69d3">_remmina_critical</a>,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="remmina__log_8c.html#aca8f826a273194e22f4467421af9b3aa">remmina_log_print</a>,</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="remmina__log_8c.html#ac7848510c1fe1990c992e28cd31af9d8">remmina_log_printf</a>,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>,</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="remmina__public_8c.html#a4b8a7b85d58148cf856ea71b1d9f22c1">remmina_public_open_unix_sock</a>,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>,</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f">remmina_gtksocket_available</a>,</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>,</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>,</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>,</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>,</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>,</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>,</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>,</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>,</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>,</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>,</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>,</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>,</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>,</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>,</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>,</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>,</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>,</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>,</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>,</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>,</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>,</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>,</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>,</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>,</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>,</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>,</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>,</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>,</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>,</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>,</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>,</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>,</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a>,</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;};</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206"> 312</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206">get_filename_ext</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* last = strrchr(filename, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *dot = strrchr(last, <span class="charliteral">&#39;.&#39;</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span>(!dot || dot == filename) <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> dot + 1;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;}</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5"> 319</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5">compare_secret_plugin_init_order</a>(gconstpointer a, gconstpointer b)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;{</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *sa, *sb;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; sa = (<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)a;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; sb = (<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)b;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (sa-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a> &gt; sb-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a>)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sa-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a> &lt; sb-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09">init_order</a>)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a92c2264598a43702594535cebbf4d8cd"> 333</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a9df07091ff7d32bcde595a6d3a3598f5">remmina_plugin_manager_init</a>()</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; GDir *dir;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keyword">const</span> gchar *name, *ptr;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; gchar *fullpath;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *sp;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">int</span> i, j;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; GSList *secret_plugins;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; GSList *sple;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; GPtrArray *alternative_language_plugins;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a> = g_ptr_array_new();</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; alternative_language_plugins = g_ptr_array_new();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">if</span> (!g_module_supported()) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; g_print(<span class="stringliteral">&quot;Dynamic loading of plugins is not supported on this platform!\n&quot;</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; g_print(<span class="stringliteral">&quot;Load modules from %s\n&quot;</span>, REMMINA_RUNTIME_PLUGINDIR);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; dir = g_dir_open(REMMINA_RUNTIME_PLUGINDIR, 0, NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span> (dir == NULL)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">while</span> ((name = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span> ((ptr = strrchr(name, <span class="charliteral">&#39;.&#39;</span>)) == NULL)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; ptr++;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; fullpath = g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR <span class="stringliteral">&quot;/%s&quot;</span>, name);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__plugin__manager_8c.html#a1a5e6eeb6e116b5768d5e0c02544149d">remmina_plugin_manager_loader_supported</a>(ptr)) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; g_ptr_array_add(alternative_language_plugins, g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR <span class="stringliteral">&quot;/%s&quot;</span>, name));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="remmina__plugin__native_8c.html#ae60c5371a41a83ef94c6a2b3dc8c9520">remmina_plugin_native_load</a>(&amp;remmina_plugin_manager_service, fullpath);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; g_free(fullpath);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; g_dir_close(dir);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">while</span> (alternative_language_plugins-&gt;len &gt; 0) {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; gboolean has_loaded = FALSE;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; gchar* name = (gchar*)g_ptr_array_remove_index(alternative_language_plugins, 0);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">const</span> gchar* ext = <a class="code" href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206">get_filename_ext</a>(name);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">for</span> (j = 0; j &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len &amp;&amp; !has_loaded; j++) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, j);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa93a45ba624f83d17a6d8619933a54b3e">REMMINA_PLUGIN_TYPE_LANGUAGE_WRAPPER</a>) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="struct___remmina_language_wrapper_plugin.html">RemminaLanguageWrapperPlugin</a>* wrapper_plugin = (<a class="code" href="struct___remmina_language_wrapper_plugin.html">RemminaLanguageWrapperPlugin</a>*)plugin;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">const</span> gchar** supported_extention = wrapper_plugin-&gt;<a class="code" href="struct___remmina_language_wrapper_plugin.html#aea49b9e057254020e13f615331ef239b">supported_extentions</a>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">while</span> (*supported_extention) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (g_str_equal(*supported_extention, ext)) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; has_loaded = wrapper_plugin-&gt;<a class="code" href="struct___remmina_language_wrapper_plugin.html#a1270e29b6e988d6b320ef3f0465b6272">load</a>(wrapper_plugin, name);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (has_loaded) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; supported_extention++;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (has_loaded) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">if</span> (!has_loaded) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; g_print(<span class="stringliteral">&quot;%s: Skip unsupported file type &#39;%s&#39;\n&quot;</span>, name, ext);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; g_free(name);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="comment">/* Now all secret plugins needs to initialize, following their init_order.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> * The 1st plugin which will initialize correctly will be</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"> * the default remmina_secret_plugin */</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (remmina_secret_plugin)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; g_print(<span class="stringliteral">&quot;Internal ERROR: remmina_secret_plugin must be null here\n&quot;</span>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; secret_plugins = NULL;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa0d17e841a53921a7a6156f5d30e9f09c">REMMINA_PLUGIN_TYPE_SECRET</a>) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; secret_plugins = g_slist_insert_sorted(secret_plugins, (gpointer)plugin, <a class="code" href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5">compare_secret_plugin_init_order</a>);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; sple = secret_plugins;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">while</span>(sple != NULL) {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; sp = (<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>*)sple-&gt;data;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; if (sp-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a6c664274cd540fea91013d298d1ef031">init</a>(sp)) {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; g_print(<span class="stringliteral">&quot;The %s secret plugin has been initialized and it will be your default secret plugin\n&quot;</span>,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; sp-&gt;<a class="code" href="struct___remmina_secret_plugin.html#a197b28d8b71ccb0c91ce8bf27690968a">name</a>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; remmina_secret_plugin = sp;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; sple = sple-&gt;next;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; g_slist_free(secret_plugins);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;}</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a1a5e6eeb6e116b5768d5e0c02544149d"> 433</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#a1a5e6eeb6e116b5768d5e0c02544149d">remmina_plugin_manager_loader_supported</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filetype) {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> g_str_equal(G_MODULE_SUFFIX, filetype);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a3872c8656a8a3d5147bcc603471c1932"> 438</a></span>&#160;<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624a">RemminaPluginType</a> type, <span class="keyword">const</span> gchar *name)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; gint i;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == type &amp;&amp; g_strcmp0(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>, name) == 0) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> plugin;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;}</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#af60b8edfa50563ae4c7593efc3deed55"> 453</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a>(<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a>* setting)</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a> == NULL) {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;server&quot;</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;password&quot;</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span> (setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">type</a> == <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a>)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;resolution&quot;</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;missing_setting_name_into_plugin_RemminaProtocolSetting&quot;</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> setting-&gt;<a class="code" href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">name</a>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a13f13a6a4280268656f258cb5aeff031"> 467</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#a13f13a6a4280268656f258cb5aeff031">remmina_plugin_manager_for_each_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624a">RemminaPluginType</a> type, <a class="code" href="remmina__plugin__manager_8h.html#a68d4ed61b9d039dd06ba4252a8971c18">RemminaPluginFunc</a> func, gpointer data)</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; gint i;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; plugin = (<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a> == type) {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; func((gchar*)plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>, plugin, data);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;}</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment">/* A copy of remmina_plugin_manager_show and remmina_plugin_manager_show_for_each</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment"> * This is because we want to print the list of plugins, and their versions, to the standard output</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="comment"> * with the remmina command line option --full-version instead of using the plugins widget</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment"> ** @todo Investigate to use only GListStore and than pass the elements to be shown to 2 separate</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment"> * functions</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment"> * WARNING: GListStore is supported only from GLib 2.44 */</span></div><div class="line"><a name="l00487"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07"> 487</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07">remmina_plugin_manager_show_for_each_stdout</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;{</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; g_print(<span class="stringliteral">&quot;%-20s%-16s%-64s%-10s\n&quot;</span>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>,</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; _(<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a>]),</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; g_dgettext(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a024d3e6d752dd29828b31c60c8c7c201">domain</a>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">description</a>),</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_plugin.html#aecdad5d7ff5bdfbf0ce80b4b73f65099">version</a>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;}</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#afe0881986b2a64bfb5460981dadcf28d"> 498</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#afe0881986b2a64bfb5460981dadcf28d">remmina_plugin_manager_show_stdout</a>()</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;{</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; g_print(<span class="stringliteral">&quot;%-20s%-16s%-64s%-10s\n&quot;</span>, <span class="stringliteral">&quot;NAME&quot;</span>, <span class="stringliteral">&quot;TYPE&quot;</span>, <span class="stringliteral">&quot;DESCRIPTION&quot;</span>, <span class="stringliteral">&quot;PLUGIN AND LIBRARY VERSION&quot;</span>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; g_ptr_array_foreach(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, (GFunc)<a class="code" href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07">remmina_plugin_manager_show_for_each_stdout</a>, NULL);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;}</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c"> 505</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c">remmina_plugin_manager_show_for_each</a>(<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin, GtkListStore *store)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;{</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; gtk_list_store_append(store, &amp;iter);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; gtk_list_store_set(store, &amp;iter, 0, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">name</a>, 1, _(<a class="code" href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a>[plugin-&gt;<a class="code" href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">type</a>]), 2,</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; g_dgettext(plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a024d3e6d752dd29828b31c60c8c7c201">domain</a>, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">description</a>), 3, plugin-&gt;<a class="code" href="struct___remmina_plugin.html#aecdad5d7ff5bdfbf0ce80b4b73f65099">version</a>, -1);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#aedec4e9cf18d99a559aa51065c2bc276"> 516</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a>(GtkWindow *parent)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; GtkWidget *scrolledwindow;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; GtkWidget *tree;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; GtkCellRenderer *renderer;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; GtkTreeViewColumn *column;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; GtkListStore *store;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; dialog = gtk_dialog_new_with_buttons(_(<span class="stringliteral">&quot;Plugins&quot;</span>), parent, GTK_DIALOG_MODAL, _(<span class="stringliteral">&quot;_OK&quot;</span>), GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; g_signal_connect(G_OBJECT(dialog), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(gtk_widget_destroy), dialog);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 350);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; scrolledwindow = gtk_scrolled_window_new(NULL, NULL);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; gtk_widget_show(scrolledwindow);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), scrolledwindow, TRUE, TRUE, 0);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; tree = gtk_tree_view_new();</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; gtk_container_add(GTK_CONTAINER(scrolledwindow), tree);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; gtk_widget_show(tree);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; store = gtk_list_store_new(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; g_ptr_array_foreach(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, (GFunc)<a class="code" href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c">remmina_plugin_manager_show_for_each</a>, store);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store));</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Name&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 0, NULL);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 0);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Type&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 1, NULL);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 1);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Description&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 2, NULL);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 2);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; column = gtk_tree_view_column_new_with_attributes(_(<span class="stringliteral">&quot;Version&quot;</span>), renderer, <span class="stringliteral">&quot;text&quot;</span>, 3, NULL);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; gtk_tree_view_column_set_resizable(column, TRUE);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; gtk_tree_view_column_set_sort_column_id(column, 3);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a859348bddc9069f06195915692b65076"> 570</a></span>&#160;<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#a859348bddc9069f06195915692b65076">remmina_plugin_manager_get_import_file_handler</a>(<span class="keyword">const</span> gchar *file)</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;{</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; gint i;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; plugin = (<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a3ff85e56bf902817630aafea67e3e494">type</a> != <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa9af260da7aa2ad0ee90e8dae5439dbac">REMMINA_PLUGIN_TYPE_FILE</a>)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a5cbc050a2735ee5d896a110a25e91ca9">import_test_func</a>(plugin, file)) {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> plugin;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;}</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#afce14b101da527ada9b44a4503e91e07"> 589</a></span>&#160;<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#afce14b101da527ada9b44a4503e91e07">remmina_plugin_manager_get_export_file_handler</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; gint i;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>-&gt;len; i++) {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; plugin = (<a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a>*)g_ptr_array_index(<a class="code" href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a>, i);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a3ff85e56bf902817630aafea67e3e494">type</a> != <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa9af260da7aa2ad0ee90e8dae5439dbac">REMMINA_PLUGIN_TYPE_FILE</a>)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_file_plugin.html#a0a3d5cd1b41d206d01ba52ab5ea554b6">export_test_func</a>(plugin, remminafile)) {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> plugin;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;}</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#ad380a98f6624aa8c830015c8b428b7b4"> 606</a></span>&#160;<a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a>* <a class="code" href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e">remmina_secret_plugin</a>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#a1668951fd7067f2c405e001836855080"> 612</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#a1668951fd7067f2c405e001836855080">remmina_plugin_manager_query_feature_by_type</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624a">RemminaPluginType</a> ptype, <span class="keyword">const</span> gchar* name, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> ftype)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a>* plugin;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a>*)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(ptype, name);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> (plugin == NULL) {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">for</span> (feature = plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++) {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == ftype)</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;}</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="remmina__plugin__manager_8h.html#aef243c58b9e8c778232d5acb32c7729b"> 631</a></span>&#160;gboolean <a class="code" href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a>(<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *pp, <span class="keyword">const</span> <span class="keywordtype">char</span> *setting)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;{</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; GHashTable *pht;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a> == NULL)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (!(pht = g_hash_table_lookup(<a class="code" href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a>, pp-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">name</a>)))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span> (!g_hash_table_lookup(pht, setting))</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div><div class="ttc" id="remmina__protocol__widget_8c_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01425">remmina_protocol_widget.c:1425</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a843c2455a10c9382aee454515f9e7f8b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00100">types.h:100</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a5e79d6abd0b12c1ed2bb33988e41857e"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a5e79d6abd0b12c1ed2bb33988e41857e">remmina_secret_plugin</a></div><div class="ttdeci">static RemminaSecretPlugin * remmina_secret_plugin</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00070">remmina_plugin_manager.c:70</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_af60b8edfa50563ae4c7593efc3deed55"><div class="ttname"><a href="remmina__plugin__manager_8c.html#af60b8edfa50563ae4c7593efc3deed55">remmina_plugin_manager_get_canonical_setting_name</a></div><div class="ttdeci">const gchar * remmina_plugin_manager_get_canonical_setting_name(const RemminaProtocolSetting *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00453">remmina_plugin_manager.c:453</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a95088334da86faf9520383629fff48af"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a></div><div class="ttdeci">void remmina_protocol_widget_set_error(RemminaProtocolWidget *gp, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01445">remmina_protocol_widget.c:1445</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a95088334da86faf9520383629fff48af"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a></div><div class="ttdeci">void remmina_protocol_widget_set_error(RemminaProtocolWidget *gp, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01450">remmina_protocol_widget.c:1450</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html"><div class="ttname"><a href="struct___remmina_plugin.html">_RemminaPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00056">plugin.h:56</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_aef243c58b9e8c778232d5acb32c7729b"><div class="ttname"><a href="remmina__plugin__manager_8c.html#aef243c58b9e8c778232d5acb32c7729b">remmina_plugin_manager_is_encrypted_setting</a></div><div class="ttdeci">gboolean remmina_plugin_manager_is_encrypted_setting(RemminaProtocolPlugin *pp, const char *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00631">remmina_plugin_manager.c:631</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a37cd589f00c94cb28eabb1bce4646d0b"><div class="ttname"><a href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a></div><div class="ttdeci">gint remmina_pref_get_scale_quality(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01063">remmina_pref.c:1063</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02001">remmina_protocol_widget.c:2001</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a7e75f54171749cfec5c0cbbb1095ed86"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a7e75f54171749cfec5c0cbbb1095ed86">htdestroy</a></div><div class="ttdeci">static void htdestroy(gpointer ht)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00082">remmina_plugin_manager.c:82</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9d55210413d6a313478f81cf76ecf1b7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a></div><div class="ttdeci">gchar * remmina_protocol_widget_start_direct_tunnel(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)</div><div class="ttdoc">Start an SSH tunnel if possible and return the host:port string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01057">remmina_protocol_widget.c:1057</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9d55210413d6a313478f81cf76ecf1b7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a></div><div class="ttdeci">gchar * remmina_protocol_widget_start_direct_tunnel(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)</div><div class="ttdoc">Start an SSH tunnel if possible and return the host:port string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01062">remmina_protocol_widget.c:1062</a></div></div>
<div class="ttc" id="struct___remmina_language_wrapper_plugin_html"><div class="ttname"><a href="struct___remmina_language_wrapper_plugin.html">_RemminaLanguageWrapperPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00150">plugin.h:150</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a7740488de65c0e642895cc9dfba07b6e"><div class="ttname"><a href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a></div><div class="ttdeci">GtkWindow * remmina_main_get_window()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01648">remmina_main.c:1648</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02030">remmina_protocol_widget.c:2030</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01384">remmina_protocol_widget.c:1384</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02036">remmina_protocol_widget.c:2036</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01389">remmina_protocol_widget.c:1389</a></div></div>
<div class="ttc" id="remmina__plugin__native_8c_html_ae60c5371a41a83ef94c6a2b3dc8c9520"><div class="ttname"><a href="remmina__plugin__native_8c.html#ae60c5371a41a83ef94c6a2b3dc8c9520">remmina_plugin_native_load</a></div><div class="ttdeci">gboolean remmina_plugin_native_load(RemminaPluginService *service, const char *name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__native_8c_source.html#l00060">remmina_plugin_native.c:60</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a1a5e6eeb6e116b5768d5e0c02544149d"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a1a5e6eeb6e116b5768d5e0c02544149d">remmina_plugin_manager_loader_supported</a></div><div class="ttdeci">gboolean remmina_plugin_manager_loader_supported(const char *filetype)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00433">remmina_plugin_manager.c:433</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01355">remmina_protocol_widget.c:1355</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01360">remmina_protocol_widget.c:1360</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a6982152fd0492586819ce1760a853e99"><div class="ttname"><a href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a></div><div class="ttdeci">gint remmina_pref_get_sshtunnel_port(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01084">remmina_pref.c:1084</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01694">remmina_protocol_widget.c:1694</a></div></div>
<div class="ttc" id="remmina__file__manager_8h_html"><div class="ttname"><a href="remmina__file__manager_8h.html">remmina_file_manager.h</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa93a45ba624f83d17a6d8619933a54b3e"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa93a45ba624f83d17a6d8619933a54b3e">REMMINA_PLUGIN_TYPE_LANGUAGE_WRAPPER</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00053">plugin.h:53</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html"><div class="ttname"><a href="struct___remmina_file_plugin.html">_RemminaFilePlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00100">plugin.h:100</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01885">remmina_protocol_widget.c:1885</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01890">remmina_protocol_widget.c:1890</a></div></div>
<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_ac90d2ffe3909722ca3daedac28da76e5"><div class="ttname"><a href="remmina__plugin__manager_8c.html#ac90d2ffe3909722ca3daedac28da76e5">compare_secret_plugin_init_order</a></div><div class="ttdeci">static gint compare_secret_plugin_init_order(gconstpointer a, gconstpointer b)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00319">remmina_plugin_manager.c:319</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01843">remmina_protocol_widget.c:1843</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2067c19b160eb43bddda6c6c6e8d6045"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_gtkviewport(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02082">remmina_protocol_widget.c:2082</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01848">remmina_protocol_widget.c:1848</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2067c19b160eb43bddda6c6c6e8d6045"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_gtkviewport(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02088">remmina_protocol_widget.c:2088</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01433">remmina_protocol_widget.c:1433</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01438">remmina_protocol_widget.c:1438</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html_ac7f294cb3a5e989e95f619780ede87d3"><div class="ttname"><a href="struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3">_RemminaPlugin::type</a></div><div class="ttdeci">RemminaPluginType type</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00057">plugin.h:57</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html_a6c664274cd540fea91013d298d1ef031"><div class="ttname"><a href="struct___remmina_secret_plugin.html#a6c664274cd540fea91013d298d1ef031">_RemminaSecretPlugin::init</a></div><div class="ttdeci">gboolean(* init)(struct _RemminaSecretPlugin *instance)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00143">plugin.h:143</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa9af260da7aa2ad0ee90e8dae5439dbac"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa9af260da7aa2ad0ee90e8dae5439dbac">REMMINA_PLUGIN_TYPE_FILE</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00049">plugin.h:49</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a13e14fa81f7ca52942415a7caf5b932c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a></div><div class="ttdeci">void remmina_protocol_widget_register_hostkey(RemminaProtocolWidget *gp, GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00852">remmina_protocol_widget.c:852</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa6d9f2f558fcd9e7fe58eefcde1c3c5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_reverse_tunnel(RemminaProtocolWidget *gp, gint local_port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01159">remmina_protocol_widget.c:1159</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a13e14fa81f7ca52942415a7caf5b932c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a></div><div class="ttdeci">void remmina_protocol_widget_register_hostkey(RemminaProtocolWidget *gp, GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00857">remmina_protocol_widget.c:857</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa6d9f2f558fcd9e7fe58eefcde1c3c5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_reverse_tunnel(RemminaProtocolWidget *gp, gint local_port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01164">remmina_protocol_widget.c:1164</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html_a68d4ed61b9d039dd06ba4252a8971c18"><div class="ttname"><a href="remmina__plugin__manager_8h.html#a68d4ed61b9d039dd06ba4252a8971c18">RemminaPluginFunc</a></div><div class="ttdeci">G_BEGIN_DECLS typedef gboolean(* RemminaPluginFunc)(gchar *name, RemminaPlugin *plugin, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8h_source.html#l00043">remmina_plugin_manager.h:43</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a13f13a6a4280268656f258cb5aeff031"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a13f13a6a4280268656f258cb5aeff031">remmina_plugin_manager_for_each_plugin</a></div><div class="ttdeci">void remmina_plugin_manager_for_each_plugin(RemminaPluginType type, RemminaPluginFunc func, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00467">remmina_plugin_manager.c:467</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01837">remmina_protocol_widget.c:1837</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01842">remmina_protocol_widget.c:1842</a></div></div>
<div class="ttc" id="rcw_8c_html_ad3c2fe67b137c757bd21b79ad5dcc5ff"><div class="ttname"><a href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a></div><div class="ttdeci">GtkWidget * rcw_open_from_file_full(RemminaFile *remminafile, GCallback disconnect_cb, gpointer data, guint *handler)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04499">rcw.c:4499</a></div></div>
<div class="ttc" id="remmina__widget__pool_8c_html_ae3c9c9853eb5bedbfeadbfac1d495b95"><div class="ttname"><a href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a></div><div class="ttdeci">void remmina_widget_pool_register(GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__widget__pool_8c_source.html#l00056">remmina_widget_pool.c:56</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a35109f5950931f79c13dac26143a69d3"><div class="ttname"><a href="remmina__log_8c.html#a35109f5950931f79c13dac26143a69d3">_remmina_critical</a></div><div class="ttdeci">void _remmina_critical(const gchar *fun, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00381">remmina_log.c:381</a></div></div>
@@ -143,13 +143,13 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__log_8c_html_a8a47ecac307ae1787cdad1ccc4b43d13"><div class="ttname"><a href="remmina__log_8c.html#a8a47ecac307ae1787cdad1ccc4b43d13">_remmina_warning</a></div><div class="ttdeci">void _remmina_warning(const gchar *fun, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00285">remmina_log.c:285</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a859348bddc9069f06195915692b65076"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a859348bddc9069f06195915692b65076">remmina_plugin_manager_get_import_file_handler</a></div><div class="ttdeci">RemminaFilePlugin * remmina_plugin_manager_get_import_file_handler(const gchar *file)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00570">remmina_plugin_manager.c:570</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_ad380a98f6624aa8c830015c8b428b7b4"><div class="ttname"><a href="remmina__plugin__manager_8c.html#ad380a98f6624aa8c830015c8b428b7b4">remmina_plugin_manager_get_secret_plugin</a></div><div class="ttdeci">RemminaSecretPlugin * remmina_plugin_manager_get_secret_plugin(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00606">remmina_plugin_manager.c:606</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9473da27fd10eb46ef8360f9ad4be86d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01849">remmina_protocol_widget.c:1849</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a36e01bda95825ee6b5f164f52af7c457"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_lock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00433">remmina_protocol_widget.c:433</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01396">remmina_protocol_widget.c:1396</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9473da27fd10eb46ef8360f9ad4be86d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01854">remmina_protocol_widget.c:1854</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a36e01bda95825ee6b5f164f52af7c457"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_lock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00438">remmina_protocol_widget.c:438</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01401">remmina_protocol_widget.c:1401</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a19da9a0d0eac2a2b7fcc926dee2eb368"><div class="ttname"><a href="remmina__log_8c.html#a19da9a0d0eac2a2b7fcc926dee2eb368">_remmina_audit</a></div><div class="ttdeci">void _remmina_audit(const gchar *fun, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00312">remmina_log.c:312</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01408">remmina_protocol_widget.c:1408</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa88afa1e3f04974974a8be324b0a930e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a></div><div class="ttdeci">void remmina_protocol_widget_update_align(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00408">remmina_protocol_widget.c:408</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa674c14f3a46dd5eb6b53d6f8ce6bd31"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authx509(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01751">remmina_protocol_widget.c:1751</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01413">remmina_protocol_widget.c:1413</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa88afa1e3f04974974a8be324b0a930e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a></div><div class="ttdeci">void remmina_protocol_widget_update_align(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00413">remmina_protocol_widget.c:413</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa674c14f3a46dd5eb6b53d6f8ce6bd31"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authx509(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01756">remmina_protocol_widget.c:1756</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01114">remmina_pref.c:1114</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html"><div class="ttname"><a href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00065">plugin.h:65</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html_a4ac66b7ebefb9bd8167737eb1af83cde"><div class="ttname"><a href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">_RemminaPlugin::description</a></div><div class="ttdeci">const gchar * description</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00059">plugin.h:59</a></div></div>
@@ -157,95 +157,95 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="struct___remmina_language_wrapper_plugin_html_a1270e29b6e988d6b320ef3f0465b6272"><div class="ttname"><a href="struct___remmina_language_wrapper_plugin.html#a1270e29b6e988d6b320ef3f0465b6272">_RemminaLanguageWrapperPlugin::load</a></div><div class="ttdeci">gboolean(* load)(struct _RemminaLanguageWrapperPlugin *instance, const gchar *plugin_file)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00159">plugin.h:159</a></div></div>
<div class="ttc" id="remmina__main_8h_html"><div class="ttname"><a href="remmina__main_8h.html">remmina_main.h</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a9234814488626cc2513e9fb255a90f53"><div class="ttname"><a href="remmina__log_8c.html#a9234814488626cc2513e9fb255a90f53">_remmina_debug</a></div><div class="ttdeci">void _remmina_debug(const gchar *fun, const gchar *fmt,...)</div><div class="ttdoc">Print a string in the Remmina Debug Windows and in the terminal. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00258">remmina_log.c:258</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a15368afcbeb770f8cf25941bd49e7b54"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a></div><div class="ttdeci">void remmina_protocol_widget_set_display(RemminaProtocolWidget *gp, gint display)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01342">remmina_protocol_widget.c:1342</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a41b62f211a8a8e960bc80aa1ba6b0380"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a></div><div class="ttdeci">void remmina_protocol_widget_set_width(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01390">remmina_protocol_widget.c:1390</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a15368afcbeb770f8cf25941bd49e7b54"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a></div><div class="ttdeci">void remmina_protocol_widget_set_display(RemminaProtocolWidget *gp, gint display)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01347">remmina_protocol_widget.c:1347</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a41b62f211a8a8e960bc80aa1ba6b0380"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a></div><div class="ttdeci">void remmina_protocol_widget_set_width(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01395">remmina_protocol_widget.c:1395</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a634fadd9871f76bc60c3da0aa95e719c"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c">remmina_plugin_manager_show_for_each</a></div><div class="ttdeci">static gboolean remmina_plugin_manager_show_for_each(RemminaPlugin *plugin, GtkListStore *store)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00505">remmina_plugin_manager.c:505</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01136">remmina_pref.c:1136</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html"><div class="ttname"><a href="struct___remmina_secret_plugin.html">_RemminaSecretPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00135">plugin.h:135</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a98b783e4c5c1dae695fe554f52f94a23"><div class="ttname"><a href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a></div><div class="ttdeci">gboolean remmina_pref_get_ssh_parseconfig(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01078">remmina_pref.c:1078</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab224a0f643d291f86ede54e373bd0a6f"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_name(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01378">remmina_protocol_widget.c:1378</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab224a0f643d291f86ede54e373bd0a6f"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_name(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01383">remmina_protocol_widget.c:1383</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a06a7e80f6a756ec12b2ac12ea3d5f206"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206">get_filename_ext</a></div><div class="ttdeci">const char * get_filename_ext(const char *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00312">remmina_plugin_manager.c:312</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01939">remmina_protocol_widget.c:1939</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01944">remmina_protocol_widget.c:1944</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_aedec4e9cf18d99a559aa51065c2bc276"><div class="ttname"><a href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a></div><div class="ttdeci">void remmina_plugin_manager_show(GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00516">remmina_plugin_manager.c:516</a></div></div>
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8c_html_a3a52e863a3a3da6da6bb5d36c13b7ff4"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a></div><div class="ttdeci">gboolean remmina_masterthread_exec_is_main_thread()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00147">remmina_masterthread_exec.c:147</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_aa263ec4481bcac099b7a294fe42179b9"><div class="ttname"><a href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a></div><div class="ttdeci">guint * remmina_pref_keymap_get_table(const gchar *keymap)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01011">remmina_pref.c:1011</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a1cae52cad394f317c712eb4fd709d261"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00359">remmina_protocol_widget.c:359</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a1cae52cad394f317c712eb4fd709d261"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00360">remmina_protocol_widget.c:360</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3996819fdb2c833f3c64c2ad399e5f10"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3996819fdb2c833f3c64c2ad399e5f10">remmina_plugin_manager_service</a></div><div class="ttdeci">RemminaPluginService remmina_plugin_manager_service</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00174">remmina_plugin_manager.c:174</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a719ce18a83ed7ecb3388f179a8590c10"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a></div><div class="ttdeci">static const gchar * remmina_plugin_type_name[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00073">remmina_plugin_manager.c:73</a></div></div>
<div class="ttc" id="remmina__main_8c_html_ab2a1a54320992fb796850ffbd6a63589"><div class="ttname"><a href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a></div><div class="ttdeci">void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01667">remmina_main.c:1667</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00456">remmina_protocol_widget.c:456</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00461">remmina_protocol_widget.c:461</a></div></div>
<div class="ttc" id="remmina__log_8h_html"><div class="ttname"><a href="remmina__log_8h.html">remmina_log.h</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a1826baafd2d7b5dc8a009ef4fcad77e9"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">_RemminaProtocolFeature::type</a></div><div class="ttdeci">RemminaProtocolFeatureType type</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00073">types.h:73</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a0a3d5cd1b41d206d01ba52ab5ea554b6"><div class="ttname"><a href="struct___remmina_file_plugin.html#a0a3d5cd1b41d206d01ba52ab5ea554b6">_RemminaFilePlugin::export_test_func</a></div><div class="ttdeci">gboolean(* export_test_func)(struct _RemminaFilePlugin *instance, RemminaFile *file)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00109">plugin.h:109</a></div></div>
<div class="ttc" id="struct___remmina_secret_plugin_html_a197b28d8b71ccb0c91ce8bf27690968a"><div class="ttname"><a href="struct___remmina_secret_plugin.html#a197b28d8b71ccb0c91ce8bf27690968a">_RemminaSecretPlugin::name</a></div><div class="ttdeci">const gchar * name</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00137">plugin.h:137</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_acf75fd4bac28a3d53da064b2905f23c1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_changed_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01791">remmina_protocol_widget.c:1791</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_acf75fd4bac28a3d53da064b2905f23c1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_changed_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01796">remmina_protocol_widget.c:1796</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a1668951fd7067f2c405e001836855080"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a1668951fd7067f2c405e001836855080">remmina_plugin_manager_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_plugin_manager_query_feature_by_type(RemminaPluginType ptype, const gchar *name, RemminaProtocolFeatureType ftype)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00612">remmina_plugin_manager.c:612</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab9632c73b32531b7bea976e10204670b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientcert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01867">remmina_protocol_widget.c:1867</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab9632c73b32531b7bea976e10204670b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientcert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01872">remmina_protocol_widget.c:1872</a></div></div>
<div class="ttc" id="remmina__file_8c_html_af153b0d289ac93f6ecdaa15d5f3b9b8c"><div class="ttname"><a href="remmina__file_8c.html#af153b0d289ac93f6ecdaa15d5f3b9b8c">remmina_file_set_int</a></div><div class="ttdeci">void remmina_file_set_int(RemminaFile *remminafile, const gchar *setting, gint value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00585">remmina_file.c:585</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2551dd6f53480609596d2695040fba5d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_unlock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00440">remmina_protocol_widget.c:440</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2551dd6f53480609596d2695040fba5d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_unlock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00445">remmina_protocol_widget.c:445</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html"><div class="ttname"><a href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00072">types.h:72</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a1ef27b953decb0c707ec9a18da47a38f"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f">remmina_gtksocket_available</a></div><div class="ttdeci">gboolean remmina_gtksocket_available()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00155">remmina_plugin_manager.c:155</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01968">remmina_protocol_widget.c:1968</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01973">remmina_protocol_widget.c:1973</a></div></div>
<div class="ttc" id="struct___remmina_language_wrapper_plugin_html_aea49b9e057254020e13f615331ef239b"><div class="ttname"><a href="struct___remmina_language_wrapper_plugin.html#aea49b9e057254020e13f615331ef239b">_RemminaLanguageWrapperPlugin::supported_extentions</a></div><div class="ttdeci">const gchar ** supported_extentions</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00156">plugin.h:156</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_aae09a7e2c978cc36e85d0f295518978d"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d">_RemminaProtocolPlugin::basic_settings</a></div><div class="ttdeci">const RemminaProtocolSetting * basic_settings</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00074">plugin.h:74</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a262d75d6b535bd8c623e607805db4084"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_new_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01759">remmina_protocol_widget.c:1759</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a262d75d6b535bd8c623e607805db4084"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_new_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01764">remmina_protocol_widget.c:1764</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a9df07091ff7d32bcde595a6d3a3598f5"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a9df07091ff7d32bcde595a6d3a3598f5">remmina_plugin_manager_init</a></div><div class="ttdeci">void remmina_plugin_manager_init()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00333">remmina_plugin_manager.c:333</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_aa65bc30beb59d607ba430d966e7e27f5"><div class="ttname"><a href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a></div><div class="ttdeci">gchar * remmina_file_get_datadir(void)</div><div class="ttdoc">Return datadir_path from pref or first found data dir as per XDG specs. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00059">remmina_file_manager.c:59</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a12eddf3428a53201ee0a2ec422d2fa4a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a></div><div class="ttdeci">gboolean remmina_protocol_widget_ssh_exec(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01190">remmina_protocol_widget.c:1190</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a70aecb9af2ea35527e8d058d1d87a0d3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacrl(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01858">remmina_protocol_widget.c:1858</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a12eddf3428a53201ee0a2ec422d2fa4a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a></div><div class="ttdeci">gboolean remmina_protocol_widget_ssh_exec(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01195">remmina_protocol_widget.c:1195</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a70aecb9af2ea35527e8d058d1d87a0d3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacrl(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01863">remmina_protocol_widget.c:1863</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a49817b70a398a2f21514fb0066c6e04c"><div class="ttname"><a href="remmina__log_8c.html#a49817b70a398a2f21514fb0066c6e04c">_remmina_info</a></div><div class="ttdeci">void _remmina_info(const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00205">remmina_log.c:205</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a></div><div class="ttdeci">RemminaProtocolFeatureType</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00046">types.h:46</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aadd106cec729a80405c6097e4c662044"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a></div><div class="ttdeci">void remmina_protocol_widget_set_height(RemminaProtocolWidget *gp, gint height)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01402">remmina_protocol_widget.c:1402</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aadd106cec729a80405c6097e4c662044"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a></div><div class="ttdeci">void remmina_protocol_widget_set_height(RemminaProtocolWidget *gp, gint height)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01407">remmina_protocol_widget.c:1407</a></div></div>
<div class="ttc" id="struct___remmina_protocol_setting_html_a6274d44b592a54162ff583135e55ffc9"><div class="ttname"><a href="struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9">_RemminaProtocolSetting::type</a></div><div class="ttdeci">RemminaProtocolSettingType type</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00117">types.h:117</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00743">remmina_protocol_widget.c:743</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00748">remmina_protocol_widget.c:748</a></div></div>
<div class="ttc" id="struct___remmina_protocol_setting_html"><div class="ttname"><a href="struct___remmina_protocol_setting.html">_RemminaProtocolSetting</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00116">types.h:116</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00102">types.h:102</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a5e421ba636d34e21bba5ece463e98892"><div class="ttname"><a href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a></div><div class="ttdeci">RemminaFile * remmina_file_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00093">remmina_file.c:93</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_aaac087c000b0863a296f2739f6344af8"><div class="ttname"><a href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a></div><div class="ttdeci">guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01021">remmina_pref.c:1021</a></div></div>
<div class="ttc" id="rcw_8h_html"><div class="ttname"><a href="rcw_8h.html">rcw.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01465">remmina_protocol_widget.c:1465</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a08d312825fc0de9f9286279d99f763a1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientkey(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01876">remmina_protocol_widget.c:1876</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01470">remmina_protocol_widget.c:1470</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a08d312825fc0de9f9286279d99f763a1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientkey(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01881">remmina_protocol_widget.c:1881</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a3ff85e56bf902817630aafea67e3e494"><div class="ttname"><a href="struct___remmina_file_plugin.html#a3ff85e56bf902817630aafea67e3e494">_RemminaFilePlugin::type</a></div><div class="ttdeci">RemminaPluginType type</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00101">plugin.h:101</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01297">remmina_protocol_widget.c:1297</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01302">remmina_protocol_widget.c:1302</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a5cbc050a2735ee5d896a110a25e91ca9"><div class="ttname"><a href="struct___remmina_file_plugin.html#a5cbc050a2735ee5d896a110a25e91ca9">_RemminaFilePlugin::import_test_func</a></div><div class="ttdeci">gboolean(* import_test_func)(struct _RemminaFilePlugin *instance, const gchar *from_file)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00107">plugin.h:107</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3872c8656a8a3d5147bcc603471c1932"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a></div><div class="ttdeci">RemminaPlugin * remmina_plugin_manager_get_plugin(RemminaPluginType type, const gchar *name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00438">remmina_plugin_manager.c:438</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a05b5edfc3d3d0dcff1745d1d35aaca5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_opened(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00391">remmina_protocol_widget.c:391</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a05b5edfc3d3d0dcff1745d1d35aaca5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_opened(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00396">remmina_protocol_widget.c:396</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a65313d34bb7e940f388e45818fd5889e"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a65313d34bb7e940f388e45818fd5889e">remmina_plugin_table</a></div><div class="ttdeci">static GPtrArray * remmina_plugin_table</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00064">remmina_plugin_manager.c:64</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8h_html"><div class="ttname"><a href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01371">remmina_protocol_widget.c:1371</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01376">remmina_protocol_widget.c:1376</a></div></div>
<div class="ttc" id="remmina__pref_8h_html"><div class="ttname"><a href="remmina__pref_8h.html">remmina_pref.h</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_a6e04143450eeb71e3d0b2c14983860a4"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">_RemminaProtocolPlugin::name</a></div><div class="ttdeci">const gchar * name</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00067">plugin.h:67</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01831">remmina_protocol_widget.c:1831</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01836">remmina_protocol_widget.c:1836</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_ae78fa0b2eab8c987d810c6997b136d2e"><div class="ttname"><a href="remmina__plugin__manager_8c.html#ae78fa0b2eab8c987d810c6997b136d2e">remmina_plugin_manager_compare_func</a></div><div class="ttdeci">static gint remmina_plugin_manager_compare_func(RemminaPlugin **a, RemminaPlugin **b)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00076">remmina_plugin_manager.c:76</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_aceb00d9dff794500ccb04a1373eb32db"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db">_RemminaProtocolPlugin::advanced_settings</a></div><div class="ttdeci">const RemminaProtocolSetting * advanced_settings</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00075">plugin.h:75</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624a"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624a">RemminaPluginType</a></div><div class="ttdeci">RemminaPluginType</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00046">plugin.h:46</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a150a4a8a8dcd21a51008250bb38bce49"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a150a4a8a8dcd21a51008250bb38bce49">encrypted_settings_cache</a></div><div class="ttdeci">static GHashTable * encrypted_settings_cache</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00067">remmina_plugin_manager.c:67</a></div></div>
<div class="ttc" id="remmina__plugin__native_8h_html"><div class="ttname"><a href="remmina__plugin__native_8h.html">remmina_plugin_native.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01426">remmina_protocol_widget.c:1426</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01431">remmina_protocol_widget.c:1431</a></div></div>
<div class="ttc" id="remmina__log_8c_html_ac7848510c1fe1990c992e28cd31af9d8"><div class="ttname"><a href="remmina__log_8c.html#ac7848510c1fe1990c992e28cd31af9d8">remmina_log_printf</a></div><div class="ttdeci">void remmina_log_printf(const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00410">remmina_log.c:410</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3fdc160c477f9f5e1d881c0c054d4b07"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3fdc160c477f9f5e1d881c0c054d4b07">remmina_plugin_manager_show_for_each_stdout</a></div><div class="ttdeci">static gboolean remmina_plugin_manager_show_for_each_stdout(RemminaPlugin *plugin)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00487">remmina_plugin_manager.c:487</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9bcd0d356c7215dc0f791c9744360705"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a></div><div class="ttdeci">void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02096">remmina_protocol_widget.c:2096</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9bcd0d356c7215dc0f791c9744360705"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a></div><div class="ttdeci">void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02102">remmina_protocol_widget.c:2102</a></div></div>
<div class="ttc" id="remmina__log_8c_html_aca8f826a273194e22f4467421af9b3aa"><div class="ttname"><a href="remmina__log_8c.html#aca8f826a273194e22f4467421af9b3aa">remmina_log_print</a></div><div class="ttdeci">void remmina_log_print(const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00196">remmina_log.c:196</a></div></div>
<div class="ttc" id="remmina__log_8c_html_ae439b5fb61045d22c9474b32d0158185"><div class="ttname"><a href="remmina__log_8c.html#ae439b5fb61045d22c9474b32d0158185">_remmina_message</a></div><div class="ttdeci">void _remmina_message(const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00229">remmina_log.c:229</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00098">types.h:98</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a503e53fe49430a5ed310c342c946c014"><div class="ttname"><a href="remmina__file_8c.html#a503e53fe49430a5ed310c342c946c014">remmina_file_unsave_passwords</a></div><div class="ttdeci">void remmina_file_unsave_passwords(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00976">remmina_file.c:976</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8h_html"><div class="ttname"><a href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a4a3a9ba7422fc302b0b412ac771c9953"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a></div><div class="ttdeci">void remmina_protocol_widget_chat_close(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02023">remmina_protocol_widget.c:2023</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a4a3a9ba7422fc302b0b412ac771c9953"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a></div><div class="ttdeci">void remmina_protocol_widget_chat_close(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02029">remmina_protocol_widget.c:2029</a></div></div>
<div class="ttc" id="remmina__public_8c_html_adc8b77823386e00e610527d6b0b61149"><div class="ttname"><a href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a></div><div class="ttdeci">void remmina_public_get_server_port(const gchar *server, gint defaultport, gchar **host, gint *port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00422">remmina_public.c:422</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa0d17e841a53921a7a6156f5d30e9f09c"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa0d17e841a53921a7a6156f5d30e9f09c">REMMINA_PLUGIN_TYPE_SECRET</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00052">plugin.h:52</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_ad4cb2d85f9cf76089a082122f2891fb8"><div class="ttname"><a href="remmina__plugin__manager_8c.html#ad4cb2d85f9cf76089a082122f2891fb8">remmina_plugin_manager_register_plugin</a></div><div class="ttdeci">static gboolean remmina_plugin_manager_register_plugin(RemminaPlugin *plugin)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00139">remmina_plugin_manager.c:139</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_afe0881986b2a64bfb5460981dadcf28d"><div class="ttname"><a href="remmina__plugin__manager_8c.html#afe0881986b2a64bfb5460981dadcf28d">remmina_plugin_manager_show_stdout</a></div><div class="ttdeci">void remmina_plugin_manager_show_stdout()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00498">remmina_plugin_manager.c:498</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01471">remmina_protocol_widget.c:1471</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01476">remmina_protocol_widget.c:1476</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a72f0dbafb41acc4a5834f5c0719e6046"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a72f0dbafb41acc4a5834f5c0719e6046">init_settings_cache</a></div><div class="ttdeci">static void init_settings_cache(RemminaPlugin *plugin)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00087">remmina_plugin_manager.c:87</a></div></div>
<div class="ttc" id="vnc__plugin_8c_html_ab96ef9227ecef94018f2729f72e7651e"><div class="ttname"><a href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a></div><div class="ttdeci">N_(&quot;Unable to connect to VNC server&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="vnc__plugin_8c_source.html#l00953">vnc_plugin.c:953</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a4b8a7b85d58148cf856ea71b1d9f22c1"><div class="ttname"><a href="remmina__public_8c.html#a4b8a7b85d58148cf856ea71b1d9f22c1">remmina_public_open_unix_sock</a></div><div class="ttdeci">gint remmina_public_open_unix_sock(const char *unixsock)</div><div class="ttdoc">Return a file descriptor handle for a unix socket. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00340">remmina_public.c:340</a></div></div>
<div class="ttc" id="struct___remmina_plugin_service_html"><div class="ttname"><a href="struct___remmina_plugin_service.html">_RemminaPluginService</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00165">plugin.h:165</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a66263e6e7da79357ceb80d32b191d9f2"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a></div><div class="ttdeci">void remmina_protocol_widget_chat_open(RemminaProtocolWidget *gp, const gchar *name, void(*on_send)(RemminaProtocolWidget *gp, const gchar *text), void(*on_destroy)(RemminaProtocolWidget *gp))</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02007">remmina_protocol_widget.c:2007</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a66263e6e7da79357ceb80d32b191d9f2"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a></div><div class="ttdeci">void remmina_protocol_widget_chat_open(RemminaProtocolWidget *gp, const gchar *name, void(*on_send)(RemminaProtocolWidget *gp, const gchar *text), void(*on_destroy)(RemminaProtocolWidget *gp))</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02013">remmina_protocol_widget.c:2013</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html_a3f09b29bb3b0c044780d56a8b1a51582"><div class="ttname"><a href="struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582">_RemminaPlugin::name</a></div><div class="ttdeci">const gchar * name</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00058">plugin.h:58</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01825">remmina_protocol_widget.c:1825</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01830">remmina_protocol_widget.c:1830</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a984e0494481144aa121893f5d14025f7"><div class="ttname"><a href="remmina__log_8c.html#a984e0494481144aa121893f5d14025f7">_remmina_error</a></div><div class="ttdeci">void _remmina_error(const gchar *fun, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00354">remmina_log.c:354</a></div></div>
<div class="ttc" id="struct___remmina_protocol_setting_html_ac4cd339607204c5f478727e2a0c04857"><div class="ttname"><a href="struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857">_RemminaProtocolSetting::name</a></div><div class="ttdeci">const gchar * name</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00118">types.h:118</a></div></div>
</div><!-- fragment --></div><!-- contents -->
diff --git a/public/remmina__protocol__widget_8c.html b/public/remmina__protocol__widget_8c.html
index 017d31375..dfe8dfc84 100644
--- a/public/remmina__protocol__widget_8c.html
+++ b/public/remmina__protocol__widget_8c.html
@@ -380,7 +380,7 @@ Variables</h2></td></tr>
<tr><td class="fieldname"><a id="a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed"></a>RPWDT_AUTHX509&#160;</td><td class="fielddoc"></td></tr>
</table>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00103">103</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00104">104</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -419,7 +419,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01495">1495</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01500">1500</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -457,7 +457,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01292">1292</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01297">1297</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -495,7 +495,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00907">907</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00912">912</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -533,7 +533,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00308">308</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00309">309</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -571,7 +571,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01016">1016</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01021">1021</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -609,7 +609,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01152">1152</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01157">1157</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -637,7 +637,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00343">343</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00344">344</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -665,7 +665,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00368">368</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00369">369</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -693,7 +693,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00447">447</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00452">452</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -729,7 +729,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00109">109</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00110">110</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -757,7 +757,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00415">415</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00420">420</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -787,7 +787,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00806">806</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00811">811</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -823,7 +823,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00793">793</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00798">798</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -843,7 +843,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02023">2023</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02029">2029</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -871,7 +871,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02001">2001</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02007">2007</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -913,7 +913,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02007">2007</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02013">2013</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -943,7 +943,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02030">2030</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02036">2036</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -971,7 +971,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00129">129</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00130">130</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -999,7 +999,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00153">153</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00154">154</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1019,7 +1019,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00464">464</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00469">469</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1039,7 +1039,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00456">456</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00461">461</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1077,7 +1077,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00171">171</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00172">172</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1151,7 +1151,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01607">1607</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01612">1612</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1179,7 +1179,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01528">1528</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01533">1533</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1209,7 +1209,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00743">743</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00748">748</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1229,7 +1229,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01849">1849</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01854">1854</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1249,7 +1249,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01858">1858</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01863">1863</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1269,7 +1269,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01867">1867</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01872">1872</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1289,7 +1289,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01876">1876</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01881">1881</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1309,7 +1309,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01408">1408</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01413">1413</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1329,7 +1329,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01837">1837</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01842">1842</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1349,7 +1349,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01439">1439</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01444">1444</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1369,7 +1369,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01420">1420</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01425">1425</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1389,7 +1389,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00764">764</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00769">769</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1409,7 +1409,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01471">1471</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01476">1476</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1429,7 +1429,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02077">2077</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02083">2083</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1449,7 +1449,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01396">1396</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01401">1401</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1469,7 +1469,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01362">1362</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01367">1367</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1489,7 +1489,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01378">1378</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01383">1383</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1509,7 +1509,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01831">1831</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01836">1836</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1529,7 +1529,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01371">1371</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01376">1376</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1549,7 +1549,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01355">1355</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01360">1360</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1569,7 +1569,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01843">1843</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01848">1848</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1589,7 +1589,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01825">1825</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01830">1830</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1609,7 +1609,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01384">1384</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01389">1389</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1629,7 +1629,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00216">216</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00217">217</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1649,7 +1649,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02082">2082</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02088">2088</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1669,7 +1669,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01433">1433</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01438">1438</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1697,7 +1697,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00229">229</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00230">230</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1725,7 +1725,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00912">912</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00917">917</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1745,7 +1745,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01465">1465</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01470">1470</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1765,7 +1765,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00433">433</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00438">438</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1785,7 +1785,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00719">719</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00724">724</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1815,7 +1815,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00890">890</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00895">895</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1857,7 +1857,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00865">865</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00870">870</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1877,7 +1877,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02087">2087</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02093">2093</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1921,7 +1921,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00835">835</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00840">840</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1965,7 +1965,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00843">843</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00848">848</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1985,7 +1985,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00315">315</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00316">316</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2005,7 +2005,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00242">242</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00243">243</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2065,7 +2065,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01689">1689</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01694">1694</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2101,7 +2101,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01697">1697</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01702">1702</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2121,7 +2121,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01751">1751</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01756">1756</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2169,7 +2169,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01791">1791</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01796">1796</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2189,7 +2189,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01995">1995</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02001">2001</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2231,7 +2231,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01759">1759</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01764">1764</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2261,7 +2261,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01684">1684</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01689">1689</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2281,7 +2281,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01989">1989</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01995">1995</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2311,7 +2311,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01939">1939</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01944">1944</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2331,7 +2331,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01968">1968</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01973">1973</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2353,7 +2353,7 @@ Variables</h2></td></tr>
<p>Check if the plugin accepts keystrokes. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00499">499</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00504">504</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2383,7 +2383,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00708">708</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00713">713</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2413,7 +2413,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00787">787</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00792">792</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2443,7 +2443,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00770">770</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00775">775</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2473,7 +2473,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00852">852</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00857">857</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2493,7 +2493,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01885">1885</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01890">1890</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2531,7 +2531,7 @@ Variables</h2></td></tr>
<p>Send to the plugin some keystrokes from the content of the clipboard This is a copy of remmina_protocol_widget_send_keystrokes but it uses the clipboard content get from remmina_protocol_widget_send_clipboard Probably we don't need the replacement table. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00598">598</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00603">603</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2561,7 +2561,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00694">694</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00699">699</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2603,7 +2603,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02096">2096</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02102">2102</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2635,7 +2635,7 @@ Variables</h2></td></tr>
<p>Send to the plugin some keystrokes. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00507">507</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00512">512</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2665,7 +2665,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01414">1414</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01419">1419</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2695,7 +2695,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01342">1342</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01347">1347</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2731,7 +2731,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01445">1445</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01450">1450</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2761,7 +2761,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01426">1426</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01431">1431</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2791,7 +2791,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01402">1402</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01407">1407</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2821,7 +2821,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00859">859</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00864">864</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2851,7 +2851,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01390">1390</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01395">1395</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2887,7 +2887,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02052">2052</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02058">2058</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2907,7 +2907,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00359">359</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00360">360</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2927,7 +2927,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00391">391</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00396">396</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2969,7 +2969,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01190">1190</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01195">1195</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3007,7 +3007,7 @@ Variables</h2></td></tr>
<p>Start an SSH tunnel if possible and return the host:port string. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01057">1057</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01062">1062</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3037,7 +3037,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01159">1159</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01164">1164</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3067,7 +3067,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01297">1297</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01302">1302</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3105,7 +3105,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01021">1021</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01026">1026</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3125,7 +3125,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00440">440</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00445">445</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3145,7 +3145,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00731">731</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00736">736</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3165,7 +3165,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00408">408</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00413">413</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3185,7 +3185,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02136">2136</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02142">2142</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3223,7 +3223,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01273">1273</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01278">1278</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3261,7 +3261,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01279">1279</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01284">1284</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3299,7 +3299,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01256">1256</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01261">1261</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3337,7 +3337,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01598">1598</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01603">1603</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3381,7 +3381,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01582">1582</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01587">1587</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3419,7 +3419,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01590">1590</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01595">1595</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3447,7 +3447,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01576">1576</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01581">1581</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3475,7 +3475,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00424">424</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00429">429</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3503,7 +3503,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00399">399</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00404">404</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -3528,7 +3528,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{ 0 }</div></div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00126">126</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00127">127</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__protocol__widget_8c_source.html b/public/remmina__protocol__widget_8c_source.html
index b28ec2f62..bf334df38 100644
--- a/public/remmina__protocol__widget_8c_source.html
+++ b/public/remmina__protocol__widget_8c_source.html
@@ -86,139 +86,140 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="title">remmina_protocol_widget.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__protocol__widget_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtkx.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gmodule.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__chat__window_8h.html">remmina_chat_window.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a>&quot;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html"> 60</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a> {</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec"> 61</a></span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0"> 62</a></span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d"> 63</a></span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93"> 65</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380"> 66</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533"> 67</a></span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c"> 68</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d"> 70</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4"> 71</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">/* ssh_tunnels is an array of RemminaSSHTunnel*</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * the 1st one is the &quot;main&quot; tunnel, other tunnels are used for example in sftp commands */</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116"> 74</a></span>&#160; GPtrArray * <a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211"> 75</a></span>&#160; <a class="code" href="types_8h.html#a1ace68e95e55a30fcf8b991f52332501">RemminaTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e"> 77</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6"> 79</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326"> 81</a></span>&#160; <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10"> 83</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca"> 84</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46"> 85</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483"> 87</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640"> 88</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b"> 89</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">/* Data saved from the last message_panel when the user confirm */</span></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885"> 92</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7"> 93</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f"> 94</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791"> 95</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e"> 97</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4"> 98</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05"> 99</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0"> 100</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373"> 103</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> {</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c"> 104</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>,</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65"> 105</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>,</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed"> 106</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;};</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32"> 109</a></span>&#160;<a class="code" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32">G_DEFINE_TYPE</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>, remmina_protocol_widget, GTK_TYPE_EVENT_BOX)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; CONNECT_SIGNAL,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; DISCONNECT_SIGNAL,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; DESKTOP_RESIZE_SIGNAL,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; UPDATE_ALIGN_SIGNAL,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; LOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; UNLOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;};</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html"> 121</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a> {</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a"> 122</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a">gp</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada"> 123</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada">signal_name</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;} <a class="code" href="remmina__protocol__widget_8c.html#a91d88c61dd84299369fe3c79e19821b1">RemminaProtocolWidgetSignalData</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130"> 126</a></span>&#160;<span class="keyword">static</span> guint <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[<a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a>] =</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{ 0 };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74"> 129</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74">remmina_protocol_widget_class_init</a>(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a> *klass)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[CONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;connect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, connect), NULL, NULL,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DISCONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;disconnect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, disconnect), NULL, NULL,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DESKTOP_RESIZE_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;desktop-resize&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>), NULL, NULL,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UPDATE_ALIGN_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;update-align&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>), NULL, NULL,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[LOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;lock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UNLOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;unlock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1"> 153</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;{</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;LibSSH support turned off, no need to free SSH tunnel data&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; g_ptr_array_set_size(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, 0);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f"> 171</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = NULL;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = NULL;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = NULL;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = NULL;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = NULL;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = NULL;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = NULL;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = NULL;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = NULL;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; g_ptr_array_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, TRUE);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = NULL;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1"> 216</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; GtkWidget *child;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; child = gtk_bin_get_child(GTK_BIN(gp));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span> (child) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; gtk_widget_set_can_focus(child, TRUE);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gtk_widget_grab_focus(child);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;}</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df"> 229</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df">remmina_protocol_widget_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a> *priv;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; priv = g_new0(<a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a>, 1);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = priv;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = g_ptr_array_new();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; g_signal_connect(G_OBJECT(gp), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>), NULL);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd"> 242</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gpointer data)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Opening connection&quot;</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; gint num_plugin;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; gint num_ssh;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = FALSE;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; plugin = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a>(gp);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">for</span> (num_plugin = 0, feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; num_plugin++, feature++) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; num_ssh = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; num_ssh += 2;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (num_plugin + num_ssh == 0) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = g_new0(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>, num_plugin + num_ssh + 1);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; memcpy(feature, plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>, <span class="keyword">sizeof</span>(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>) * num_plugin);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; feature += num_plugin;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Have SSH&quot;</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (num_ssh) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SSH;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Connect via SSH from a new terminal&quot;</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;utilities-terminal&quot;</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; feature++;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SFTP;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Open SFTP transfer…&quot;</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;folder-remote&quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; feature++;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">if</span> (!plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>(gp))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5"> 308</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cbdata;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b"> 315</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; gchar *s;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">/* Exec precommand before everything else */</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Executing external commands…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;precommand&quot;</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; name = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for the connection profile name</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; s = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s”…&quot;</span>), (name ? name : <span class="stringliteral">&quot;*&quot;</span>));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>, gp);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; g_free(s);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = mp;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gp);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;}</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016"> 343</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>(gpointer data)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;{</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">/* This will close all tunnels */</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">/* Exec postcommand */</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;postcommand&quot;</span>);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">/* Notify listeners (usually rcw) that the connection is closed */</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;}</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261"> 359</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">/* Plugin told us that it closed the connection,</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>, (gpointer)gp);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48"> 368</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>(gpointer data)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;{</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">for</span> (guint i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = NULL;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = NULL;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;connect&quot;</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c"> 391</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">/* Plugin told us that it opened the connection,</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>, (gpointer)gp);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;}</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a"> 399</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>(gpointer data)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;{</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;update-align&quot;</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e"> 408</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>, (gpointer)gp);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;}</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc"> 415</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>(gpointer data)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;{</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;lock-dynres&quot;</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;}</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e"> 424</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>(gpointer data)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;{</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;unlock-dynres&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;}</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457"> 433</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;{</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>, (gpointer)gp);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;}</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d"> 440</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;{</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>, (gpointer)gp);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565"> 447</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>(gpointer data)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;desktop-resize&quot;</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;}</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee"> 456</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;{</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>, (gpointer)gp);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22"> 464</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;{</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="comment">/* kindly ask the protocol plugin to close the connection.</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> * Nothing else is done here. */</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (!GTK_IS_WIDGET(gp))</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>) {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">/* Connection is already closed by the plugin, but</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment"> * rcw is asking to close again (usually after an error panel)</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">/* Clear the current error, or &quot;disconnect&quot; signal func will reshow a panel */</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, NULL);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">/* Ask the plugin to close, async.</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="comment"> * The plugin will emit a &quot;disconnect&quot; signal on gp to call our</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="comment"> * remmina_protocol_widget_on_disconnected() when done */</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4b21147a7592bf689c9f761d9e4fdc2">close_connection</a>(gp);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601"> 499</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a> ? TRUE : FALSE;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;}</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471"> 507</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;{</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; gchar *keystrokes = g_object_get_data(G_OBJECT(widget), <span class="stringliteral">&quot;keystrokes&quot;</span>);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; guint *keyvals;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; gint i;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; gunichar character;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; guint keyval;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; gint n_keys;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; gchar * search;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; gchar * replace;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; guint keyval;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; KeystrokeReplace keystrokes_replaces[] =</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; { NULL, NULL, 0 }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; };</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">/* Keystrokes can only be sent to plugins that accepts them */</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes before replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; keystrokes = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(keystrokes,</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; keystrokes_replaces[i].search,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; keystrokes_replaces[i].replace));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes after replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; gchar *iter = g_strdup(keystrokes);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; keyvals = (guint *)g_malloc(strlen(keystrokes));</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (character == keystrokes_replaces[i].replace[0]) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; keyval = keystrokes_replaces[i].keyval;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; character = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; g_warning(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; n_keys = 0;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; g_free(keys);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; g_free(keyvals);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; g_free(keystrokes);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;}</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06"> 598</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>(GtkClipboard *clipboard, <span class="keyword">const</span> gchar *clip_text, gpointer data)</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;{</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; gchar *text = g_utf8_normalize(clip_text, -1, G_NORMALIZE_DEFAULT_COMPOSE);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; guint *keyvals;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; gint i;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gunichar character;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; guint keyval;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gint n_keys;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; gchar * search;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gchar * replace;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; guint keyval;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; KeystrokeReplace text_replaces[] =</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; { NULL, NULL, 0 }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; };</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">if</span> (text) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard before replacement is \&#39;%s\&#39;&quot;</span>, text);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; text = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(text,</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; text_replaces[i].search,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; text_replaces[i].replace));</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard after replacement is \&#39;%s\&#39;&quot;</span>, text);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; gchar *iter = g_strdup(text);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Iter: %s&quot;</span>, iter),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; keyvals = (guint *)g_malloc(strlen(text));</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Char: U+%04&quot;</span> G_GINT32_FORMAT<span class="stringliteral">&quot;X&quot;</span>, character);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (character == text_replaces[i].replace[0]) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; keyval = text_replaces[i].keyval;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Special Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; character = 0;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; n_keys = 0;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"> * @fixme heap buffer overflow</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> * In some cases, for example sending \t as the only sequence</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * may lead to a buffer overflow</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; g_free(keys);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; g_free(keyvals);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; g_free(text);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1"> 694</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;{</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; GtkClipboard *clipboard;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="comment">/* Request the contents of the clipboard, contents_received will be</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> * called when we do get the contents.</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; gtk_clipboard_request_text(clipboard,</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>, gp);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;}</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;</div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca"> 708</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="struct___remmina_plugin_screenshot_data.html">RemminaPluginScreenshotData</a> *rpsd)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;{</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;plugin screenshot function is not implemented, using core Remmina functionality&quot;</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>(gp, rpsd);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;}</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435"> 719</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;{</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Map plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin mapping function&quot;</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>(gp);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;}</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a"> 731</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;{</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unmap plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin unmapping function&quot;</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#abfb8cc172b53c16c8099eba7ab3bbc57">unmap_event</a>(gp);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;}</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b"> 743</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *signal_name)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;{</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Emitting signals should be used from the object itself, not from another object&quot;</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keyword">raise</span>(SIGINT);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_EMIT_SIGNAL;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.signal_name = signal_name;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.gp = gp;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; g_free(d);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), signal_name);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;}</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd"> 764</a></span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;{</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;}</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d"> 770</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;{</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (type == <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a> &amp;&amp;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a"> 787</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;{</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aa49520ac95b505c111abfb7f3b7c55de">query_feature</a>(gp, feature);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;}</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9"> 793</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type, gint <span class="keywordtype">id</span>)</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;{</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type &amp;&amp; (<span class="keywordtype">id</span> == 0 || feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> == <span class="keywordtype">id</span>)) {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(gp, feature);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;}</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;</div><div class="line"><a name="l00806"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692"> 806</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;{</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">switch</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a>) {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SSH:</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SSH&quot;</span>), NULL,</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SFTP&quot;</span>), NULL,</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a4908abc6c70c59c42e2757aecaa25cf1">call_feature</a>(gp, feature);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;}</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1"> 835</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;{</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, FALSE);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;}</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;</div><div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0"> 843</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;{</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, TRUE);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;}</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;</div><div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c"> 852</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkWidget *widget)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>), gp);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>), gp);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;}</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8"> 859</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> func)</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;{</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a> = func;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;}</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1"> 865</a></span>&#160;RemminaMessagePanel *<a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, <span class="keyword">const</span> gchar *msg, <a class="code" href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a> response_callback, gpointer response_callback_data)</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;{</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPPROGRESS;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.cnnobj = cnnobj;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.message = msg;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback = response_callback;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback_data = response_callback_data;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; mp = d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.ret_mp;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; g_free(d);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, msg, response_callback, response_callback_data);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(cnnobj, mp);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5"> 890</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, RemminaMessagePanel *mp)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;{</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPDESTROY;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.cnnobj = cnnobj;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.mp = mp;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; g_free(d);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(cnnobj, mp);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;}</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227"> 907</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;{</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling an opening tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;}</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;</div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3"> 912</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *<a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;{</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; gint ret;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; gchar *msg;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; gboolean partial = FALSE;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; gboolean cont = FALSE;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; tunnel = <a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Creating SSH tunnel to “%s” via SSH…&quot;</span>, REMMINA_SSH(tunnel)-&gt;server);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), REMMINA_SSH(tunnel)-&gt;server);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>, NULL);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; g_free(msg);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (!partial) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH Tunnel init session error: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>:</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication success&quot;</span>);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>:</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Continue with the next auth method&quot;</span>);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; partial = TRUE;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a>:</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Reconnecting…&quot;</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;session) {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; ssh_disconnect(REMMINA_SSH(tunnel)-&gt;session);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; ssh_free(REMMINA_SSH(tunnel)-&gt;session);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; REMMINA_SSH(tunnel)-&gt;session = NULL;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; g_free(REMMINA_SSH(tunnel)-&gt;callback);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>:</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Interrupted by the user&quot;</span>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Error during the authentication: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; cont = TRUE;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot init SSH session with tunnel struct&quot;</span>);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>) {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>)</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; }</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;BREAK:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">if</span> (!cont) {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;}</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3"> 1016</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;{</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_direct_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;}</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;</div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb"> 1021</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;{</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; guint idx = 0;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="preprocessor">#if GLIB_CHECK_VERSION(2, 54, 0)</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; gboolean found = g_ptr_array_find(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel, &amp;idx);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; gboolean found = FALSE;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i] == tunnel) {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; found = TRUE;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; idx = i;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; printf(<span class="stringliteral">&quot;Tunnel %s found at idx = %d\n&quot;</span>, found ? <span class="stringliteral">&quot;yes&quot;</span>: <span class="stringliteral">&quot;not&quot;</span>, idx);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (found) {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;[Tunnel with idx %u has been disconnected&quot;</span>, idx);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; g_ptr_array_remove(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; }</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;}</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;</div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7"> 1057</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint default_port, gboolean port_plus)</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;{</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; gchar *ssh_tunnel_host, *srv_host, *dest;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; gint srv_port, ssh_tunnel_port = 0;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH tunnel initialization…&quot;</span>);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">if</span> (!server)</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">if</span> (strstr(g_strdup(server), <span class="stringliteral">&quot;unix:///&quot;</span>) != NULL) {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s is a UNIX socket&quot;</span>, server);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> g_strdup(server);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; }</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, default_port, &amp;srv_host, &amp;srv_port);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port (tunnel)&quot;</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(ssh_tunnel_server, 22, &amp;ssh_tunnel_host, &amp;ssh_tunnel_port);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server: %s, port: %d&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">if</span> (port_plus &amp;&amp; srv_port &lt; 100)</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">/* Protocols like VNC supports using instance number :0, :1, etc. as port number. */</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; srv_port += default_port;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; gchar *msg;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE)) {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; }</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;remmina_protocol_widget_init_tunnel failed with error is %s&quot;</span>,</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(gp));</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), server);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; g_free(msg);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_loopback&quot;</span>, FALSE)) {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; ssh_tunnel_host = NULL;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; srv_host = g_strdup(<span class="stringliteral">&quot;127.0.0.1&quot;</span>);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Starting tunnel to: %s, port: %d&quot;</span>, ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(tunnel, srv_host, srv_port, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>)) {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; }</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a> = (gpointer)gp;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">&quot;127.0.0.1:%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;}</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac"> 1152</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;{</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_reverse_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;}</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c"> 1159</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint local_port)</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;{</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; gchar *msg;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp)))</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a TCP port number.</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Awaiting incoming SSH connection on port %i…&quot;</span>), <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0));</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; g_free(msg);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(tunnel, <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0), local_port)) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;}</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div><div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a"> 1190</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean wait, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;{</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; ssh_channel channel;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; gint status;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; gboolean ret = FALSE;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; gchar *cmd, *ptr;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; va_list args;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; if ((channel = ssh_channel_new(REMMINA_SSH(tunnel)-&gt;session)) == NULL)</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; cmd = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; va_end(args);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">if</span> (ssh_channel_open_session(channel) == SSH_OK &amp;&amp;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; ssh_channel_request_exec(channel, cmd) == SSH_OK) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">if</span> (wait) {</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; status = ssh_channel_get_exit_status(channel);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; ptr = strchr(cmd, <span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (ptr) *ptr = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">switch</span> (status) {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; ret = TRUE;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">case</span> 127:</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path.</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; _(<span class="stringliteral">&quot;The “%s” command is not available on the SSH server.&quot;</span>), cmd);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path. “%i” is a placeholder for an error code number.</span></div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; _(<span class="stringliteral">&quot;Could not run the “%s” command on the SSH server (status = %i).&quot;</span>), cmd, status);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; }</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; ret = TRUE;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; }</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="comment">// TRANSLATORS: %s is a placeholder for an error message</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not run command. %s&quot;</span>));</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; g_free(cmd);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (wait)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;}</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01256"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736"> 1256</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;{</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; gchar *server;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; gint port;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; gboolean ret;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 177, &amp;server, &amp;port);</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; ret = ((<a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a>)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)(gp,</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : server), port);</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; g_free(server);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;}</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;</div><div class="line"><a name="l01273"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee"> 1273</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;{</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;}</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div><div class="line"><a name="l01279"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d"> 1279</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;{</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;error)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;%s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; IDLE_ADD((GSourceFunc)<a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>, gp);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;}</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01292"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9"> 1292</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;{</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling an XPort connection is not implemented\n&quot;</span>);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;}</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01297"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4"> 1297</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;{</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; gboolean bindlocalhost;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; gchar *server;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; gchar *msg;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a hostname or IP address.</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to %s via SSH…&quot;</span>), <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>, NULL);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; g_free(msg);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a> = gp;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 0, &amp;server, NULL);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; bindlocalhost = (g_strcmp0(REMMINA_SSH(tunnel)-&gt;server, server) == 0);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; g_free(server);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(tunnel, bindlocalhost)) {</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;Could not open channel, %s&quot;</span>,</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; ssh_get_error(REMMINA_SSH(tunnel)-&gt;session));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;}</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;</div><div class="line"><a name="l01342"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54"> 1342</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint display)</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;{</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; if (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>) g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = g_strdup_printf(<span class="stringliteral">&quot;unix:%i&quot;</span>, display);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;}</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;</div><div class="line"><a name="l01355"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907"> 1355</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;{</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="comment">/* Returns the width of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;}</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb"> 1362</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;{</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">/* Returns ehenever multi monitor is enabled (1) */</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, -1);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Multi monitor is set to %d&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;}</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;</div><div class="line"><a name="l01371"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9"> 1371</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;{</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="comment">/* Returns the height of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;}</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div><div class="line"><a name="l01378"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f"> 1378</a></span>&#160;<span class="keyword">const</span> gchar* <a class="code" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;{</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">return</span> gp ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">name</a> : NULL : NULL;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;}</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;</div><div class="line"><a name="l01384"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995"> 1384</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;{</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;}</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380"> 1390</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>)</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;{</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;}</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;</div><div class="line"><a name="l01396"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5"> 1396</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;{</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;}</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044"> 1402</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>)</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;{</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;}</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;</div><div class="line"><a name="l01408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7"> 1408</a></span>&#160;<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;{</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;}</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;</div><div class="line"><a name="l01414"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48"> 1414</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>)</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;{</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;}</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;</div><div class="line"><a name="l01420"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25"> 1420</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;{</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;}</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;</div><div class="line"><a name="l01426"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa"> 1426</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean expand)</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;{</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = expand;</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;</div><div class="line"><a name="l01433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771"> 1433</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;{</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;}</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;</div><div class="line"><a name="l01439"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29"> 1439</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;{</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;}</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div><div class="line"><a name="l01445"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af"> 1445</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;{</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; va_list args;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>) g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">if</span> (fmt == NULL) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = FALSE;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; va_end(args);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = TRUE;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;}</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;</div><div class="line"><a name="l01465"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3"> 1465</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;{</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;}</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div><div class="line"><a name="l01471"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069"> 1471</a></span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *<a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;{</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;}</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;</div><div class="line"><a name="l01477"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html"> 1477</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> {</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="comment">/* Input data */</span></div><div class="line"><a name="l01479"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a"> 1479</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01480"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74"> 1480</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>;</div><div class="line"><a name="l01481"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28"> 1481</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>;</div><div class="line"><a name="l01482"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850"> 1482</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>;</div><div class="line"><a name="l01483"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361"> 1483</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>;</div><div class="line"><a name="l01484"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544"> 1484</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>;</div><div class="line"><a name="l01485"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7"> 1485</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype;</div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8"> 1486</a></span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01487"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f"> 1487</a></span>&#160; gboolean <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="comment">/* Running status */</span></div><div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf"> 1489</a></span>&#160; pthread_mutex_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>;</div><div class="line"><a name="l01490"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda"> 1490</a></span>&#160; pthread_cond_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>;</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="comment">/* Output/retval */</span></div><div class="line"><a name="l01492"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5"> 1492</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;};</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;</div><div class="line"><a name="l01495"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb"> 1495</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>(<span class="keywordtype">void</span> *user_data, <span class="keywordtype">int</span> button)</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;{</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a> = button;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">if</span> (button == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a> = <a class="code" href="remmina__message__panel_8c.html#a80bc2fcb39c236da739593c2134c73fa">remmina_message_panel_field_get_switch_state</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>);</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>);</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; }</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>) {</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="comment">/* Hide and destroy message panel, we can do it now because we are on the main thread */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="comment">/* Awake the locked subthread, when called from subthread */</span></div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; pthread_cond_signal(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="comment">/* Signal completion, when called from main thread. Message panel will be destroyed by the caller */</span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <a class="code" href="remmina__message__panel_8c.html#af7db7b9f49fe6b83b17471116d363d40">remmina_message_panel_response</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, button);</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; }</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;}</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113"> 1528</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(gpointer user_data)</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;{</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> == NULL)</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae2cec8bc8216154388727b7e35200667">remmina_message_panel_setup_auth</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>);</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c">REMMINA_MESSAGE_PANEL_FLAG_DOMAIN</a>)</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>)</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a67a48217d44350e028ed95b1b55f0b0f">remmina_message_panel_field_set_switch</a>(mp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>, (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> == NULL || d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>[0] == 0) ? FALSE: TRUE);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>) {</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae5b1825b5d4e56ecc2f25c28bb042c32">remmina_message_panel_setup_question</a>(mp, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ac10f450f856ca7d9c0b6896261e9c407">remmina_message_panel_setup_auth_x509</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>)) != NULL)</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>, s);</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;cacrl&quot;</span>)) != NULL)</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>, s);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;clientcert&quot;</span>)) != NULL)</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>, s);</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;clientkey&quot;</span>)) != NULL)</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>, s);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; }</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a> = mp;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;}</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;</div><div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html"> 1569</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l01570"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5"> 1570</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>;</div><div class="line"><a name="l01571"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079"> 1571</a></span>&#160; GMainLoop * <a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>;</div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904"> 1572</a></span>&#160; gint <a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01573"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91"> 1573</a></span>&#160; gboolean <a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;} <a class="code" href="struct_mp_run_info.html">MpRunInfo</a>;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572"> 1576</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri)</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;{</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keywordflow">if</span> (g_main_loop_is_running(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>))</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; g_main_loop_quit(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;}</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;</div><div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf"> 1582</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>(RemminaMessagePanel *mp, gint response_id, gpointer data)</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;{</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = response_id;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;}</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;</div><div class="line"><a name="l01590"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d"> 1590</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;{</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;}</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;</div><div class="line"><a name="l01598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8"> 1598</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;{</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a> = TRUE;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;}</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54"> 1607</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> pflags,</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <span class="keyword">const</span> gchar *title, <span class="keyword">const</span> gchar *default_username, <span class="keyword">const</span> gchar *default_password, <span class="keyword">const</span> gchar *default_domain,</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keyword">const</span> gchar *strpasswordlabel)</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;{</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)g_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>));</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a>;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a> = g_strdup(title);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a> = g_strdup(strpasswordlabel);</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a> = g_strdup(default_username);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> = g_strdup(default_password);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a> = g_strdup(default_domain);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = FALSE;</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="comment">/* Run the MessagePanel in main thread, in a very similar way of gtk_dialog_run() */</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> mpri = { NULL, NULL, GTK_RESPONSE_CANCEL, FALSE };</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; gulong unmap_handler;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; gulong destroy_handler;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; gulong response_handler;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(d);</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a> = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <span class="keywordflow">if</span> (!gtk_widget_get_visible(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>)))</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; gtk_widget_show(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>));</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; response_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>), &amp;mpri);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; unmap_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;unmap&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>), &amp;mpri);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; destroy_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>), &amp;mpri);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; g_object_ref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a> = g_main_loop_new(NULL, FALSE);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; g_main_loop_run(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; g_main_loop_unref(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <span class="keywordflow">if</span> (!mpri.<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>) {</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, response_handler);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, destroy_handler);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, unmap_handler);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; g_object_unref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; rcbutton = mpri.<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = TRUE;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <span class="comment">// pthread_cleanup_push(ptcleanup, (void*)d);</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; pthread_cond_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, NULL);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; pthread_mutex_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>, NULL);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>, d);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; pthread_cond_wait(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, &amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="comment">// pthread_cleanup_pop(0);</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; pthread_mutex_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; pthread_cond_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; rcbutton = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; }</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; g_free(d);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;}</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;</div><div class="line"><a name="l01684"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b"> 1684</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg)</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;{</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, msg, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;}</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div><div class="line"><a name="l01689"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868"> 1689</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>,</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>, <span class="keyword">const</span> gchar *password_prompt)</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;{</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, title, default_username,</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; default_password, default_domain, password_prompt == NULL ? _(<span class="stringliteral">&quot;Password&quot;</span>) : password_prompt);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;}</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div><div class="line"><a name="l01697"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba"> 1697</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gboolean want_domain, gboolean allow_password_saving)</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;{</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>, *<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; pflags = <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a>;</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile) != NULL &amp;&amp;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; pflags |= <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span>);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; password = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, _(<span class="stringliteral">&quot;Type in SSH username and password.&quot;</span>), username,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; password, NULL, _(<span class="stringliteral">&quot;Password&quot;</span>));</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;}</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;<span class="comment"> * gint remmina_protocol_widget_panel_authpwd(RemminaProtocolWidget* gp, RemminaAuthpwdType authpwd_type, gboolean allow_password_saving)</span></div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="comment"> * {</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="comment"> * TRACE_CALL(__func__);</span></div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"> * unsigned pflags;</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="comment"> * RemminaFile* remminafile = gp-&gt;priv-&gt;remmina_file;</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="comment"> * char *password_prompt;</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;<span class="comment"> * int rc;</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;<span class="comment"> * pflags = 0;</span></div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment"> * if (remmina_file_get_filename(remminafile) != NULL &amp;&amp;</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="comment"> * !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="comment"> * pflags |= REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD;</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;<span class="comment"> * switch (authpwd_type) {</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_PROTOCOL:</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;<span class="comment"> * password_prompt = g_strdup_printf(_(&quot;%s password&quot;), remmina_file_get_string(remminafile, &quot;protocol&quot;));</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PWD:</span></div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH password&quot;));</span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PRIVKEY:</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH private key passphrase&quot;));</span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment"> * default:</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;Password&quot;));</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="comment"> * rc = remmina_protocol_widget_dialog(RPWDT_AUTH, gp, pflags, password_prompt);</span></div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="comment"> * g_free(password_prompt);</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="comment"> * return rc;</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01751"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31"> 1751</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;{</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>, gp, 0, NULL, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;}</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;</div><div class="line"><a name="l01759"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084"> 1759</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *fingerprint)</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;{</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; gchar *s;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;trust_all&quot;</span>)) {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), fingerprint);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; }</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; _(<span class="stringliteral">&quot;Certificate details:&quot;</span>),</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; _(<span class="stringliteral">&quot;Fingerprint:&quot;</span>), fingerprint,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; _(<span class="stringliteral">&quot;Accept certificate?&quot;</span>));</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; g_free(s);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="comment">/* For compatibility with plugin API: the plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;}</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;</div><div class="line"><a name="l01791"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1"> 1791</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *new_fingerprint, <span class="keyword">const</span> gchar *old_fingerprint)</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;{</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; gchar *s;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;trust_all&quot;</span>)) {</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), new_fingerprint);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; }</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; _(<span class="stringliteral">&quot;The certificate changed! Details:&quot;</span>),</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; _(<span class="stringliteral">&quot;Old fingerprint:&quot;</span>), old_fingerprint,</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; _(<span class="stringliteral">&quot;New fingerprint:&quot;</span>), new_fingerprint,</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; _(<span class="stringliteral">&quot;Accept changed certificate?&quot;</span>));</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; g_free(s);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;}</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;</div><div class="line"><a name="l01825"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0"> 1825</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;{</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;}</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;</div><div class="line"><a name="l01831"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923"> 1831</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;{</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;}</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;</div><div class="line"><a name="l01837"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac"> 1837</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;{</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;}</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div><div class="line"><a name="l01843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d"> 1843</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;{</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;}</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;</div><div class="line"><a name="l01849"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d"> 1849</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;{</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; gchar *s;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;}</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;</div><div class="line"><a name="l01858"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3"> 1858</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;{</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; gchar *s;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;}</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01867"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b"> 1867</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;{</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; gchar *s;</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;}</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div><div class="line"><a name="l01876"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1"> 1876</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;{</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; gchar *s;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;}</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504"> 1885</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;{</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; gchar *s;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; gboolean save = FALSE;</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_INIT_SAVE_CRED;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f">init_save_creds</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; g_free(d);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; }</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="comment">/* Save username and certificates if any; save the password if it’s requested to do so */</span></div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, s);</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; save = TRUE;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; }</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>, s);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; save = TRUE;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; }</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacrl&quot;</span>, s);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; save = TRUE;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; }</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientcert&quot;</span>, s);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; save = TRUE;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientkey&quot;</span>, s);</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; save = TRUE;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>) {</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; save = TRUE;</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; }</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="keywordflow">if</span> (save)</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;}</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;</div><div class="line"><a name="l01939"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d"> 1939</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gint port)</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;{</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; gchar *s;</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_PANELSHOWLISTEN;</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.port = port;</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; g_free(d);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; }</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a port number. “%s” is a placeholder for a protocol name (VNC).</span></div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; _(<span class="stringliteral">&quot;Listening on port %i for an incoming %s connection…&quot;</span>), port,</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, NULL, NULL);</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; g_free(s);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = mp;</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;}</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;</div><div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895"> 1968</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;{</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPSHOWRETRY;</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af">protocolwidget_mpshowretry</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; g_free(d);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Could not authenticate, attempting reconnection…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;}</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div><div class="line"><a name="l01989"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b"> 1989</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;{</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;}</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div><div class="line"><a name="l01995"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad"> 1995</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;{</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;}</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;</div><div class="line"><a name="l02001"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d"> 2001</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;{</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;}</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;</div><div class="line"><a name="l02007"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2"> 2007</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *name,</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordtype">void</span> (*on_send)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text), <span class="keywordtype">void</span> (*on_destroy)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp))</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;{</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = <a class="code" href="remmina__chat__window_8c.html#a5e4fa655fddf361fed13bbd759bea24f">remmina_chat_window_new</a>(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp))), name);</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;send&quot;</span>, G_CALLBACK(on_send), gp);</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>,</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>), gp);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(on_destroy), gp);</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; gtk_widget_show(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; }</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;}</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div><div class="line"><a name="l02023"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953"> 2023</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;{</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>)</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;}</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;</div><div class="line"><a name="l02030"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0"> 2030</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text)</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;{</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; <span class="comment">/* This function can be called from a non main thread */</span></div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_CHAT_RECEIVE;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.text = text;</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; g_free(d);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; }</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <a class="code" href="remmina__chat__window_8c.html#a45724aed5474dd741563ffbf89237022">remmina_chat_window_receive</a>(REMMINA_CHAT_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), _(<span class="stringliteral">&quot;Server&quot;</span>), text);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; }</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;}</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;</div><div class="line"><a name="l02052"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8"> 2052</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;{</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = remminafile;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> = cnnobj;</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <span class="comment">/* Locate the protocol plugin */</span></div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>,</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="keywordflow">if</span> (!plugin || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a> || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>) {</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a protocol name, like “RDP”.</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, _(<span class="stringliteral">&quot;Install the %s protocol plugin first.&quot;</span>),</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = NULL;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; }</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, FALSE);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scaler_expand&quot;</span>, FALSE);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;}</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;</div><div class="line"><a name="l02077"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb"> 2077</a></span>&#160;GtkWindow *<a class="code" href="remmina__protocol__widget_8c.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;{</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;}</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;</div><div class="line"><a name="l02082"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045"> 2082</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;{</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;}</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;</div><div class="line"><a name="l02087"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62"> 2087</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;{</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; <span class="keywordflow">return</span> GTK_WIDGET(g_object_new(REMMINA_TYPE_PROTOCOL_WIDGET, NULL));</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;}</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;<span class="comment">/* Send one or more keystrokes to a specific widget by firing key-press and</span></div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;<span class="comment"> * key-release events.</span></div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;<span class="comment"> * GdkEventType action can be GDK_KEY_PRESS or GDK_KEY_RELEASE or both to</span></div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;<span class="comment"> * press the keys and release them in reversed order. */</span></div><div class="line"><a name="l02096"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705"> 2096</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>(GtkWidget *widget, <span class="keyword">const</span> guint *keyvals, <span class="keywordtype">int</span> keyvals_length, GdkEventType action)</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;{</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; GdkEventKey event;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; gboolean result;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <span class="keyword">event</span>.window = gtk_widget_get_window(widget);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keyword">event</span>.send_event = TRUE;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; <span class="keyword">event</span>.time = GDK_CURRENT_TIME;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="keyword">event</span>.state = 0;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; <span class="keyword">event</span>.length = 0;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keyword">event</span>.string = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; <span class="keyword">event</span>.group = 0;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_PRESS) {</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="comment">/* Press the requested buttons */</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_PRESS;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; keyvals_length; i++) {</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Sending keyval: %u, hardware_keycode: %u&quot;</span>, event.keyval, event.hardware_keycode);</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; }</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; }</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_RELEASE) {</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; <span class="comment">/* Release the requested buttons in reverse order */</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_RELEASE;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">for</span> (i = (keyvals_length - 1); i &gt;= 0; i--) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; }</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; }</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;}</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;</div><div class="line"><a name="l02136"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767"> 2136</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;{</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; GdkRectangle rect;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; gint w, h;</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; gint wfile, hfile;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78a">RemminaProtocolWidgetResolutionMode</a> res_mode;</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, &amp;rect);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="comment">/* Integrity check: check that we have a cnnwin visible and get t */</span></div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; res_mode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_mode&quot;</span>, <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>);</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; scalemode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; wfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_width&quot;</span>, -1);</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; hfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_height&quot;</span>, -1);</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; <span class="comment">/* If resolution_mode is non-existent (-1), then we try to calculate it</span></div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;<span class="comment"> * as we did before having resolution_mode */</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>) {</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; <span class="keywordflow">if</span> (wfile &lt;= 0 || hfile &lt;= 0)</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a>;</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd">RES_USE_CUSTOM</a>;</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; }</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a> || scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>) {</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; <span class="comment">/* Use internal window size as remote desktop size */</span></div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; GtkAllocation al;</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; gtk_widget_get_allocation(GTK_WIDGET(gp), &amp;al);</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; <span class="comment">/* use a multiple of four to mitigate scaling when remote host rounds up */</span></div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; w = al.width - al.width % 4;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; h = al.height - al.height % 4;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">if</span> (w &lt; 10) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; printf(<span class="stringliteral">&quot;Remmina warning: %s RemminaProtocolWidget w=%d h=%d are too small, adjusting to 640x480\n&quot;</span>, __func__, w, h);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; w = 640;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; h = 480;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; <span class="comment">/* Due to approximations while GTK calculates scaling, (w x h) may exceed our monitor geometry</span></div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;<span class="comment"> * Adjust to fit. */</span></div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; <span class="keywordflow">if</span> (w &gt; rect.width)</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; w = rect.width;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; <span class="keywordflow">if</span> (h &gt; rect.height)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; h = rect.height;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d">RES_USE_CLIENT</a>) {</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; w = rect.width;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; h = rect.height;</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; w = wfile;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; h = hfile;</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; }</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a> = w;</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a> = h;</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;}</div><div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00110">remmina_ssh.h:110</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01420">remmina_protocol_widget.c:1420</a></div></div>
+<a href="remmina__protocol__widget_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtkx.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gmodule.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__chat__window_8h.html">remmina_chat_window.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a>&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__pref_8h.html">remmina_pref.h</a>&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a>&quot;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__public_8h.html">remmina_public.h</a>&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__log_8h.html">remmina_log.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html"> 60</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a> {</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec"> 61</a></span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0"> 62</a></span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d"> 63</a></span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93"> 65</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380"> 66</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533"> 67</a></span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c"> 68</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d"> 70</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4"> 71</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">/* ssh_tunnels is an array of RemminaSSHTunnel*</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * the 1st one is the &quot;main&quot; tunnel, other tunnels are used for example in sftp commands */</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116"> 74</a></span>&#160; GPtrArray * <a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211"> 75</a></span>&#160; <a class="code" href="types_8h.html#a1ace68e95e55a30fcf8b991f52332501">RemminaTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e"> 77</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6"> 79</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326"> 81</a></span>&#160; <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10"> 83</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca"> 84</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46"> 85</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483"> 87</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640"> 88</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b"> 89</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4"> 90</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">retry_message_panel</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">/* Data saved from the last message_panel when the user confirm */</span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885"> 93</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7"> 94</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f"> 95</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791"> 96</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e"> 98</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4"> 99</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05"> 100</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0"> 101</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;};</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373"> 104</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> {</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c"> 105</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>,</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65"> 106</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>,</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed"> 107</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;};</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32"> 110</a></span>&#160;<a class="code" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32">G_DEFINE_TYPE</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>, remmina_protocol_widget, GTK_TYPE_EVENT_BOX)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; CONNECT_SIGNAL,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; DISCONNECT_SIGNAL,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; DESKTOP_RESIZE_SIGNAL,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; UPDATE_ALIGN_SIGNAL,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; LOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; UNLOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;};</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html"> 122</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a> {</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a"> 123</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a">gp</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada"> 124</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada">signal_name</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;} <a class="code" href="remmina__protocol__widget_8c.html#a91d88c61dd84299369fe3c79e19821b1">RemminaProtocolWidgetSignalData</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130"> 127</a></span>&#160;<span class="keyword">static</span> guint <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[<a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a>] =</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;{ 0 };</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74"> 130</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74">remmina_protocol_widget_class_init</a>(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a> *klass)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[CONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;connect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, connect), NULL, NULL,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DISCONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;disconnect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, disconnect), NULL, NULL,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DESKTOP_RESIZE_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;desktop-resize&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>), NULL, NULL,</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UPDATE_ALIGN_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;update-align&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>), NULL, NULL,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[LOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;lock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UNLOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;unlock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1"> 154</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;{</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;LibSSH support turned off, no need to free SSH tunnel data&quot;</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; g_ptr_array_set_size(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, 0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f"> 172</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;{</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = NULL;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = NULL;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = NULL;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = NULL;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = NULL;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = NULL;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = NULL;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = NULL;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = NULL;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; g_ptr_array_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, TRUE);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = NULL;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1"> 217</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; GtkWidget *child;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; child = gtk_bin_get_child(GTK_BIN(gp));</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (child) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gtk_widget_set_can_focus(child, TRUE);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; gtk_widget_grab_focus(child);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df"> 230</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df">remmina_protocol_widget_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a> *priv;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; priv = g_new0(<a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a>, 1);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = priv;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = g_ptr_array_new();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; g_signal_connect(G_OBJECT(gp), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>), NULL);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd"> 243</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gpointer data)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Opening connection&quot;</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; gint num_plugin;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; gint num_ssh;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = FALSE;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; plugin = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a>(gp);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">for</span> (num_plugin = 0, feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; num_plugin++, feature++) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; num_ssh = 0;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; num_ssh += 2;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (num_plugin + num_ssh == 0) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = g_new0(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>, num_plugin + num_ssh + 1);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; memcpy(feature, plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>, <span class="keyword">sizeof</span>(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>) * num_plugin);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; feature += num_plugin;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Have SSH&quot;</span>);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (num_ssh) {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SSH;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Connect via SSH from a new terminal&quot;</span>);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;utilities-terminal&quot;</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; feature++;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SFTP;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Open SFTP transfer…&quot;</span>);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;folder-remote&quot;</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; feature++;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (!plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>(gp))</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5"> 309</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;{</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cbdata;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;}</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b"> 316</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; gchar *s;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">/* Exec precommand before everything else */</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Executing external commands…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;precommand&quot;</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; name = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for the connection profile name</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; s = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s”…&quot;</span>), (name ? name : <span class="stringliteral">&quot;*&quot;</span>));</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>, gp);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; g_free(s);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = mp;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gp);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;}</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016"> 344</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>(gpointer data)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">/* This will close all tunnels */</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="comment">/* Exec postcommand */</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;postcommand&quot;</span>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="comment">/* Notify listeners (usually rcw) that the connection is closed */</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;}</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261"> 360</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;{</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">/* Plugin told us that it closed the connection,</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>, (gpointer)gp);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;}</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48"> 369</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>(gpointer data)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">for</span> (guint i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = NULL;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = NULL;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">retry_message_panel</a>) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">retry_message_panel</a>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">retry_message_panel</a> = NULL;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;connect&quot;</span>);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;}</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c"> 396</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;{</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="comment">/* Plugin told us that it opened the connection,</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>, (gpointer)gp);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;}</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a"> 404</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>(gpointer data)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;update-align&quot;</span>);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e"> 413</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>, (gpointer)gp);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc"> 420</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>(gpointer data)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;lock-dynres&quot;</span>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;}</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e"> 429</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>(gpointer data)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;{</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;unlock-dynres&quot;</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457"> 438</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;{</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>, (gpointer)gp);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;}</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d"> 445</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;{</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>, (gpointer)gp);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;}</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565"> 452</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>(gpointer data)</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;desktop-resize&quot;</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;}</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee"> 461</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>, (gpointer)gp);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22"> 469</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;{</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">/* kindly ask the protocol plugin to close the connection.</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"> * Nothing else is done here. */</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (!GTK_IS_WIDGET(gp))</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>) {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="comment">/* Connection is already closed by the plugin, but</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment"> * rcw is asking to close again (usually after an error panel)</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">/* Clear the current error, or &quot;disconnect&quot; signal func will reshow a panel */</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, NULL);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">/* Ask the plugin to close, async.</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="comment"> * The plugin will emit a &quot;disconnect&quot; signal on gp to call our</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="comment"> * remmina_protocol_widget_on_disconnected() when done */</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4b21147a7592bf689c9f761d9e4fdc2">close_connection</a>(gp);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;}</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601"> 504</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;{</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a> ? TRUE : FALSE;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;}</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471"> 512</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;{</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; gchar *keystrokes = g_object_get_data(G_OBJECT(widget), <span class="stringliteral">&quot;keystrokes&quot;</span>);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; guint *keyvals;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; gint i;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; gunichar character;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; guint keyval;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; gint n_keys;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; gchar * search;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; gchar * replace;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; guint keyval;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; KeystrokeReplace keystrokes_replaces[] =</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; { NULL, NULL, 0 }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; };</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">/* Keystrokes can only be sent to plugins that accepts them */</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes before replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; keystrokes = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(keystrokes,</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; keystrokes_replaces[i].search,</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; keystrokes_replaces[i].replace));</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes after replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; gchar *iter = g_strdup(keystrokes);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; keyvals = (guint *)g_malloc(strlen(keystrokes));</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">if</span> (character == keystrokes_replaces[i].replace[0]) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; keyval = keystrokes_replaces[i].keyval;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; character = 0;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; g_warning(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; n_keys = 0;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; g_free(keys);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; g_free(keyvals);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; g_free(keystrokes);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;}</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06"> 603</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>(GtkClipboard *clipboard, <span class="keyword">const</span> gchar *clip_text, gpointer data)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;{</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; gchar *text = g_utf8_normalize(clip_text, -1, G_NORMALIZE_DEFAULT_COMPOSE);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; guint *keyvals;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gint i;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; gunichar character;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; guint keyval;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gint n_keys;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; gchar * search;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; gchar * replace;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; guint keyval;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; KeystrokeReplace text_replaces[] =</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; { NULL, NULL, 0 }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; };</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (text) {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard before replacement is \&#39;%s\&#39;&quot;</span>, text);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; text = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(text,</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; text_replaces[i].search,</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; text_replaces[i].replace));</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard after replacement is \&#39;%s\&#39;&quot;</span>, text);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; gchar *iter = g_strdup(text);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Iter: %s&quot;</span>, iter),</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; keyvals = (guint *)g_malloc(strlen(text));</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Char: U+%04&quot;</span> G_GINT32_FORMAT<span class="stringliteral">&quot;X&quot;</span>, character);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span> (character == text_replaces[i].replace[0]) {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; keyval = text_replaces[i].keyval;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Special Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; character = 0;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; n_keys = 0;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="comment"> * @fixme heap buffer overflow</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="comment"> * In some cases, for example sending \t as the only sequence</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment"> * may lead to a buffer overflow</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; g_free(keys);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; g_free(keyvals);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; g_free(text);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;}</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1"> 699</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;{</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; GtkClipboard *clipboard;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">/* Request the contents of the clipboard, contents_received will be</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="comment"> * called when we do get the contents.</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; gtk_clipboard_request_text(clipboard,</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>, gp);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;}</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca"> 713</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="struct___remmina_plugin_screenshot_data.html">RemminaPluginScreenshotData</a> *rpsd)</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;{</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;plugin screenshot function is not implemented, using core Remmina functionality&quot;</span>);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>(gp, rpsd);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;}</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00724"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435"> 724</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;{</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>) {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Map plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin mapping function&quot;</span>);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>(gp);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;}</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a"> 736</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;{</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unmap plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin unmapping function&quot;</span>);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#abfb8cc172b53c16c8099eba7ab3bbc57">unmap_event</a>(gp);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;}</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b"> 748</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *signal_name)</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;{</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Emitting signals should be used from the object itself, not from another object&quot;</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keyword">raise</span>(SIGINT);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_EMIT_SIGNAL;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.signal_name = signal_name;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.gp = gp;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; g_free(d);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; }</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), signal_name);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;}</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd"> 769</a></span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;{</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;}</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d"> 775</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type)</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;{</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">if</span> (type == <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a> &amp;&amp;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++)</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;}</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a"> 792</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;{</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aa49520ac95b505c111abfb7f3b7c55de">query_feature</a>(gp, feature);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;}</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9"> 798</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type, gint <span class="keywordtype">id</span>)</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;{</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++) {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type &amp;&amp; (<span class="keywordtype">id</span> == 0 || feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> == <span class="keywordtype">id</span>)) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(gp, feature);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; }</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;}</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;</div><div class="line"><a name="l00811"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692"> 811</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160;{</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">switch</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a>) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SSH:</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SSH&quot;</span>), NULL,</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SFTP&quot;</span>), NULL,</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; }</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a4908abc6c70c59c42e2757aecaa25cf1">call_feature</a>(gp, feature);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;}</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;</div><div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1"> 840</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;{</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, FALSE);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;}</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;</div><div class="line"><a name="l00848"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0"> 848</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;{</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, TRUE);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;}</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c"> 857</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkWidget *widget)</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;{</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>), gp);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>), gp);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;}</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div><div class="line"><a name="l00864"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8"> 864</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> func)</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;{</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a> = func;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;}</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;</div><div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1"> 870</a></span>&#160;RemminaMessagePanel *<a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, <span class="keyword">const</span> gchar *msg, <a class="code" href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a> response_callback, gpointer response_callback_data)</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;{</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPPROGRESS;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.cnnobj = cnnobj;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.message = msg;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback = response_callback;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.response_callback_data = response_callback_data;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; mp = d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">protocolwidget_mpprogress</a>.ret_mp;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; g_free(d);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, msg, response_callback, response_callback_data);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(cnnobj, mp);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;}</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;</div><div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5"> 895</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, RemminaMessagePanel *mp)</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;{</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPDESTROY;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.cnnobj = cnnobj;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.mp = mp;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; g_free(d);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; }</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(cnnobj, mp);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;}</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227"> 912</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;{</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling an opening tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;}</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;</div><div class="line"><a name="l00917"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3"> 917</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *<a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160;{</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; gint ret;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; gchar *msg;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; gboolean partial = FALSE;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; gboolean cont = FALSE;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; tunnel = <a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Creating SSH tunnel to “%s” via SSH…&quot;</span>, REMMINA_SSH(tunnel)-&gt;server);</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), REMMINA_SSH(tunnel)-&gt;server);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>, NULL);</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; g_free(msg);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">if</span> (!partial) {</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH Tunnel init session error: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; }</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>:</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication success&quot;</span>);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>:</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Continue with the next auth method&quot;</span>);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; partial = TRUE;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a>:</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Reconnecting…&quot;</span>);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;session) {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; ssh_disconnect(REMMINA_SSH(tunnel)-&gt;session);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; ssh_free(REMMINA_SSH(tunnel)-&gt;session);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; REMMINA_SSH(tunnel)-&gt;session = NULL;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; g_free(REMMINA_SSH(tunnel)-&gt;callback);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Interrupted by the user&quot;</span>);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Error during the authentication: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; }</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; cont = TRUE;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot init SSH session with tunnel struct&quot;</span>);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>) {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>)</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;BREAK:</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">if</span> (!cont) {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;}</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3"> 1021</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;{</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_direct_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;}</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;</div><div class="line"><a name="l01026"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb"> 1026</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;{</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; guint idx = 0;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;<span class="preprocessor">#if GLIB_CHECK_VERSION(2, 54, 0)</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; gboolean found = g_ptr_array_find(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel, &amp;idx);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; gboolean found = FALSE;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i] == tunnel) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; found = TRUE;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; idx = i;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; }</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; }</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; printf(<span class="stringliteral">&quot;Tunnel %s found at idx = %d\n&quot;</span>, found ? <span class="stringliteral">&quot;yes&quot;</span>: <span class="stringliteral">&quot;not&quot;</span>, idx);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (found) {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;[Tunnel with idx %u has been disconnected&quot;</span>, idx);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; g_ptr_array_remove(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;}</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;</div><div class="line"><a name="l01062"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7"> 1062</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint default_port, gboolean port_plus)</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;{</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; gchar *ssh_tunnel_host, *srv_host, *dest;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; gint srv_port, ssh_tunnel_port = 0;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH tunnel initialization…&quot;</span>);</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">if</span> (!server)</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">return</span> g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">if</span> (strstr(g_strdup(server), <span class="stringliteral">&quot;unix:///&quot;</span>) != NULL) {</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s is a UNIX socket&quot;</span>, server);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">return</span> g_strdup(server);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, default_port, &amp;srv_host, &amp;srv_port);</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port (tunnel)&quot;</span>);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(ssh_tunnel_server, 22, &amp;ssh_tunnel_host, &amp;ssh_tunnel_port);</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server: %s, port: %d&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keywordflow">if</span> (port_plus &amp;&amp; srv_port &lt; 100)</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="comment">/* Protocols like VNC supports using instance number :0, :1, etc. as port number. */</span></div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; srv_port += default_port;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; gchar *msg;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE)) {</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; }</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;remmina_protocol_widget_init_tunnel failed with error is %s&quot;</span>,</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(gp));</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; }</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), server);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; g_free(msg);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_loopback&quot;</span>, FALSE)) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; ssh_tunnel_host = NULL;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; srv_host = g_strdup(<span class="stringliteral">&quot;127.0.0.1&quot;</span>);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; }</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Starting tunnel to: %s, port: %d&quot;</span>, ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(tunnel, srv_host, srv_port, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>)) {</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a> = (gpointer)gp;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">&quot;127.0.0.1:%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">return</span> dest;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;}</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01157"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac"> 1157</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;{</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_reverse_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;}</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;</div><div class="line"><a name="l01164"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c"> 1164</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint local_port)</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;{</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; gchar *msg;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp)))</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a TCP port number.</span></div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Awaiting incoming SSH connection on port %i…&quot;</span>), <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0));</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; g_free(msg);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(tunnel, <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0), local_port)) {</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;}</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;</div><div class="line"><a name="l01195"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a"> 1195</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean wait, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;{</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; ssh_channel channel;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; gint status;</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; gboolean ret = FALSE;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; gchar *cmd, *ptr;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; va_list args;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; if ((channel = ssh_channel_new(REMMINA_SSH(tunnel)-&gt;session)) == NULL)</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; cmd = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; va_end(args);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">if</span> (ssh_channel_open_session(channel) == SSH_OK &amp;&amp;</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; ssh_channel_request_exec(channel, cmd) == SSH_OK) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">if</span> (wait) {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; status = ssh_channel_get_exit_status(channel);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; ptr = strchr(cmd, <span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">if</span> (ptr) *ptr = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">switch</span> (status) {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; ret = TRUE;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">case</span> 127:</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path.</span></div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; _(<span class="stringliteral">&quot;The “%s” command is not available on the SSH server.&quot;</span>), cmd);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path. “%i” is a placeholder for an error code number.</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; _(<span class="stringliteral">&quot;Could not run the “%s” command on the SSH server (status = %i).&quot;</span>), cmd, status);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; }</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; ret = TRUE;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="comment">// TRANSLATORS: %s is a placeholder for an error message</span></div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not run command. %s&quot;</span>));</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; }</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; g_free(cmd);</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keywordflow">if</span> (wait)</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;}</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01261"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736"> 1261</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;{</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; gchar *server;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; gint port;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; gboolean ret;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 177, &amp;server, &amp;port);</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; ret = ((<a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a>)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)(gp,</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : server), port);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; g_free(server);</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;}</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;</div><div class="line"><a name="l01278"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee"> 1278</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;{</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;}</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d"> 1284</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;{</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;error)</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;%s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; IDLE_ADD((GSourceFunc)<a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>, gp);</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;}</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01297"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9"> 1297</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;{</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling an XPort connection is not implemented\n&quot;</span>);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;}</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01302"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4"> 1302</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;{</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; gboolean bindlocalhost;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; gchar *server;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; gchar *msg;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a hostname or IP address.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to %s via SSH…&quot;</span>), <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>, NULL);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; g_free(msg);</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a> = gp;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 0, &amp;server, NULL);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; bindlocalhost = (g_strcmp0(REMMINA_SSH(tunnel)-&gt;server, server) == 0);</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; g_free(server);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(tunnel, bindlocalhost)) {</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;Could not open channel, %s&quot;</span>,</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; ssh_get_error(REMMINA_SSH(tunnel)-&gt;session));</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; }</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;}</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;</div><div class="line"><a name="l01347"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54"> 1347</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint display)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;{</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; if (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>) g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = g_strdup_printf(<span class="stringliteral">&quot;unix:%i&quot;</span>, display);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;}</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;</div><div class="line"><a name="l01360"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907"> 1360</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;{</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="comment">/* Returns the width of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;}</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;</div><div class="line"><a name="l01367"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb"> 1367</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;{</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="comment">/* Returns ehenever multi monitor is enabled (1) */</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, -1);</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Multi monitor is set to %d&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;}</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;</div><div class="line"><a name="l01376"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9"> 1376</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;{</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="comment">/* Returns the height of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;}</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;</div><div class="line"><a name="l01383"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f"> 1383</a></span>&#160;<span class="keyword">const</span> gchar* <a class="code" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;{</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="keywordflow">return</span> gp ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">name</a> : NULL : NULL;</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;}</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;</div><div class="line"><a name="l01389"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995"> 1389</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;{</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;}</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;</div><div class="line"><a name="l01395"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380"> 1395</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>)</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;{</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;}</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;</div><div class="line"><a name="l01401"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5"> 1401</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;{</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;}</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div><div class="line"><a name="l01407"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044"> 1407</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>)</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;{</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;}</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;</div><div class="line"><a name="l01413"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7"> 1413</a></span>&#160;<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;{</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;}</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div><div class="line"><a name="l01419"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48"> 1419</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>)</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;{</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;}</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;</div><div class="line"><a name="l01425"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25"> 1425</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;{</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;}</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;</div><div class="line"><a name="l01431"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa"> 1431</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean expand)</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;{</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = expand;</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;}</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;</div><div class="line"><a name="l01438"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771"> 1438</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;{</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;}</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;</div><div class="line"><a name="l01444"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29"> 1444</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;{</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;}</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af"> 1450</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;{</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; va_list args;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>) g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <span class="keywordflow">if</span> (fmt == NULL) {</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = FALSE;</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; }</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; va_end(args);</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = TRUE;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;}</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;</div><div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3"> 1470</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;{</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;}</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;</div><div class="line"><a name="l01476"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069"> 1476</a></span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *<a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;{</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;}</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;</div><div class="line"><a name="l01482"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html"> 1482</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> {</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="comment">/* Input data */</span></div><div class="line"><a name="l01484"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a"> 1484</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01485"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74"> 1485</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>;</div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28"> 1486</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>;</div><div class="line"><a name="l01487"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850"> 1487</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>;</div><div class="line"><a name="l01488"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361"> 1488</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>;</div><div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544"> 1489</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>;</div><div class="line"><a name="l01490"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7"> 1490</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype;</div><div class="line"><a name="l01491"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8"> 1491</a></span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01492"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f"> 1492</a></span>&#160; gboolean <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="comment">/* Running status */</span></div><div class="line"><a name="l01494"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf"> 1494</a></span>&#160; pthread_mutex_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>;</div><div class="line"><a name="l01495"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda"> 1495</a></span>&#160; pthread_cond_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="comment">/* Output/retval */</span></div><div class="line"><a name="l01497"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5"> 1497</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;};</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;</div><div class="line"><a name="l01500"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb"> 1500</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>(<span class="keywordtype">void</span> *user_data, <span class="keywordtype">int</span> button)</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;{</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a> = button;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <span class="keywordflow">if</span> (button == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>);</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a> = <a class="code" href="remmina__message__panel_8c.html#a80bc2fcb39c236da739593c2134c73fa">remmina_message_panel_field_get_switch_state</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>);</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>);</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>);</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>);</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; }</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; }</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>) {</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="comment">/* Hide and destroy message panel, we can do it now because we are on the main thread */</span></div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="comment">/* Awake the locked subthread, when called from subthread */</span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; pthread_cond_signal(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <span class="comment">/* Signal completion, when called from main thread. Message panel will be destroyed by the caller */</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <a class="code" href="remmina__message__panel_8c.html#af7db7b9f49fe6b83b17471116d363d40">remmina_message_panel_response</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, button);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; }</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;}</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113"> 1533</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(gpointer user_data)</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;{</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> == NULL)</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae2cec8bc8216154388727b7e35200667">remmina_message_panel_setup_auth</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c">REMMINA_MESSAGE_PANEL_FLAG_DOMAIN</a>)</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>)</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a67a48217d44350e028ed95b1b55f0b0f">remmina_message_panel_field_set_switch</a>(mp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>, (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> == NULL || d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>[0] == 0) ? FALSE: TRUE);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>) {</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae5b1825b5d4e56ecc2f25c28bb042c32">remmina_message_panel_setup_question</a>(mp, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ac10f450f856ca7d9c0b6896261e9c407">remmina_message_panel_setup_auth_x509</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>)) != NULL)</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>, s);</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;cacrl&quot;</span>)) != NULL)</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>, s);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;clientcert&quot;</span>)) != NULL)</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>, s);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">if</span> ((s = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;clientkey&quot;</span>)) != NULL)</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>, s);</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; }</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a> = mp;</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;}</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;</div><div class="line"><a name="l01574"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html"> 1574</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l01575"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5"> 1575</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>;</div><div class="line"><a name="l01576"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079"> 1576</a></span>&#160; GMainLoop * <a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>;</div><div class="line"><a name="l01577"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904"> 1577</a></span>&#160; gint <a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01578"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91"> 1578</a></span>&#160; gboolean <a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;} <a class="code" href="struct_mp_run_info.html">MpRunInfo</a>;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;</div><div class="line"><a name="l01581"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572"> 1581</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri)</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;{</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; <span class="keywordflow">if</span> (g_main_loop_is_running(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>))</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; g_main_loop_quit(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;}</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;</div><div class="line"><a name="l01587"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf"> 1587</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>(RemminaMessagePanel *mp, gint response_id, gpointer data)</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;{</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = response_id;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;}</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;</div><div class="line"><a name="l01595"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d"> 1595</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;{</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;}</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;</div><div class="line"><a name="l01603"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8"> 1603</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;{</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a> = TRUE;</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;}</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;</div><div class="line"><a name="l01612"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54"> 1612</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> pflags,</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keyword">const</span> gchar *title, <span class="keyword">const</span> gchar *default_username, <span class="keyword">const</span> gchar *default_password, <span class="keyword">const</span> gchar *default_domain,</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <span class="keyword">const</span> gchar *strpasswordlabel)</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;{</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)g_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>));</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a>;</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a> = g_strdup(title);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a> = g_strdup(strpasswordlabel);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a> = g_strdup(default_username);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> = g_strdup(default_password);</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a> = g_strdup(default_domain);</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = FALSE;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="comment">/* Run the MessagePanel in main thread, in a very similar way of gtk_dialog_run() */</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> mpri = { NULL, NULL, GTK_RESPONSE_CANCEL, FALSE };</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; gulong unmap_handler;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; gulong destroy_handler;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; gulong response_handler;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(d);</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a> = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <span class="keywordflow">if</span> (!gtk_widget_get_visible(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>)))</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; gtk_widget_show(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>));</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; response_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>), &amp;mpri);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; unmap_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;unmap&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>), &amp;mpri);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; destroy_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>), &amp;mpri);</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; g_object_ref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a> = g_main_loop_new(NULL, FALSE);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; g_main_loop_run(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; g_main_loop_unref(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <span class="keywordflow">if</span> (!mpri.<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>) {</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, response_handler);</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, destroy_handler);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, unmap_handler);</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; }</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; g_object_unref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; rcbutton = mpri.<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = TRUE;</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="comment">// pthread_cleanup_push(ptcleanup, (void*)d);</span></div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; pthread_cond_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, NULL);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; pthread_mutex_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>, NULL);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>, d);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; pthread_cond_wait(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, &amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="comment">// pthread_cleanup_pop(0);</span></div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; pthread_mutex_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; pthread_cond_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; rcbutton = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; }</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; g_free(d);</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;}</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div><div class="line"><a name="l01689"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b"> 1689</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg)</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;{</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, msg, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;}</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;</div><div class="line"><a name="l01694"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868"> 1694</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>,</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>, <span class="keyword">const</span> gchar *password_prompt)</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;{</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, title, default_username,</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; default_password, default_domain, password_prompt == NULL ? _(<span class="stringliteral">&quot;Password&quot;</span>) : password_prompt);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;}</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;</div><div class="line"><a name="l01702"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba"> 1702</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gboolean want_domain, gboolean allow_password_saving)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;{</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>, *<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; pflags = <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a>;</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile) != NULL &amp;&amp;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; pflags |= <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>;</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span>);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; password = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>);</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, _(<span class="stringliteral">&quot;Type in SSH username and password.&quot;</span>), username,</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; password, NULL, _(<span class="stringliteral">&quot;Password&quot;</span>));</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;}</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="comment"> * gint remmina_protocol_widget_panel_authpwd(RemminaProtocolWidget* gp, RemminaAuthpwdType authpwd_type, gboolean allow_password_saving)</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;<span class="comment"> * {</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;<span class="comment"> * TRACE_CALL(__func__);</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;<span class="comment"> * unsigned pflags;</span></div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment"> * RemminaFile* remminafile = gp-&gt;priv-&gt;remmina_file;</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="comment"> * char *password_prompt;</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="comment"> * int rc;</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;<span class="comment"> * pflags = 0;</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;<span class="comment"> * if (remmina_file_get_filename(remminafile) != NULL &amp;&amp;</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;<span class="comment"> * !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;<span class="comment"> * pflags |= REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD;</span></div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="comment"> * switch (authpwd_type) {</span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_PROTOCOL:</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="comment"> * password_prompt = g_strdup_printf(_(&quot;%s password&quot;), remmina_file_get_string(remminafile, &quot;protocol&quot;));</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PWD:</span></div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH password&quot;));</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PRIVKEY:</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH private key passphrase&quot;));</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="comment"> * default:</span></div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;Password&quot;));</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment"> * rc = remmina_protocol_widget_dialog(RPWDT_AUTH, gp, pflags, password_prompt);</span></div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;<span class="comment"> * g_free(password_prompt);</span></div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;<span class="comment"> * return rc;</span></div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01756"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31"> 1756</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;{</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>, gp, 0, NULL, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;}</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;</div><div class="line"><a name="l01764"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084"> 1764</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *fingerprint)</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;{</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; gchar *s;</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;trust_all&quot;</span>)) {</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), fingerprint);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; }</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; _(<span class="stringliteral">&quot;Certificate details:&quot;</span>),</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; _(<span class="stringliteral">&quot;Fingerprint:&quot;</span>), fingerprint,</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; _(<span class="stringliteral">&quot;Accept certificate?&quot;</span>));</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; g_free(s);</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; <span class="comment">/* For compatibility with plugin API: the plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;}</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;</div><div class="line"><a name="l01796"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1"> 1796</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *new_fingerprint, <span class="keyword">const</span> gchar *old_fingerprint)</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;{</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; gchar *s;</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="stringliteral">&quot;trust_all&quot;</span>)) {</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), new_fingerprint);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; }</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; _(<span class="stringliteral">&quot;The certificate changed! Details:&quot;</span>),</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; _(<span class="stringliteral">&quot;Old fingerprint:&quot;</span>), old_fingerprint,</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; _(<span class="stringliteral">&quot;New fingerprint:&quot;</span>), new_fingerprint,</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; _(<span class="stringliteral">&quot;Accept changed certificate?&quot;</span>));</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; g_free(s);</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;}</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;</div><div class="line"><a name="l01830"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0"> 1830</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;{</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;}</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;</div><div class="line"><a name="l01836"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923"> 1836</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;{</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;}</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;</div><div class="line"><a name="l01842"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac"> 1842</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;{</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;}</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;</div><div class="line"><a name="l01848"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d"> 1848</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;{</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;}</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;</div><div class="line"><a name="l01854"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d"> 1854</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;{</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; gchar *s;</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;}</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div><div class="line"><a name="l01863"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3"> 1863</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;{</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; gchar *s;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;}</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;</div><div class="line"><a name="l01872"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b"> 1872</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;{</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; gchar *s;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;}</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div><div class="line"><a name="l01881"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1"> 1881</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;{</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; gchar *s;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;}</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;</div><div class="line"><a name="l01890"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504"> 1890</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;{</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; gchar *s;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; gboolean save = FALSE;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_INIT_SAVE_CRED;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f">init_save_creds</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; g_free(d);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; }</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <span class="comment">/* Save username and certificates if any; save the password if it’s requested to do so */</span></div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, s);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; save = TRUE;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; }</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>, s);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; save = TRUE;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; }</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacrl&quot;</span>, s);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; save = TRUE;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientcert&quot;</span>, s);</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; save = TRUE;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientkey&quot;</span>, s);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; save = TRUE;</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; }</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>) {</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; save = TRUE;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; }</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keywordflow">if</span> (save)</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;}</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;</div><div class="line"><a name="l01944"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d"> 1944</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gint port)</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;{</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; gchar *s;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_PANELSHOWLISTEN;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.port = port;</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; g_free(d);</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; }</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a port number. “%s” is a placeholder for a protocol name (VNC).</span></div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; _(<span class="stringliteral">&quot;Listening on port %i for an incoming %s connection…&quot;</span>), port,</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, NULL, NULL);</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; g_free(s);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = mp;</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160;}</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div><div class="line"><a name="l01973"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895"> 1973</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;{</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPSHOWRETRY;</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af">protocolwidget_mpshowretry</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; g_free(d);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; }</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Could not authenticate, attempting reconnection…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">retry_message_panel</a> = mp;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;}</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div><div class="line"><a name="l01995"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b"> 1995</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;{</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;}</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;</div><div class="line"><a name="l02001"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad"> 2001</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;{</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;}</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;</div><div class="line"><a name="l02007"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d"> 2007</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160;{</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;}</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;</div><div class="line"><a name="l02013"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2"> 2013</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *name,</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; <span class="keywordtype">void</span> (*on_send)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text), <span class="keywordtype">void</span> (*on_destroy)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp))</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;{</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = <a class="code" href="remmina__chat__window_8c.html#a5e4fa655fddf361fed13bbd759bea24f">remmina_chat_window_new</a>(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp))), name);</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;send&quot;</span>, G_CALLBACK(on_send), gp);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>,</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>), gp);</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(on_destroy), gp);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; gtk_widget_show(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; }</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;}</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;</div><div class="line"><a name="l02029"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953"> 2029</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;{</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>)</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;}</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;</div><div class="line"><a name="l02036"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0"> 2036</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text)</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;{</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="comment">/* This function can be called from a non main thread */</span></div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a>()) {</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; d = (<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *)g_malloc(<span class="keyword">sizeof</span>(<a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a>));</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_CHAT_RECEIVE;</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">p</a>.<a class="code" href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.text = text;</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a>(d);</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; g_free(d);</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; }</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; <a class="code" href="remmina__chat__window_8c.html#a45724aed5474dd741563ffbf89237022">remmina_chat_window_receive</a>(REMMINA_CHAT_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), _(<span class="stringliteral">&quot;Server&quot;</span>), text);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; }</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;}</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;</div><div class="line"><a name="l02058"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8"> 2058</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;{</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = remminafile;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> = cnnobj;</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="comment">/* Locate the protocol plugin */</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; plugin = (<a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>,</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <span class="keywordflow">if</span> (!plugin || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a> || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>) {</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a protocol name, like “RDP”.</span></div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, _(<span class="stringliteral">&quot;Install the %s protocol plugin first.&quot;</span>),</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = NULL;</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; }</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, FALSE);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scaler_expand&quot;</span>, FALSE);</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;}</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;</div><div class="line"><a name="l02083"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb"> 2083</a></span>&#160;GtkWindow *<a class="code" href="remmina__protocol__widget_8c.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;{</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;}</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;</div><div class="line"><a name="l02088"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045"> 2088</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;{</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;}</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;</div><div class="line"><a name="l02093"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62"> 2093</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;{</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; <span class="keywordflow">return</span> GTK_WIDGET(g_object_new(REMMINA_TYPE_PROTOCOL_WIDGET, NULL));</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;}</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;<span class="comment">/* Send one or more keystrokes to a specific widget by firing key-press and</span></div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;<span class="comment"> * key-release events.</span></div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;<span class="comment"> * GdkEventType action can be GDK_KEY_PRESS or GDK_KEY_RELEASE or both to</span></div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;<span class="comment"> * press the keys and release them in reversed order. */</span></div><div class="line"><a name="l02102"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705"> 2102</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>(GtkWidget *widget, <span class="keyword">const</span> guint *keyvals, <span class="keywordtype">int</span> keyvals_length, GdkEventType action)</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;{</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; GdkEventKey event;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; gboolean result;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; <span class="keyword">event</span>.window = gtk_widget_get_window(widget);</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <span class="keyword">event</span>.send_event = TRUE;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; <span class="keyword">event</span>.time = GDK_CURRENT_TIME;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="keyword">event</span>.state = 0;</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; <span class="keyword">event</span>.length = 0;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; <span class="keyword">event</span>.string = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="keyword">event</span>.group = 0;</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160;</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_PRESS) {</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; <span class="comment">/* Press the requested buttons */</span></div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_PRESS;</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; keyvals_length; i++) {</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Sending keyval: %u, hardware_keycode: %u&quot;</span>, event.keyval, event.hardware_keycode);</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; }</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; }</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_RELEASE) {</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; <span class="comment">/* Release the requested buttons in reverse order */</span></div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_RELEASE;</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; <span class="keywordflow">for</span> (i = (keyvals_length - 1); i &gt;= 0; i--) {</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; }</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; }</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;}</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;</div><div class="line"><a name="l02142"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767"> 2142</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;{</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; GdkRectangle rect;</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; gint w, h;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; gint wfile, hfile;</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78a">RemminaProtocolWidgetResolutionMode</a> res_mode;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, &amp;rect);</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; <span class="comment">/* Integrity check: check that we have a cnnwin visible and get t */</span></div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; res_mode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_mode&quot;</span>, <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>);</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; scalemode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>);</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; wfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_width&quot;</span>, -1);</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; hfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_height&quot;</span>, -1);</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160;</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; <span class="comment">/* If resolution_mode is non-existent (-1), then we try to calculate it</span></div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;<span class="comment"> * as we did before having resolution_mode */</span></div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>) {</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; <span class="keywordflow">if</span> (wfile &lt;= 0 || hfile &lt;= 0)</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a>;</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd">RES_USE_CUSTOM</a>;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; }</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a> || scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>) {</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="comment">/* Use internal window size as remote desktop size */</span></div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; GtkAllocation al;</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; gtk_widget_get_allocation(GTK_WIDGET(gp), &amp;al);</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; <span class="comment">/* use a multiple of four to mitigate scaling when remote host rounds up */</span></div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; w = al.width - al.width % 4;</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; h = al.height - al.height % 4;</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; <span class="keywordflow">if</span> (w &lt; 10) {</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; printf(<span class="stringliteral">&quot;Remmina warning: %s RemminaProtocolWidget w=%d h=%d are too small, adjusting to 640x480\n&quot;</span>, __func__, w, h);</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; w = 640;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; h = 480;</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; }</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; <span class="comment">/* Due to approximations while GTK calculates scaling, (w x h) may exceed our monitor geometry</span></div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;<span class="comment"> * Adjust to fit. */</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <span class="keywordflow">if</span> (w &gt; rect.width)</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; w = rect.width;</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <span class="keywordflow">if</span> (h &gt; rect.height)</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; h = rect.height;</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d">RES_USE_CLIENT</a>) {</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; w = rect.width;</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; h = rect.height;</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; w = wfile;</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; h = hfile;</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; }</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a> = w;</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a> = h;</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;}</div><div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00110">remmina_ssh.h:110</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01425">remmina_protocol_widget.c:1425</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00148">remmina_ssh.h:148</a></div></div>
-<div class="ttc" id="struct_mp_run_info_html_a5c8cb7c26289f2afa4fcd87fced6bb91"><div class="ttname"><a href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">MpRunInfo::destroyed</a></div><div class="ttdeci">gboolean destroyed</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01573">remmina_protocol_widget.c:1573</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aeaf728bb767c1bbdda6a0d8dc3553565"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a></div><div class="ttdeci">static gboolean desktop_resize(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00447">remmina_protocol_widget.c:447</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a843c2455a10c9382aee454515f9e7f8b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01989">remmina_protocol_widget.c:1989</a></div></div>
+<div class="ttc" id="struct_mp_run_info_html_a5c8cb7c26289f2afa4fcd87fced6bb91"><div class="ttname"><a href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">MpRunInfo::destroyed</a></div><div class="ttdeci">gboolean destroyed</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01578">remmina_protocol_widget.c:1578</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aeaf728bb767c1bbdda6a0d8dc3553565"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a></div><div class="ttdeci">static gboolean desktop_resize(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00452">remmina_protocol_widget.c:452</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a843c2455a10c9382aee454515f9e7f8b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_aac57e5a1ac6fc21f95e0fb3e70745cf4"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">_RemminaProtocolWidgetPriv::error_message</a></div><div class="ttdeci">gchar * error_message</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00071">remmina_protocol_widget.c:71</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a508044024b303c286a0e643e44d85a29"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_error_message(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01439">remmina_protocol_widget.c:1439</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a508044024b303c286a0e643e44d85a29"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_error_message(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01444">remmina_protocol_widget.c:1444</a></div></div>
<div class="ttc" id="remmina__chat__window_8h_html"><div class="ttname"><a href="remmina__chat__window_8h.html">remmina_chat_window.h</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a00585ef650a083f1e8270cbdf05d437f"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f">remmina_masterthread_exec_data::init_save_creds</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@14 init_save_creds</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a95088334da86faf9520383629fff48af"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a></div><div class="ttdeci">void remmina_protocol_widget_set_error(RemminaProtocolWidget *gp, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01445">remmina_protocol_widget.c:1445</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a95088334da86faf9520383629fff48af"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a></div><div class="ttdeci">void remmina_protocol_widget_set_error(RemminaProtocolWidget *gp, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01450">remmina_protocol_widget.c:1450</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a006867628dec1d7b23404a690c967f4e"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">_RemminaProtocolWidgetPriv::chat_window</a></div><div class="ttdeci">GtkWidget * chat_window</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00077">remmina_protocol_widget.c:77</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_acf69725720378340e1a51c87e7638a7f"><div class="ttname"><a href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a></div><div class="ttdeci">enum remmina_ssh_auth_result remmina_ssh_auth_gui(RemminaSSH *ssh, RemminaProtocolWidget *gp, RemminaFile *remminafile)</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_adbe15328275677cb38bd8c8a2d5e039d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00770">remmina_protocol_widget.c:770</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_af9b6a2c2665010ab09a6d9943f9850bd"><div class="ttname"><a href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a></div><div class="ttdeci">const RemminaProtocolFeature * remmina_protocol_widget_get_features(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00764">remmina_protocol_widget.c:764</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_adbe15328275677cb38bd8c8a2d5e039d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00775">remmina_protocol_widget.c:775</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_af9b6a2c2665010ab09a6d9943f9850bd"><div class="ttname"><a href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a></div><div class="ttdeci">const RemminaProtocolFeature * remmina_protocol_widget_get_features(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00769">remmina_protocol_widget.c:769</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a91d88c61dd84299369fe3c79e19821b1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a91d88c61dd84299369fe3c79e19821b1">RemminaProtocolWidgetSignalData</a></div><div class="ttdeci">struct _RemminaProtocolWidgetSignalData RemminaProtocolWidgetSignalData</div></div>
<div class="ttc" id="remmina__plugin__manager_8h_html"><div class="ttname"><a href="remmina__plugin__manager_8h.html">remmina_plugin_manager.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab2b4a7c615a472ad391d1c06ea1f00cc"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a></div><div class="ttdeci">static gboolean lock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00415">remmina_protocol_widget.c:415</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab2b4a7c615a472ad391d1c06ea1f00cc"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a></div><div class="ttdeci">static gboolean lock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00420">remmina_protocol_widget.c:420</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a8eb1b213d9d08c6ad13683ce05f4355e"><div class="ttname"><a href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a></div><div class="ttdeci">const gchar * remmina_file_get_string(RemminaFile *remminafile, const gchar *setting)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00516">remmina_file.c:516</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02001">remmina_protocol_widget.c:2001</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00059">remmina_message_panel.h:59</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_add3775989fb5ed7a7f1f7c9b5980a94e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a></div><div class="ttdeci">static gboolean unlock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00424">remmina_protocol_widget.c:424</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a1caaa7bea6ef53e5c7e8109f3d0814e1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_on_key_press(GtkWidget *widget, GdkEventKey *event, RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00835">remmina_protocol_widget.c:835</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_add3775989fb5ed7a7f1f7c9b5980a94e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a></div><div class="ttdeci">static gboolean unlock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00429">remmina_protocol_widget.c:429</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a1caaa7bea6ef53e5c7e8109f3d0814e1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_on_key_press(GtkWidget *widget, GdkEventKey *event, RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00840">remmina_protocol_widget.c:840</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_af670e0b0960c3e71e9f0b8b797ef9c28"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">_RemminaSSHTunnel::remotedisplay</a></div><div class="ttdeci">gint remotedisplay</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00171">remmina_ssh.h:171</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9d55210413d6a313478f81cf76ecf1b7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a></div><div class="ttdeci">gchar * remmina_protocol_widget_start_direct_tunnel(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)</div><div class="ttdoc">Start an SSH tunnel if possible and return the host:port string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01057">remmina_protocol_widget.c:1057</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9d55210413d6a313478f81cf76ecf1b7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a></div><div class="ttdeci">gchar * remmina_protocol_widget_start_direct_tunnel(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)</div><div class="ttdoc">Start an SSH tunnel if possible and return the host:port string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01062">remmina_protocol_widget.c:1062</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a1e1f1bfaec497b1365ea70ebe795d778"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">_RemminaSSHTunnel::destroy_func</a></div><div class="ttdeci">RemminaSSHTunnelCallback destroy_func</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00180">remmina_ssh.h:180</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html"><div class="ttname"><a href="remmina__ssh_8h.html">remmina_ssh.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a4017a800d7803a40d606ffce2578509a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00787">remmina_protocol_widget.c:787</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a4017a800d7803a40d606ffce2578509a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00792">remmina_protocol_widget.c:792</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_ae47c8270267b02b9c0ff5b36074101c2"><div class="ttname"><a href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a></div><div class="ttdeci">gboolean remmina_ssh_tunnel_reverse(RemminaSSHTunnel *tunnel, gint port, gint local_port)</div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_ae3feb5e5dad00109813fac890d913885"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">_RemminaProtocolWidgetPriv::username</a></div><div class="ttdeci">gchar * username</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00092">remmina_protocol_widget.c:92</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_ae3feb5e5dad00109813fac890d913885"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">_RemminaProtocolWidgetPriv::username</a></div><div class="ttdeci">gchar * username</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00093">remmina_protocol_widget.c:93</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_ae2cec8bc8216154388727b7e35200667"><div class="ttname"><a href="remmina__message__panel_8c.html#ae2cec8bc8216154388727b7e35200667">remmina_message_panel_setup_auth</a></div><div class="ttdeci">void remmina_message_panel_setup_auth(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data, const gchar *title, const gchar *password_prompt, unsigned flags)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00282">remmina_message_panel.c:282</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_a4908abc6c70c59c42e2757aecaa25cf1"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#a4908abc6c70c59c42e2757aecaa25cf1">_RemminaProtocolPlugin::call_feature</a></div><div class="ttdeci">void(* call_feature)(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00083">plugin.h:83</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7e54d9bb42d2d337527d3af657ef1e1f"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a></div><div class="ttdeci">static void remmina_protocol_widget_destroy(RemminaProtocolWidget *gp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00171">remmina_protocol_widget.c:171</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa9639b76ac0a92647ce08bdfe943d113"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_dialog_mt_setup(gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01528">remmina_protocol_widget.c:1528</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_signal_data_html_a7a8b9ad6fdff86250a5eef649693d64a"><div class="ttname"><a href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a">_RemminaProtocolWidgetSignalData::gp</a></div><div class="ttdeci">RemminaProtocolWidget * gp</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00122">remmina_protocol_widget.c:122</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7e54d9bb42d2d337527d3af657ef1e1f"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a></div><div class="ttdeci">static void remmina_protocol_widget_destroy(RemminaProtocolWidget *gp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00172">remmina_protocol_widget.c:172</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa9639b76ac0a92647ce08bdfe943d113"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_dialog_mt_setup(gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01533">remmina_protocol_widget.c:1533</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_signal_data_html_a7a8b9ad6fdff86250a5eef649693d64a"><div class="ttname"><a href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a">_RemminaProtocolWidgetSignalData::gp</a></div><div class="ttdeci">RemminaProtocolWidget * gp</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00123">remmina_protocol_widget.c:123</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_ae5b1825b5d4e56ecc2f25c28bb042c32"><div class="ttname"><a href="remmina__message__panel_8c.html#ae5b1825b5d4e56ecc2f25c28bb042c32">remmina_message_panel_setup_question</a></div><div class="ttdeci">void remmina_message_panel_setup_question(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00213">remmina_message_panel.c:213</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02030">remmina_protocol_widget.c:2030</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02036">remmina_protocol_widget.c:2036</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_ab89dba73bc6832c6c5061a0d8bd0fbb4"><div class="ttname"><a href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a></div><div class="ttdeci">gchar * remmina_message_panel_field_get_filename(RemminaMessagePanel *mp, int entryid)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00775">remmina_message_panel.c:775</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01384">remmina_protocol_widget.c:1384</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01389">remmina_protocol_widget.c:1389</a></div></div>
<div class="ttc" id="types_8h_html_aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946"><div class="ttname"><a href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00144">types.h:144</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01355">remmina_protocol_widget.c:1355</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_signal_data_html_a2dfdc85f32d5eeed1d183088ac2a4ada"><div class="ttname"><a href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada">_RemminaProtocolWidgetSignalData::signal_name</a></div><div class="ttdeci">const gchar * signal_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00123">remmina_protocol_widget.c:123</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01885">remmina_protocol_widget.c:1885</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01360">remmina_protocol_widget.c:1360</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01694">remmina_protocol_widget.c:1694</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_signal_data_html_a2dfdc85f32d5eeed1d183088ac2a4ada"><div class="ttname"><a href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada">_RemminaProtocolWidgetSignalData::signal_name</a></div><div class="ttdeci">const gchar * signal_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00124">remmina_protocol_widget.c:124</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01890">remmina_protocol_widget.c:1890</a></div></div>
<div class="ttc" id="remmina__file_8c_html_ad1e4f3a0f64cd98e301044b6c38a1f1d"><div class="ttname"><a href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a></div><div class="ttdeci">const gchar * remmina_file_get_filename(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00210">remmina_file.c:210</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_adfac12e7a563dc06fb2f0c8307f40fee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_xport_tunnel_connect_callback(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01273">remmina_protocol_widget.c:1273</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_adfac12e7a563dc06fb2f0c8307f40fee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_xport_tunnel_connect_callback(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01278">remmina_protocol_widget.c:1278</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a893f0cfe2d694ab700975f4f427ee2f6"><div class="ttname"><a href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a></div><div class="ttdeci">void remmina_public_send_notification(const gchar *notification_id, const gchar *notification_title, const gchar *notification_message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00639">remmina_public.c:639</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01843">remmina_protocol_widget.c:1843</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a92d8a08aba2743f081e22f39fcaf0df8"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">remmina_protocol_widget_dialog_mt_data_t::pflags</a></div><div class="ttdeci">RemminaMessagePanelFlags pflags</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01486">remmina_protocol_widget.c:1486</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2067c19b160eb43bddda6c6c6e8d6045"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_gtkviewport(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02082">remmina_protocol_widget.c:2082</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01848">remmina_protocol_widget.c:1848</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a92d8a08aba2743f081e22f39fcaf0df8"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">remmina_protocol_widget_dialog_mt_data_t::pflags</a></div><div class="ttdeci">RemminaMessagePanelFlags pflags</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01491">remmina_protocol_widget.c:1491</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2067c19b160eb43bddda6c6c6e8d6045"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_gtkviewport(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02088">remmina_protocol_widget.c:2088</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01433">remmina_protocol_widget.c:1433</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a81eb96409c1543bcf2d9474d4d89907f"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">remmina_protocol_widget_dialog_mt_data_t::called_from_subthread</a></div><div class="ttdeci">gboolean called_from_subthread</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01487">remmina_protocol_widget.c:1487</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a3f67e6ca406ec87db6ae6a3582770c74"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">remmina_protocol_widget_dialog_mt_data_t::title</a></div><div class="ttdeci">gchar * title</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01480">remmina_protocol_widget.c:1480</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01438">remmina_protocol_widget.c:1438</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a81eb96409c1543bcf2d9474d4d89907f"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">remmina_protocol_widget_dialog_mt_data_t::called_from_subthread</a></div><div class="ttdeci">gboolean called_from_subthread</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01492">remmina_protocol_widget.c:1492</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a3f67e6ca406ec87db6ae6a3582770c74"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">remmina_protocol_widget_dialog_mt_data_t::title</a></div><div class="ttdeci">gchar * title</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01485">remmina_protocol_widget.c:1485</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_ac45744265fe3f8aa36b650faa9991b46"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">_RemminaProtocolWidgetPriv::multimon</a></div><div class="ttdeci">gint multimon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00085">remmina_protocol_widget.c:85</a></div></div>
-<div class="ttc" id="struct_mp_run_info_html"><div class="ttname"><a href="struct_mp_run_info.html">MpRunInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01569">remmina_protocol_widget.c:1569</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a13e14fa81f7ca52942415a7caf5b932c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a></div><div class="ttdeci">void remmina_protocol_widget_register_hostkey(RemminaProtocolWidget *gp, GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00852">remmina_protocol_widget.c:852</a></div></div>
+<div class="ttc" id="struct_mp_run_info_html"><div class="ttname"><a href="struct_mp_run_info.html">MpRunInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01574">remmina_protocol_widget.c:1574</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a13e14fa81f7ca52942415a7caf5b932c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a></div><div class="ttdeci">void remmina_protocol_widget_register_hostkey(RemminaProtocolWidget *gp, GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00857">remmina_protocol_widget.c:857</a></div></div>
<div class="ttc" id="rcw_8c_html_ac5eda3a29c88ac88d80b5775e39ffcb4"><div class="ttname"><a href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a></div><div class="ttdeci">void rco_show_message_panel(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdoc">Each cnnobj-&gt;page can have more than one RemminaMessagePanel, but 0 or 1 are visible. </div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04762">rcw.c:4762</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa6d9f2f558fcd9e7fe58eefcde1c3c5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_reverse_tunnel(RemminaProtocolWidget *gp, gint local_port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01159">remmina_protocol_widget.c:1159</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a37bd29fa334e378eff4367d61ee59e05"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">_RemminaProtocolWidgetPriv::clientcert</a></div><div class="ttdeci">gchar * clientcert</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00099">remmina_protocol_widget.c:99</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01837">remmina_protocol_widget.c:1837</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac1f95eb1e31c05ae0bc4027496ceafb0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_on_key_release(GtkWidget *widget, GdkEventKey *event, RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00843">remmina_protocol_widget.c:843</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a25797eafabe9d6f5729b56145abe1572"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a></div><div class="ttdeci">static void shutdown_loop(MpRunInfo *mpri)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01576">remmina_protocol_widget.c:1576</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa6d9f2f558fcd9e7fe58eefcde1c3c5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_reverse_tunnel(RemminaProtocolWidget *gp, gint local_port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01164">remmina_protocol_widget.c:1164</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a37bd29fa334e378eff4367d61ee59e05"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">_RemminaProtocolWidgetPriv::clientcert</a></div><div class="ttdeci">gchar * clientcert</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00100">remmina_protocol_widget.c:100</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01842">remmina_protocol_widget.c:1842</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac1f95eb1e31c05ae0bc4027496ceafb0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_on_key_release(GtkWidget *widget, GdkEventKey *event, RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00848">remmina_protocol_widget.c:848</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a25797eafabe9d6f5729b56145abe1572"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a></div><div class="ttdeci">static void shutdown_loop(MpRunInfo *mpri)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01581">remmina_protocol_widget.c:1581</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a33ae9b7cd8cb3dcd85223017dfd13795"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">_RemminaSSHTunnel::destroy_func_callback_data</a></div><div class="ttdeci">gpointer destroy_func_callback_data</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00181">remmina_ssh.h:181</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a52a0986eaf54c9e606ce9cdf8bb57e60"><div class="ttname"><a href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a></div><div class="ttdeci">RemminaFile * remmina_file_dup_temp_protocol(RemminaFile *remminafile, const gchar *new_protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00897">remmina_file.c:897</a></div></div>
<div class="ttc" id="rcw_8c_html_ad3c2fe67b137c757bd21b79ad5dcc5ff"><div class="ttname"><a href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a></div><div class="ttdeci">GtkWidget * rcw_open_from_file_full(RemminaFile *remminafile, GCallback disconnect_cb, gpointer data, guint *handler)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04499">rcw.c:4499</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_ac10f450f856ca7d9c0b6896261e9c407"><div class="ttname"><a href="remmina__message__panel_8c.html#ac10f450f856ca7d9c0b6896261e9c407">remmina_message_panel_setup_auth_x509</a></div><div class="ttdeci">void remmina_message_panel_setup_auth_x509(RemminaMessagePanel *mp, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00480">remmina_message_panel.c:480</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a36b55faeba78528ac9708dfa66667e20"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">_RemminaProtocolFeature::id</a></div><div class="ttdeci">gint id</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00074">types.h:74</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a858e4756aa97ce424ccf12475c225c54"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a></div><div class="ttdeci">static int remmina_protocol_widget_dialog(enum panel_type dtype, RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *strpasswordlabel)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01607">remmina_protocol_widget.c:1607</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a122e28e59acb89200937ff823b82ddaf"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a></div><div class="ttdeci">static void run_response_handler(RemminaMessagePanel *mp, gint response_id, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01582">remmina_protocol_widget.c:1582</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aeaa588b63800d3762b738fbbfd4a1736"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_xport_tunnel_init_callback(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01256">remmina_protocol_widget.c:1256</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a858e4756aa97ce424ccf12475c225c54"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a></div><div class="ttdeci">static int remmina_protocol_widget_dialog(enum panel_type dtype, RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *strpasswordlabel)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01612">remmina_protocol_widget.c:1612</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a122e28e59acb89200937ff823b82ddaf"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a></div><div class="ttdeci">static void run_response_handler(RemminaMessagePanel *mp, gint response_id, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01587">remmina_protocol_widget.c:1587</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aeaa588b63800d3762b738fbbfd4a1736"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_xport_tunnel_init_callback(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01261">remmina_protocol_widget.c:1261</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_a3d9e2f2eb2594411e6fe63cde443dfb2"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">_RemminaProtocolPlugin::init</a></div><div class="ttdeci">void(* init)(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00079">plugin.h:79</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a99ba55ddcb17c9e87ca233fa83787227"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a></div><div class="ttdeci">static void cancel_init_tunnel_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00907">remmina_protocol_widget.c:907</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a99ba55ddcb17c9e87ca233fa83787227"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a></div><div class="ttdeci">static void cancel_init_tunnel_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00912">remmina_protocol_widget.c:912</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html"><div class="ttname"><a href="structremmina__masterthread__exec__data.html">remmina_masterthread_exec_data</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8h_source.html#l00043">remmina_masterthread_exec.h:43</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac705ffa194e3c3457e9a0a1bd6c79be8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a></div><div class="ttdeci">void remmina_protocol_widget_setup(RemminaProtocolWidget *gp, RemminaFile *remminafile, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02052">remmina_protocol_widget.c:2052</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac705ffa194e3c3457e9a0a1bd6c79be8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a></div><div class="ttdeci">void remmina_protocol_widget_setup(RemminaProtocolWidget *gp, RemminaFile *remminafile, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02058">remmina_protocol_widget.c:2058</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00047">plugin.h:47</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00106">remmina_protocol_widget.c:106</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00107">remmina_protocol_widget.c:107</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a70cdb4f879e8bb26b23d05cbbe685640"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">_RemminaProtocolWidgetPriv::listen_message_panel</a></div><div class="ttdeci">RemminaMessagePanel * listen_message_panel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00088">remmina_protocol_widget.c:88</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5567a5c55d9a880d174faabafcd15fa3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a></div><div class="ttdeci">static RemminaSSHTunnel * remmina_protocol_widget_init_tunnel(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00912">remmina_protocol_widget.c:912</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5567a5c55d9a880d174faabafcd15fa3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a></div><div class="ttdeci">static RemminaSSHTunnel * remmina_protocol_widget_init_tunnel(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00917">remmina_protocol_widget.c:917</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_afa1a3a21c504b386cecfb42d1c9e6bff"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">_RemminaProtocolPlugin::features</a></div><div class="ttdeci">const RemminaProtocolFeature * features</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00077">plugin.h:77</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a1d7cf2572439242b4f70e97b7f71405f"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">_RemminaProtocolWidgetPriv::domain</a></div><div class="ttdeci">gchar * domain</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00094">remmina_protocol_widget.c:94</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a1d7cf2572439242b4f70e97b7f71405f"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">_RemminaProtocolWidgetPriv::domain</a></div><div class="ttdeci">gchar * domain</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00095">remmina_protocol_widget.c:95</a></div></div>
<div class="ttc" id="remmina__trace__calls_8h_html"><div class="ttname"><a href="remmina__trace__calls_8h.html">remmina_trace_calls.h</a></div></div>
-<div class="ttc" id="struct_mp_run_info_html_acbbf3faafdfa1a05fd787730d1668079"><div class="ttname"><a href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">MpRunInfo::loop</a></div><div class="ttdeci">GMainLoop * loop</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01571">remmina_protocol_widget.c:1571</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01477">remmina_protocol_widget.c:1477</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9473da27fd10eb46ef8360f9ad4be86d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01849">remmina_protocol_widget.c:1849</a></div></div>
+<div class="ttc" id="struct_mp_run_info_html_acbbf3faafdfa1a05fd787730d1668079"><div class="ttname"><a href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">MpRunInfo::loop</a></div><div class="ttdeci">GMainLoop * loop</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01576">remmina_protocol_widget.c:1576</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01482">remmina_protocol_widget.c:1482</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9473da27fd10eb46ef8360f9ad4be86d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01854">remmina_protocol_widget.c:1854</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a2852b6a6de556164946570c4d7786ece"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece">remmina_masterthread_exec_data::protocolwidget_panelshowlisten</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@24 protocolwidget_panelshowlisten</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00793">remmina_protocol_widget.c:793</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a36e01bda95825ee6b5f164f52af7c457"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_lock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00433">remmina_protocol_widget.c:433</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00798">remmina_protocol_widget.c:798</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a36e01bda95825ee6b5f164f52af7c457"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_lock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00438">remmina_protocol_widget.c:438</a></div></div>
<div class="ttc" id="rcw_8c_html_a96e821dc68caa7f3380a513eb47aead7"><div class="ttname"><a href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a></div><div class="ttdeci">void rco_destroy_message_panel(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdoc">Deletes a RemminaMessagePanel from the current cnnobj and if it was visible, make visible the last re...</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04715">rcw.c:4715</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00113">remmina_ssh.h:113</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5aaadd752a3275a0a8e0018a3dd669f8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a></div><div class="ttdeci">void remmina_protocol_widget_set_hostkey_func(RemminaProtocolWidget *gp, RemminaHostkeyFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00859">remmina_protocol_widget.c:859</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5aaadd752a3275a0a8e0018a3dd669f8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a></div><div class="ttdeci">void remmina_protocol_widget_set_hostkey_func(RemminaProtocolWidget *gp, RemminaHostkeyFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00864">remmina_protocol_widget.c:864</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html"><div class="ttname"><a href="struct___remmina_connection_object.html">_RemminaConnectionObject</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00162">rcw.c:162</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a6fa916d3736cb8e2a0e6541f608c209b"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">_RemminaSSHTunnel::bindlocalhost</a></div><div class="ttdeci">gboolean bindlocalhost</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00172">remmina_ssh.h:172</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01396">remmina_protocol_widget.c:1396</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01408">remmina_protocol_widget.c:1408</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01401">remmina_protocol_widget.c:1401</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01413">remmina_protocol_widget.c:1413</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00109">remmina_ssh.h:109</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa88afa1e3f04974974a8be324b0a930e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a></div><div class="ttdeci">void remmina_protocol_widget_update_align(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00408">remmina_protocol_widget.c:408</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ad6e2d00646e8268aa0e8bbe31b77db48"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a></div><div class="ttdeci">void remmina_protocol_widget_set_current_scale_mode(RemminaProtocolWidget *gp, RemminaScaleMode scalemode)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01414">remmina_protocol_widget.c:1414</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_signal_data_html"><div class="ttname"><a href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00121">remmina_protocol_widget.c:121</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_af4a20ef0ff8cc86feeba345498179e48"><div class="ttname"><a href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a></div><div class="ttdeci">static gboolean conn_opened(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00368">remmina_protocol_widget.c:368</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa88afa1e3f04974974a8be324b0a930e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a></div><div class="ttdeci">void remmina_protocol_widget_update_align(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00413">remmina_protocol_widget.c:413</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ad6e2d00646e8268aa0e8bbe31b77db48"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a></div><div class="ttdeci">void remmina_protocol_widget_set_current_scale_mode(RemminaProtocolWidget *gp, RemminaScaleMode scalemode)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01419">remmina_protocol_widget.c:1419</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_signal_data_html"><div class="ttname"><a href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00122">remmina_protocol_widget.c:122</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_af4a20ef0ff8cc86feeba345498179e48"><div class="ttname"><a href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a></div><div class="ttdeci">static gboolean conn_opened(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00369">remmina_protocol_widget.c:369</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00047">types.h:47</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2f5270c5e5007a8e95f4d460c11b2a06"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_clip_strokes(GtkClipboard *clipboard, const gchar *clip_text, gpointer data)</div><div class="ttdoc">Send to the plugin some keystrokes from the content of the clipboard This is a copy of remmina_protoc...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00598">remmina_protocol_widget.c:598</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa674c14f3a46dd5eb6b53d6f8ce6bd31"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authx509(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01751">remmina_protocol_widget.c:1751</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a4fb4c2252289e8e891376db6279ef8f5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a></div><div class="ttdeci">static void cancel_open_connection_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00308">remmina_protocol_widget.c:308</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2f5270c5e5007a8e95f4d460c11b2a06"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_clip_strokes(GtkClipboard *clipboard, const gchar *clip_text, gpointer data)</div><div class="ttdoc">Send to the plugin some keystrokes from the content of the clipboard This is a copy of remmina_protoc...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00603">remmina_protocol_widget.c:603</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa674c14f3a46dd5eb6b53d6f8ce6bd31"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authx509(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01756">remmina_protocol_widget.c:1756</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a4fb4c2252289e8e891376db6279ef8f5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a></div><div class="ttdeci">static void cancel_open_connection_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00309">remmina_protocol_widget.c:309</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html"><div class="ttname"><a href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00065">plugin.h:65</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_ad2e965f3997d21a1e08d365c74e615bd"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">_RemminaProtocolPlugin::open_connection</a></div><div class="ttdeci">gboolean(* open_connection)(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00080">plugin.h:80</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_acad26c8fddd63360e26ecc99b0d57be4"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">_RemminaProtocolWidgetPriv::retry_message_panel</a></div><div class="ttdeci">RemminaMessagePanel * retry_message_panel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00090">remmina_protocol_widget.c:90</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_a0e20944d484c95036eeb6b5d7775c901"><div class="ttname"><a href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a></div><div class="ttdeci">void remmina_message_panel_field_set_string(RemminaMessagePanel *mp, int entryid, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00687">remmina_message_panel.c:687</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_aac83645c5474683d37a9a61fcd640b7a"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">remmina_protocol_widget_dialog_mt_data_t::gp</a></div><div class="ttdeci">RemminaProtocolWidget * gp</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01479">remmina_protocol_widget.c:1479</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_aac83645c5474683d37a9a61fcd640b7a"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">remmina_protocol_widget_dialog_mt_data_t::gp</a></div><div class="ttdeci">RemminaProtocolWidget * gp</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01484">remmina_protocol_widget.c:1484</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a2381772c96a26aafc98d347d210dbfe0"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">_RemminaProtocolWidgetPriv::plugin</a></div><div class="ttdeci">RemminaProtocolPlugin * plugin</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00062">remmina_protocol_widget.c:62</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac9abaedb8cc35838ef1444423a81507d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a></div><div class="ttdeci">static void run_unmap_handler(RemminaMessagePanel *mp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01590">remmina_protocol_widget.c:1590</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a29b8f44a7f4514422d3a5e04e0b8f0b5"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">remmina_protocol_widget_dialog_mt_data_t::rcbutton</a></div><div class="ttdeci">int rcbutton</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01492">remmina_protocol_widget.c:1492</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a69757e0c39fa9fcf31800f6375772016"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a></div><div class="ttdeci">static gboolean conn_closed(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00343">remmina_protocol_widget.c:343</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a15368afcbeb770f8cf25941bd49e7b54"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a></div><div class="ttdeci">void remmina_protocol_widget_set_display(RemminaProtocolWidget *gp, gint display)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01342">remmina_protocol_widget.c:1342</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac9abaedb8cc35838ef1444423a81507d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a></div><div class="ttdeci">static void run_unmap_handler(RemminaMessagePanel *mp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01595">remmina_protocol_widget.c:1595</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a29b8f44a7f4514422d3a5e04e0b8f0b5"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">remmina_protocol_widget_dialog_mt_data_t::rcbutton</a></div><div class="ttdeci">int rcbutton</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01497">remmina_protocol_widget.c:1497</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a69757e0c39fa9fcf31800f6375772016"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a></div><div class="ttdeci">static gboolean conn_closed(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00344">remmina_protocol_widget.c:344</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a15368afcbeb770f8cf25941bd49e7b54"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a></div><div class="ttdeci">void remmina_protocol_widget_set_display(RemminaProtocolWidget *gp, gint display)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01347">remmina_protocol_widget.c:1347</a></div></div>
<div class="ttc" id="types_8h_html_a373ddef8221457d86c64830c26d3f78a"><div class="ttname"><a href="types_8h.html#a373ddef8221457d86c64830c26d3f78a">RemminaProtocolWidgetResolutionMode</a></div><div class="ttdeci">RemminaProtocolWidgetResolutionMode</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00147">types.h:147</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_af72272c7e2f45d61130ab4e57eb86380"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">_RemminaProtocolWidgetPriv::height</a></div><div class="ttdeci">gint height</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00066">remmina_protocol_widget.c:66</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00049">types.h:49</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a41b62f211a8a8e960bc80aa1ba6b0380"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a></div><div class="ttdeci">void remmina_protocol_widget_set_width(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01390">remmina_protocol_widget.c:1390</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a41b62f211a8a8e960bc80aa1ba6b0380"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a></div><div class="ttdeci">void remmina_protocol_widget_set_width(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01395">remmina_protocol_widget.c:1395</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a19fed9a85494d40d3f2ae2ae1d1bc18c"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">_RemminaSSHTunnel::disconnect_func</a></div><div class="ttdeci">RemminaSSHTunnelCallback disconnect_func</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00177">remmina_ssh.h:177</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_af9db6b4306852214f3dc2cdc06a635b4"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">_RemminaProtocolWidgetPriv::cacrl</a></div><div class="ttdeci">gchar * cacrl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00098">remmina_protocol_widget.c:98</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a6399c3828908e36ed6202b5599bd206b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00315">remmina_protocol_widget.c:315</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_af9db6b4306852214f3dc2cdc06a635b4"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">_RemminaProtocolWidgetPriv::cacrl</a></div><div class="ttdeci">gchar * cacrl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00099">remmina_protocol_widget.c:99</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a6399c3828908e36ed6202b5599bd206b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00316">remmina_protocol_widget.c:316</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_aca49dce014d8471be0d3cfe29cc7a35d"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">_RemminaProtocolWidgetPriv::features</a></div><div class="ttdeci">RemminaProtocolFeature * features</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00063">remmina_protocol_widget.c:63</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a72561ca7477a62e8c7234409205e6544"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">remmina_protocol_widget_dialog_mt_data_t::strpasswordlabel</a></div><div class="ttdeci">gchar * strpasswordlabel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01484">remmina_protocol_widget.c:1484</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a72561ca7477a62e8c7234409205e6544"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">remmina_protocol_widget_dialog_mt_data_t::strpasswordlabel</a></div><div class="ttdeci">gchar * strpasswordlabel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01489">remmina_protocol_widget.c:1489</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a8d7d9b3c8050545469b1af9a35b043a2"><div class="ttname"><a href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a></div><div class="ttdeci">gchar * remmina_public_str_replace_in_place(gchar *string, const gchar *search, const gchar *replacement)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00688">remmina_public.c:688</a></div></div>
<div class="ttc" id="remmina__ext__exec_8c_html_a7c81795162a70d06294fdf935ea210d7"><div class="ttname"><a href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a></div><div class="ttdeci">GtkDialog * remmina_ext_exec_new(RemminaFile *remminafile, const char *remmina_ext_exec_type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ext__exec_8c_source.html#l00064">remmina_ext_exec.c:64</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac9da39853a32523057759a498bf6ac0a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_unmap_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00731">remmina_protocol_widget.c:731</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_affb2413c00f0681fe08f90523f7e1471"><div class="ttname"><a href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_keystrokes(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdoc">Send to the plugin some keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00507">remmina_protocol_widget.c:507</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab224a0f643d291f86ede54e373bd0a6f"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_name(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01378">remmina_protocol_widget.c:1378</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac9da39853a32523057759a498bf6ac0a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_unmap_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00736">remmina_protocol_widget.c:736</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_affb2413c00f0681fe08f90523f7e1471"><div class="ttname"><a href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_keystrokes(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdoc">Send to the plugin some keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00512">remmina_protocol_widget.c:512</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab224a0f643d291f86ede54e373bd0a6f"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_name(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01383">remmina_protocol_widget.c:1383</a></div></div>
<div class="ttc" id="types_8h_html_a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d"><div class="ttname"><a href="types_8h.html#a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d">RES_USE_CLIENT</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00150">types.h:150</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01939">remmina_protocol_widget.c:1939</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01944">remmina_protocol_widget.c:1944</a></div></div>
<div class="ttc" id="types_8h_html_ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd"><div class="ttname"><a href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00062">types.h:62</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aeffe07c6412286d99ba04f05fe74aeac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a></div><div class="ttdeci">static void cancel_start_reverse_tunnel_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01152">remmina_protocol_widget.c:1152</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aeffe07c6412286d99ba04f05fe74aeac"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a></div><div class="ttdeci">static void cancel_start_reverse_tunnel_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01157">remmina_protocol_widget.c:1157</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a3b8dfbacdde21a1a75007cde8e31bfd6"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6">remmina_masterthread_exec_data::protocolwidget_mpprogress</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@21 protocolwidget_mpprogress</div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a7c8675e38544a9c393b560b31d165791"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">_RemminaProtocolWidgetPriv::save_password</a></div><div class="ttdeci">gboolean save_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00095">remmina_protocol_widget.c:95</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a7c8675e38544a9c393b560b31d165791"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">_RemminaProtocolWidgetPriv::save_password</a></div><div class="ttdeci">gboolean save_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00096">remmina_protocol_widget.c:96</a></div></div>
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a></div><div class="ttdeci">RemminaMessagePanelFlags</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00155">types.h:155</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00056">remmina_message_panel.h:56</a></div></div>
<div class="ttc" id="remmina__ext__exec_8h_html"><div class="ttname"><a href="remmina__ext__exec_8h.html">remmina_ext_exec.h</a></div></div>
@@ -228,90 +229,90 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="remmina__masterthread__exec_8c_html_a3a52e863a3a3da6da6bb5d36c13b7ff4"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a3a52e863a3a3da6da6bb5d36c13b7ff4">remmina_masterthread_exec_is_main_thread</a></div><div class="ttdeci">gboolean remmina_masterthread_exec_is_main_thread()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00147">remmina_masterthread_exec.c:147</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a75007c472a404959a00cdebd8efc951a"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a">remmina_masterthread_exec_data::protocolwidget_mpdestroy</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@22 protocolwidget_mpdestroy</div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00055">remmina_message_panel.h:55</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a1cae52cad394f317c712eb4fd709d261"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00359">remmina_protocol_widget.c:359</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a1cae52cad394f317c712eb4fd709d261"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00360">remmina_protocol_widget.c:360</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_abfb8cc172b53c16c8099eba7ab3bbc57"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#abfb8cc172b53c16c8099eba7ab3bbc57">_RemminaProtocolPlugin::unmap_event</a></div><div class="ttdeci">gboolean(* unmap_event)(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00087">plugin.h:87</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a5c2137462d3168e90c812f1ce75a6e62"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02087">remmina_protocol_widget.c:2087</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2c2a41aeee8f3ef6481378a95c02c130"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a></div><div class="ttdeci">static guint remmina_protocol_widget_signals[LAST_SIGNAL]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00126">remmina_protocol_widget.c:126</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a5c2137462d3168e90c812f1ce75a6e62"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02093">remmina_protocol_widget.c:2093</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2c2a41aeee8f3ef6481378a95c02c130"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a></div><div class="ttdeci">static guint remmina_protocol_widget_signals[LAST_SIGNAL]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00127">remmina_protocol_widget.c:127</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_af47270db94513116a8c0f7658848c4af"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af">remmina_masterthread_exec_data::protocolwidget_mpshowretry</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@23 protocolwidget_mpshowretry</div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_aaab2e0d0706684150d0ee572e2490a10"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">_RemminaProtocolWidgetPriv::profile_remote_width</a></div><div class="ttdeci">gint profile_remote_width</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00083">remmina_protocol_widget.c:83</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00456">remmina_protocol_widget.c:456</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00461">remmina_protocol_widget.c:461</a></div></div>
<div class="ttc" id="remmina__log_8h_html"><div class="ttname"><a href="remmina__log_8h.html">remmina_log.h</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a6a24677077c069fbbb1f17e747530e1b"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">_RemminaProtocolWidgetPriv::auth_message_panel</a></div><div class="ttdeci">RemminaMessagePanel * auth_message_panel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00089">remmina_protocol_widget.c:89</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a1826baafd2d7b5dc8a009ef4fcad77e9"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">_RemminaProtocolFeature::type</a></div><div class="ttdeci">RemminaProtocolFeatureType type</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00073">types.h:73</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a0f1ee4a3ddb7afe518588dce3046f5ec"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">_RemminaProtocolWidgetPriv::remmina_file</a></div><div class="ttdeci">RemminaFile * remmina_file</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00061">remmina_protocol_widget.c:61</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a1585ea6908dd5c0a9b0f47d409916435"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_map_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00719">remmina_protocol_widget.c:719</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a1585ea6908dd5c0a9b0f47d409916435"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_map_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00724">remmina_protocol_widget.c:724</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a277fd3954a4f89c6ddddd68f4ffb5116"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">_RemminaProtocolWidgetPriv::ssh_tunnels</a></div><div class="ttdeci">GPtrArray * ssh_tunnels</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00074">remmina_protocol_widget.c:74</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9092c29f585fdabaf0ce7e865670053b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_question_yesno(RemminaProtocolWidget *gp, const char *msg)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01684">remmina_protocol_widget.c:1684</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9092c29f585fdabaf0ce7e865670053b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_question_yesno(RemminaProtocolWidget *gp, const char *msg)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html_aa7b9f54b6bb8bb01c24a8740b9c3633c"><div class="ttname"><a href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">_RemminaProtocolWidget::plugin</a></div><div class="ttdeci">RemminaProtocolPlugin * plugin</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00062">remmina_protocol_widget.h:62</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_a92bb5524267ad4fe682fc07f778500d7"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">_RemminaProtocolPlugin::send_keystrokes</a></div><div class="ttdeci">void(* send_keystrokes)(RemminaProtocolWidget *gp, const guint keystrokes[], const gint keylen)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00084">plugin.h:84</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00104">remmina_protocol_widget.c:104</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00105">remmina_protocol_widget.c:105</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_ab3c15094a16418c5951c5382c8a44190"><div class="ttname"><a href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">_RemminaProtocolFeature::opt3</a></div><div class="ttdeci">gpointer opt3</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00077">types.h:77</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_acf75fd4bac28a3d53da064b2905f23c1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_changed_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01791">remmina_protocol_widget.c:1791</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_acf75fd4bac28a3d53da064b2905f23c1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_changed_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01796">remmina_protocol_widget.c:1796</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a93da102535413a0b3b1b740b582444ca"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">_RemminaProtocolWidgetPriv::profile_remote_height</a></div><div class="ttdeci">gint profile_remote_height</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00084">remmina_protocol_widget.c:84</a></div></div>
<div class="ttc" id="types_8h_html_a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef"><div class="ttname"><a href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00151">types.h:151</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab9632c73b32531b7bea976e10204670b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientcert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01867">remmina_protocol_widget.c:1867</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a97cba8208a4348446159bf465b3233f5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a></div><div class="ttdeci">void remmina_protocol_widget_mpdestroy(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00890">remmina_protocol_widget.c:890</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab9632c73b32531b7bea976e10204670b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientcert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01872">remmina_protocol_widget.c:1872</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a97cba8208a4348446159bf465b3233f5"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a></div><div class="ttdeci">void remmina_protocol_widget_mpdestroy(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00895">remmina_protocol_widget.c:895</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00115">remmina_ssh.h:115</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00054">remmina_message_panel.h:54</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_abc556f0a4335083436f6e19c204fa553"><div class="ttname"><a href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a></div><div class="ttdeci">void remmina_ssh_set_error(RemminaSSH *ssh, const gchar *fmt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00653">remmina_ssh.c:653</a></div></div>
-<div class="ttc" id="struct_mp_run_info_html_a5c72860dd91def572bad1443e2c188a5"><div class="ttname"><a href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">MpRunInfo::mp</a></div><div class="ttdeci">RemminaMessagePanel * mp</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01570">remmina_protocol_widget.c:1570</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a05f9694efc84de6273efa46d232b84f9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a></div><div class="ttdeci">static void cancel_connect_xport_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01292">remmina_protocol_widget.c:1292</a></div></div>
+<div class="ttc" id="struct_mp_run_info_html_a5c72860dd91def572bad1443e2c188a5"><div class="ttname"><a href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">MpRunInfo::mp</a></div><div class="ttdeci">RemminaMessagePanel * mp</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01575">remmina_protocol_widget.c:1575</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a05f9694efc84de6273efa46d232b84f9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a></div><div class="ttdeci">static void cancel_connect_xport_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01297">remmina_protocol_widget.c:1297</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html"><div class="ttname"><a href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00058">remmina_protocol_widget.h:58</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_aba49db2ced40e21e8adfad69dcfda2c4"><div class="ttname"><a href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a></div><div class="ttdeci">gboolean remmina_ssh_tunnel_xport(RemminaSSHTunnel *tunnel, gboolean bindlocalhost)</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2551dd6f53480609596d2695040fba5d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_unlock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00440">remmina_protocol_widget.c:440</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2551dd6f53480609596d2695040fba5d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_unlock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00445">remmina_protocol_widget.c:445</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_abf04fd329ab77bbd4f6aa1cb1eaa349d"><div class="ttname"><a href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a></div><div class="ttdeci">RemminaSSHTunnel * remmina_ssh_tunnel_new_from_file(RemminaFile *remminafile)</div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html_a18a9b0b9c8e619b3bdee881d7601f6d6"><div class="ttname"><a href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">_RemminaProtocolWidget::priv</a></div><div class="ttdeci">RemminaProtocolWidgetPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00061">remmina_protocol_widget.h:61</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a0fcec40aae330e115d1bae66aeefb3df"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df">remmina_protocol_widget_init</a></div><div class="ttdeci">static void remmina_protocol_widget_init(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00229">remmina_protocol_widget.c:229</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa0b0a97022961c198c3343dd2433d7cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a></div><div class="ttdeci">static void authpanel_mt_cb(void *user_data, int button)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01495">remmina_protocol_widget.c:1495</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a0fcec40aae330e115d1bae66aeefb3df"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df">remmina_protocol_widget_init</a></div><div class="ttdeci">static void remmina_protocol_widget_init(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00230">remmina_protocol_widget.c:230</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa0b0a97022961c198c3343dd2433d7cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a></div><div class="ttdeci">static void authpanel_mt_cb(void *user_data, int button)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01500">remmina_protocol_widget.c:1500</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html"><div class="ttname"><a href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00072">types.h:72</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a78b123eca6709bceeacda7d791a94bf1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a></div><div class="ttdeci">RemminaMessagePanel * remmina_protocol_widget_mpprogress(RemminaConnectionObject *cnnobj, const gchar *msg, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00865">remmina_protocol_widget.c:865</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a78b123eca6709bceeacda7d791a94bf1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a></div><div class="ttdeci">RemminaMessagePanel * remmina_protocol_widget_mpprogress(RemminaConnectionObject *cnnobj, const gchar *msg, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00870">remmina_protocol_widget.c:870</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a8066492c4a0181f1b39b2fb2098fb56d"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">_RemminaSSHTunnel::init_func</a></div><div class="ttdeci">RemminaSSHTunnelCallback init_func</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00175">remmina_ssh.h:175</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00061">remmina_message_panel.h:61</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8h_html_ab89fba118812616a3e47504cfe4f3390"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a></div><div class="ttdeci">gboolean(* RemminaHostkeyFunc)(RemminaProtocolWidget *gp, guint keyval, gboolean release)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00122">remmina_protocol_widget.h:122</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a247c73c70d9c58427022a4dbcd638d32"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32">G_DEFINE_TYPE</a></div><div class="ttdeci">G_DEFINE_TYPE(RemminaProtocolWidget, remmina_protocol_widget, GTK_TYPE_EVENT_BOX)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00109">remmina_protocol_widget.c:109</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01968">remmina_protocol_widget.c:1968</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_acf40f566116cf43af26891cd37af4eb1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a></div><div class="ttdeci">void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00694">remmina_protocol_widget.c:694</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a247c73c70d9c58427022a4dbcd638d32"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32">G_DEFINE_TYPE</a></div><div class="ttdeci">G_DEFINE_TYPE(RemminaProtocolWidget, remmina_protocol_widget, GTK_TYPE_EVENT_BOX)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00110">remmina_protocol_widget.c:110</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01973">remmina_protocol_widget.c:1973</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_acf40f566116cf43af26891cd37af4eb1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a></div><div class="ttdeci">void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00699">remmina_protocol_widget.c:699</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a94ef3b8e64d6ced7cd639b7917026f4c"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">_RemminaProtocolWidgetPriv::scaler_expand</a></div><div class="ttdeci">gboolean scaler_expand</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00068">remmina_protocol_widget.c:68</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_a67a48217d44350e028ed95b1b55f0b0f"><div class="ttname"><a href="remmina__message__panel_8c.html#a67a48217d44350e028ed95b1b55f0b0f">remmina_message_panel_field_set_switch</a></div><div class="ttdeci">void remmina_message_panel_field_set_switch(RemminaMessagePanel *mp, int entryid, gboolean state)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00721">remmina_message_panel.c:721</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a6f2cd8a2535e180e7bd428e84030ffb6"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">_RemminaSSHTunnel::callback_data</a></div><div class="ttdeci">gpointer callback_data</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00178">remmina_ssh.h:178</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html_aae1dfb6ff52460c80a3adf80d4934f67"><div class="ttname"><a href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">_RemminaProtocolWidget::cnnobj</a></div><div class="ttdeci">RemminaConnectionObject * cnnobj</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00060">remmina_protocol_widget.h:60</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a14684e3222e6afb1b43d77634a174767"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a></div><div class="ttdeci">void remmina_protocol_widget_update_remote_resolution(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02136">remmina_protocol_widget.c:2136</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a8127b4cc7c278216dff87a7e4a336dfb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a></div><div class="ttdeci">GtkWindow * remmina_protocol_widget_get_gtkwindow(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02077">remmina_protocol_widget.c:2077</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a14684e3222e6afb1b43d77634a174767"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a></div><div class="ttdeci">void remmina_protocol_widget_update_remote_resolution(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02142">remmina_protocol_widget.c:2142</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a8127b4cc7c278216dff87a7e4a336dfb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a></div><div class="ttdeci">GtkWindow * remmina_protocol_widget_get_gtkwindow(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02083">remmina_protocol_widget.c:2083</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a4b8ffd6e32126a9c4d2074521279b12b"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">_RemminaProtocolFeature::opt1_type_hint</a></div><div class="ttdeci">RemminaTypeHint opt1_type_hint</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00078">types.h:78</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a262d75d6b535bd8c623e607805db4084"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_new_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01759">remmina_protocol_widget.c:1759</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00464">remmina_protocol_widget.c:464</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00708">remmina_protocol_widget.c:708</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a262d75d6b535bd8c623e607805db4084"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_new_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01764">remmina_protocol_widget.c:1764</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00469">remmina_protocol_widget.c:469</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00713">remmina_protocol_widget.c:713</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a9a8d02227eb703bccc3f9296a5d89d6f"><div class="ttname"><a href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a></div><div class="ttdeci">gboolean remmina_pref_get_boolean(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01150">remmina_pref.c:1150</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_ae9f52b1a3a545acae8c93007e20ec909"><div class="ttname"><a href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a></div><div class="ttdeci">void remmina_ssh_tunnel_cancel_accept(RemminaSSHTunnel *tunnel)</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00216">remmina_protocol_widget.c:216</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00217">remmina_protocol_widget.c:217</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a708ea5b5a9d1f5dcc5ab5bfb3d1a8483"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">_RemminaProtocolWidgetPriv::connect_message_panel</a></div><div class="ttdeci">RemminaMessagePanel * connect_message_panel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00087">remmina_protocol_widget.c:87</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a12eddf3428a53201ee0a2ec422d2fa4a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a></div><div class="ttdeci">gboolean remmina_protocol_widget_ssh_exec(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01190">remmina_protocol_widget.c:1190</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a70aecb9af2ea35527e8d058d1d87a0d3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacrl(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01858">remmina_protocol_widget.c:1858</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a14655c577c6f070ee28f4211baf05361"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">remmina_protocol_widget_dialog_mt_data_t::default_domain</a></div><div class="ttdeci">gchar * default_domain</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01483">remmina_protocol_widget.c:1483</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a12eddf3428a53201ee0a2ec422d2fa4a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a></div><div class="ttdeci">gboolean remmina_protocol_widget_ssh_exec(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01195">remmina_protocol_widget.c:1195</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a70aecb9af2ea35527e8d058d1d87a0d3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacrl(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01863">remmina_protocol_widget.c:1863</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a14655c577c6f070ee28f4211baf05361"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">remmina_protocol_widget_dialog_mt_data_t::default_domain</a></div><div class="ttdeci">gchar * default_domain</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01488">remmina_protocol_widget.c:1488</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a223f8dd7a678bcec2ece40a2d8f7ea06"><div class="ttname"><a href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a></div><div class="ttdeci">void remmina_ssh_tunnel_free(RemminaSSHTunnel *tunnel)</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00105">remmina_protocol_widget.c:105</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00106">remmina_protocol_widget.c:106</a></div></div>
<div class="ttc" id="types_8h_html_a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd"><div class="ttname"><a href="types_8h.html#a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd">RES_USE_CUSTOM</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00149">types.h:149</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a2c5f3bd1f990157bef034920db49dc6e"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">_RemminaProtocolWidgetPriv::cacert</a></div><div class="ttdeci">gchar * cacert</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00097">remmina_protocol_widget.c:97</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a11480396cb379860d16d9d41ef91ecb1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a></div><div class="ttdeci">static void remmina_protocol_widget_close_all_tunnels(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00153">remmina_protocol_widget.c:153</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a04f0a11e50cdbd98ab80984fd5aca16d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a></div><div class="ttdeci">static void remmina_protocol_widget_chat_on_destroy(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02001">remmina_protocol_widget.c:2001</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a450fbca7e27c952b6aaba6e33192051d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_xport_tunnel_disconnect_callback(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01279">remmina_protocol_widget.c:1279</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a2c5f3bd1f990157bef034920db49dc6e"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">_RemminaProtocolWidgetPriv::cacert</a></div><div class="ttdeci">gchar * cacert</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00098">remmina_protocol_widget.c:98</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a11480396cb379860d16d9d41ef91ecb1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a></div><div class="ttdeci">static void remmina_protocol_widget_close_all_tunnels(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00154">remmina_protocol_widget.c:154</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a04f0a11e50cdbd98ab80984fd5aca16d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a></div><div class="ttdeci">static void remmina_protocol_widget_chat_on_destroy(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02007">remmina_protocol_widget.c:2007</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a450fbca7e27c952b6aaba6e33192051d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_xport_tunnel_disconnect_callback(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01284">remmina_protocol_widget.c:1284</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a></div><div class="ttdeci">RemminaProtocolFeatureType</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00046">types.h:46</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_abdf99138612d02bc3921b0b77bdc89cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a></div><div class="ttdeci">gint remmina_protocol_widget_get_multimon(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01362">remmina_protocol_widget.c:1362</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aadd106cec729a80405c6097e4c662044"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a></div><div class="ttdeci">void remmina_protocol_widget_set_height(RemminaProtocolWidget *gp, gint height)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01402">remmina_protocol_widget.c:1402</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_abdf99138612d02bc3921b0b77bdc89cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a></div><div class="ttdeci">gint remmina_protocol_widget_get_multimon(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01367">remmina_protocol_widget.c:1367</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aadd106cec729a80405c6097e4c662044"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a></div><div class="ttdeci">void remmina_protocol_widget_set_height(RemminaProtocolWidget *gp, gint height)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01407">remmina_protocol_widget.c:1407</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_ad4b21147a7592bf689c9f761d9e4fdc2"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#ad4b21147a7592bf689c9f761d9e4fdc2">_RemminaProtocolPlugin::close_connection</a></div><div class="ttdeci">gboolean(* close_connection)(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00081">plugin.h:81</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_class_html"><div class="ttname"><a href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00065">remmina_protocol_widget.h:65</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8c_html_a14628c2470cac50e87916a70ea05c97d"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a14628c2470cac50e87916a70ea05c97d">remmina_masterthread_exec_and_wait</a></div><div class="ttdeci">void remmina_masterthread_exec_and_wait(RemminaMTExecData *d)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00125">remmina_masterthread_exec.c:125</a></div></div>
<div class="ttc" id="rcw_8c_html_a96f1d274dafe5e4953da52beb75f7d14"><div class="ttname"><a href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a></div><div class="ttdeci">GtkWidget * rcw_get_gtkviewport(RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04700">rcw.c:4700</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_ae2923c94c1caf1ac4a7eb48361d2670a"><div class="ttname"><a href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a></div><div class="ttdeci">void(* RemminaMessagePanelCallback)(void *user_data, int button)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00067">remmina_message_panel.h:67</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00743">remmina_protocol_widget.c:743</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00748">remmina_protocol_widget.c:748</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_a44054d029d4615092ae8a2ee1bf81db4"><div class="ttname"><a href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a></div><div class="ttdeci">gchar * remmina_message_panel_field_get_string(RemminaMessagePanel *mp, int entryid)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00703">remmina_message_panel.c:703</a></div></div>
<div class="ttc" id="types_8h_html_aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd"><div class="ttname"><a href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00142">types.h:142</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a006b0d6d883c6dd0da6c444991973ac7"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">_RemminaProtocolFeature::opt2_type_hint</a></div><div class="ttdeci">RemminaTypeHint opt2_type_hint</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00079">types.h:79</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01465">remmina_protocol_widget.c:1465</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a08d312825fc0de9f9286279d99f763a1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientkey(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01876">remmina_protocol_widget.c:1876</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01470">remmina_protocol_widget.c:1470</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a08d312825fc0de9f9286279d99f763a1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientkey(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01881">remmina_protocol_widget.c:1881</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_aa7ac5ec9d95867734619583a2049e952"><div class="ttname"><a href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">_RemminaProtocolFeature::opt1</a></div><div class="ttdeci">gpointer opt1</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00075">types.h:75</a></div></div>
<div class="ttc" id="rcw_8c_html_a29701ae152ba15f6d8921f395174d2df"><div class="ttname"><a href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a></div><div class="ttdeci">RemminaPref remmina_pref</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00079">rcw.c:79</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a7b1e83afd68c2b7301fc4d6da6a8f6d8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a></div><div class="ttdeci">static void run_destroy_handler(RemminaMessagePanel *mp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01598">remmina_protocol_widget.c:1598</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a7b1e83afd68c2b7301fc4d6da6a8f6d8"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a></div><div class="ttdeci">static void run_destroy_handler(RemminaMessagePanel *mp, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01603">remmina_protocol_widget.c:1603</a></div></div>
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00156">types.h:156</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_afae4072b7d8b54392ec08da7d6ead620"><div class="ttname"><a href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a></div><div class="ttdeci">void remmina_message_panel_setup_progress(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00127">remmina_message_panel.c:127</a></div></div>
<div class="ttc" id="types_8h_html_aeea5ee1e675368413b6f6ab09883e7de"><div class="ttname"><a href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a></div><div class="ttdeci">RemminaScaleMode</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00141">types.h:141</a></div></div>
@@ -319,76 +320,76 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c">REMMINA_MESSAGE_PANEL_FLAG_DOMAIN</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00158">types.h:158</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00062">remmina_message_panel.h:62</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a4884356c195dcfb4ceacf641a1e74e66"><div class="ttname"><a href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a></div><div class="ttdeci">gint remmina_file_get_int(RemminaFile *remminafile, const gchar *setting, gint default_value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00603">remmina_file.c:603</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01297">remmina_protocol_widget.c:1297</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01302">remmina_protocol_widget.c:1302</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_ae0dc6952f8015848cf97950fcc7d9997"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">_RemminaProtocolPlugin::map_event</a></div><div class="ttdeci">gboolean(* map_event)(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00086">plugin.h:86</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a605b69a9aa4393024369cc5070488692"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00806">remmina_protocol_widget.c:806</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a605b69a9aa4393024369cc5070488692"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00811">remmina_protocol_widget.c:811</a></div></div>
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00159">types.h:159</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a3ecf120415414844ebcf07a1c86e9cdf"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">remmina_protocol_widget_dialog_mt_data_t::pt_mutex</a></div><div class="ttdeci">pthread_mutex_t pt_mutex</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01489">remmina_protocol_widget.c:1489</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a></div><div class="ttdeci">panel_type</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00103">remmina_protocol_widget.c:103</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a3ecf120415414844ebcf07a1c86e9cdf"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">remmina_protocol_widget_dialog_mt_data_t::pt_mutex</a></div><div class="ttdeci">pthread_mutex_t pt_mutex</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01494">remmina_protocol_widget.c:1494</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9275874ac61d3750aa677a36da714373"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a></div><div class="ttdeci">panel_type</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00104">remmina_protocol_widget.c:104</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_aa49520ac95b505c111abfb7f3b7c55de"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#aa49520ac95b505c111abfb7f3b7c55de">_RemminaProtocolPlugin::query_feature</a></div><div class="ttdeci">gboolean(* query_feature)(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00082">plugin.h:82</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aecd801fbe5399bbeb5832657bce193cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_tunnel_destroy(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01021">remmina_protocol_widget.c:1021</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aecd801fbe5399bbeb5832657bce193cb"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a></div><div class="ttdeci">static gboolean remmina_protocol_widget_tunnel_destroy(RemminaSSHTunnel *tunnel, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01026">remmina_protocol_widget.c:1026</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3872c8656a8a3d5147bcc603471c1932"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a></div><div class="ttdeci">RemminaPlugin * remmina_plugin_manager_get_plugin(RemminaPluginType type, const gchar *name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00438">remmina_plugin_manager.c:438</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a650c926c67ed4ec841cf8553d6454850"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">remmina_protocol_widget_dialog_mt_data_t::default_password</a></div><div class="ttdeci">gchar * default_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01482">remmina_protocol_widget.c:1482</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a05b5edfc3d3d0dcff1745d1d35aaca5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_opened(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00391">remmina_protocol_widget.c:391</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a650c926c67ed4ec841cf8553d6454850"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">remmina_protocol_widget_dialog_mt_data_t::default_password</a></div><div class="ttdeci">gchar * default_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01487">remmina_protocol_widget.c:1487</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a05b5edfc3d3d0dcff1745d1d35aaca5c"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_opened(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00396">remmina_protocol_widget.c:396</a></div></div>
<div class="ttc" id="remmina__masterthread__exec_8h_html"><div class="ttname"><a href="remmina__masterthread__exec_8h.html">remmina_masterthread_exec.h</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_aab44850c13a7e5e20a02603ae173d53d"><div class="ttname"><a href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">_RemminaProtocolFeature::opt2</a></div><div class="ttdeci">gpointer opt2</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00076">types.h:76</a></div></div>
-<div class="ttc" id="struct_mp_run_info_html_acb8e8aaf721611a761541a325e2a5904"><div class="ttname"><a href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">MpRunInfo::response</a></div><div class="ttdeci">gint response</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01572">remmina_protocol_widget.c:1572</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01371">remmina_protocol_widget.c:1371</a></div></div>
+<div class="ttc" id="struct_mp_run_info_html_acb8e8aaf721611a761541a325e2a5904"><div class="ttname"><a href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">MpRunInfo::response</a></div><div class="ttdeci">gint response</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01577">remmina_protocol_widget.c:1577</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01376">remmina_protocol_widget.c:1376</a></div></div>
<div class="ttc" id="remmina__pref_8h_html"><div class="ttname"><a href="remmina__pref_8h.html">remmina_pref.h</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a95f1d68c7ab3e2a6b158db45f63538fb"><div class="ttname"><a href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a></div><div class="ttdeci">guint16 remmina_public_get_keycode_for_keyval(GdkKeymap *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00528">remmina_public.c:528</a></div></div>
<div class="ttc" id="types_8h_html_a1ace68e95e55a30fcf8b991f52332501"><div class="ttname"><a href="types_8h.html#a1ace68e95e55a30fcf8b991f52332501">RemminaTunnelInitFunc</a></div><div class="ttdeci">gpointer RemminaTunnelInitFunc</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00094">types.h:94</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_a6e04143450eeb71e3d0b2c14983860a4"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">_RemminaProtocolPlugin::name</a></div><div class="ttdeci">const gchar * name</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00067">plugin.h:67</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_ac613cf4b362b9dfc25e66f9d265e9326"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">_RemminaProtocolWidgetPriv::hostkey_func</a></div><div class="ttdeci">RemminaHostkeyFunc hostkey_func</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00081">remmina_protocol_widget.c:81</a></div></div>
<div class="ttc" id="rcw_8c_html_adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce"><div class="ttname"><a href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00182">rcw.c:182</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_ad9460e6c8e837ce941568d74499e0b28"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">remmina_protocol_widget_dialog_mt_data_t::default_username</a></div><div class="ttdeci">gchar * default_username</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01481">remmina_protocol_widget.c:1481</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01831">remmina_protocol_widget.c:1831</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_ad9460e6c8e837ce941568d74499e0b28"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">remmina_protocol_widget_dialog_mt_data_t::default_username</a></div><div class="ttdeci">gchar * default_username</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01486">remmina_protocol_widget.c:1486</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01836">remmina_protocol_widget.c:1836</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a1fac51670815da6a72700a10866c179a"><div class="ttname"><a href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a></div><div class="ttdeci">gboolean remmina_public_get_modifier_for_keycode(GdkKeymap *keymap, guint16 keycode)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00543">remmina_public.c:543</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a6a00bf7132ed6d4923bd239acb073ace"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace">remmina_masterthread_exec_data::chat_receive</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@15 chat_receive</div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a13fd74ca385ce7f7a4d6094a65bd17f7"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">remmina_protocol_widget_dialog_mt_data_t::dtype</a></div><div class="ttdeci">enum panel_type dtype</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01485">remmina_protocol_widget.c:1485</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a13fd74ca385ce7f7a4d6094a65bd17f7"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">remmina_protocol_widget_dialog_mt_data_t::dtype</a></div><div class="ttdeci">enum panel_type dtype</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01490">remmina_protocol_widget.c:1490</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_abea1e7f8f2ed7639f59907b622fba688"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688">remmina_masterthread_exec_data::p</a></div><div class="ttdeci">union remmina_masterthread_exec_data::@12 p</div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a11a8aa051088d48b389c8385d03a65f7"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">_RemminaProtocolWidgetPriv::password</a></div><div class="ttdeci">gchar * password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00093">remmina_protocol_widget.c:93</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a11a8aa051088d48b389c8385d03a65f7"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">_RemminaProtocolWidgetPriv::password</a></div><div class="ttdeci">gchar * password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00094">remmina_protocol_widget.c:94</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_af348bb968fd98ba269c4e253750e2400"><div class="ttname"><a href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">_RemminaPref::sshtunnel_port</a></div><div class="ttdeci">gint sshtunnel_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00168">remmina_pref.h:168</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ad637ec849c497e4a0d4c723396aa6fba"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authuserpwd_ssh_tunnel(RemminaProtocolWidget *gp, gboolean want_domain, gboolean allow_password_saving)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01697">remmina_protocol_widget.c:1697</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a0a93da80662ff18b93270ced59243ce3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a></div><div class="ttdeci">static void cancel_start_direct_tunnel_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01016">remmina_protocol_widget.c:1016</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ad637ec849c497e4a0d4c723396aa6fba"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authuserpwd_ssh_tunnel(RemminaProtocolWidget *gp, gboolean want_domain, gboolean allow_password_saving)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01702">remmina_protocol_widget.c:1702</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a0a93da80662ff18b93270ced59243ce3"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a></div><div class="ttdeci">static void cancel_start_direct_tunnel_cb(void *cbdata, int btn)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01021">remmina_protocol_widget.c:1021</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_a46c919e7c8529074e19f46cf1b545f97"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97">remmina_masterthread_exec_data::protocolwidget_emit_signal</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@20 protocolwidget_emit_signal</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a8565f01f8b5a3f0ee4518bda5f923f9a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a></div><div class="ttdeci">static gboolean update_align(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00399">remmina_protocol_widget.c:399</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a8565f01f8b5a3f0ee4518bda5f923f9a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a></div><div class="ttdeci">static gboolean update_align(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00404">remmina_protocol_widget.c:404</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html_ad4778e62aa78baace7d46fb1c4a475c4"><div class="ttname"><a href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">_RemminaProtocolPlugin::get_plugin_screenshot</a></div><div class="ttdeci">gboolean(* get_plugin_screenshot)(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00085">plugin.h:85</a></div></div>
<div class="ttc" id="types_8h_html_ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440"><div class="ttname"><a href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00069">types.h:69</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01426">remmina_protocol_widget.c:1426</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01431">remmina_protocol_widget.c:1431</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_a80bc2fcb39c236da739593c2134c73fa"><div class="ttname"><a href="remmina__message__panel_8c.html#a80bc2fcb39c236da739593c2134c73fa">remmina_message_panel_field_get_switch_state</a></div><div class="ttdeci">gboolean remmina_message_panel_field_get_switch_state(RemminaMessagePanel *mp, int entryid)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00739">remmina_message_panel.c:739</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a85ca1ca2d0bf9ef29e490c6f4527a954"><div class="ttname"><a href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a></div><div class="ttdeci">void remmina_file_set_string(RemminaFile *remminafile, const gchar *setting, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00469">remmina_file.c:469</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a75d5f7d146f04132de722d0b7d09bb7d"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">_RemminaProtocolWidgetPriv::has_error</a></div><div class="ttdeci">gboolean has_error</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00070">remmina_protocol_widget.c:70</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a8c893a5deec9bc446bd89cc9973416c7"><div class="ttname"><a href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a></div><div class="ttdeci">void remmina_file_save(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8c_source.html#l00728">remmina_file.c:728</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a8c125f58aa4fac0e4c88f293e4d4dd74"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74">remmina_protocol_widget_class_init</a></div><div class="ttdeci">static void remmina_protocol_widget_class_init(RemminaProtocolWidgetClass *klass)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00129">remmina_protocol_widget.c:129</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a8c125f58aa4fac0e4c88f293e4d4dd74"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74">remmina_protocol_widget_class_init</a></div><div class="ttdeci">static void remmina_protocol_widget_class_init(RemminaProtocolWidgetClass *klass)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00130">remmina_protocol_widget.c:130</a></div></div>
<div class="ttc" id="rcw_8c_html_aee06df544a91184cba1fe77c6991065a"><div class="ttname"><a href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a></div><div class="ttdeci">void rco_get_monitor_geometry(RemminaConnectionObject *cnnobj, GdkRectangle *sz)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01009">rcw.c:1009</a></div></div>
-<div class="ttc" id="struct___remmina_protocol_widget_priv_html_ae76f074f8613e3f3b01c26eb3ce194f0"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">_RemminaProtocolWidgetPriv::clientkey</a></div><div class="ttdeci">gchar * clientkey</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00100">remmina_protocol_widget.c:100</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a480f842fac65440c367bf3c3d87d2601"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_receives_keystrokes(RemminaProtocolWidget *gp)</div><div class="ttdoc">Check if the plugin accepts keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00499">remmina_protocol_widget.c:499</a></div></div>
+<div class="ttc" id="struct___remmina_protocol_widget_priv_html_ae76f074f8613e3f3b01c26eb3ce194f0"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">_RemminaProtocolWidgetPriv::clientkey</a></div><div class="ttdeci">gchar * clientkey</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00101">remmina_protocol_widget.c:101</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a480f842fac65440c367bf3c3d87d2601"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_receives_keystrokes(RemminaProtocolWidget *gp)</div><div class="ttdoc">Check if the plugin accepts keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00504">remmina_protocol_widget.c:504</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00060">remmina_protocol_widget.c:60</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9bcd0d356c7215dc0f791c9744360705"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a></div><div class="ttdeci">void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02096">remmina_protocol_widget.c:2096</a></div></div>
-<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a9ee011a8e1d09de188018e634aa2bbda"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">remmina_protocol_widget_dialog_mt_data_t::pt_cond</a></div><div class="ttdeci">pthread_cond_t pt_cond</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01490">remmina_protocol_widget.c:1490</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9bcd0d356c7215dc0f791c9744360705"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a></div><div class="ttdeci">void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02102">remmina_protocol_widget.c:2102</a></div></div>
+<div class="ttc" id="structremmina__protocol__widget__dialog__mt__data__t_html_a9ee011a8e1d09de188018e634aa2bbda"><div class="ttname"><a href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">remmina_protocol_widget_dialog_mt_data_t::pt_cond</a></div><div class="ttdeci">pthread_cond_t pt_cond</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01495">remmina_protocol_widget.c:1495</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a1f3297263703b4259c1c9607d710995d"><div class="ttname"><a href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a></div><div class="ttdeci">void remmina_ssh_set_application_error(RemminaSSH *ssh, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00663">remmina_ssh.c:663</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8h_html"><div class="ttname"><a href="remmina__protocol__widget_8h.html">remmina_protocol_widget.h</a></div></div>
<div class="ttc" id="remmina__chat__window_8c_html_a45724aed5474dd741563ffbf89237022"><div class="ttname"><a href="remmina__chat__window_8c.html#a45724aed5474dd741563ffbf89237022">remmina_chat_window_receive</a></div><div class="ttdeci">void remmina_chat_window_receive(RemminaChatWindow *window, const gchar *name, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__chat__window_8c_source.html#l00250">remmina_chat_window.c:250</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a4a3a9ba7422fc302b0b412ac771c9953"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a></div><div class="ttdeci">void remmina_protocol_widget_chat_close(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02023">remmina_protocol_widget.c:2023</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a4a3a9ba7422fc302b0b412ac771c9953"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a></div><div class="ttdeci">void remmina_protocol_widget_chat_close(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02029">remmina_protocol_widget.c:2029</a></div></div>
<div class="ttc" id="remmina__public_8c_html_adc8b77823386e00e610527d6b0b61149"><div class="ttname"><a href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a></div><div class="ttdeci">void remmina_public_get_server_port(const gchar *server, gint defaultport, gchar **host, gint *port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00422">remmina_public.c:422</a></div></div>
<div class="ttc" id="types_8h_html_a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724"><div class="ttname"><a href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00148">types.h:148</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a52b3f47eac79f2781ba81d61505f4f53"><div class="ttname"><a href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a></div><div class="ttdeci">gboolean remmina_ssh_tunnel_open(RemminaSSHTunnel *tunnel, const gchar *host, gint port, gint local_port)</div></div>
<div class="ttc" id="struct___remmina_plugin_screenshot_data_html"><div class="ttname"><a href="struct___remmina_plugin_screenshot_data.html">_RemminaPluginScreenshotData</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00083">types.h:83</a></div></div>
<div class="ttc" id="remmina__chat__window_8c_html_a5e4fa655fddf361fed13bbd759bea24f"><div class="ttname"><a href="remmina__chat__window_8c.html#a5e4fa655fddf361fed13bbd759bea24f">remmina_chat_window_new</a></div><div class="ttdeci">GtkWidget * remmina_chat_window_new(GtkWindow *parent, const gchar *chat_with)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__chat__window_8c_source.html#l00159">remmina_chat_window.c:159</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779"><div class="ttname"><a href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00060">remmina_message_panel.h:60</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a76ad91e7f8648699f71c466e203aa6dd"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection_real(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00242">remmina_protocol_widget.c:242</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01471">remmina_protocol_widget.c:1471</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a76ad91e7f8648699f71c466e203aa6dd"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection_real(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00243">remmina_protocol_widget.c:243</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01476">remmina_protocol_widget.c:1476</a></div></div>
<div class="ttc" id="structremmina__masterthread__exec__data_html_ab3d58f7a9847ce04c9dcd3917910fdb1"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">remmina_masterthread_exec_data::func</a></div><div class="ttdeci">enum remmina_masterthread_exec_data::@11 func</div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a5cbea00dcc608759fcf66186e6afde93"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">_RemminaProtocolWidgetPriv::width</a></div><div class="ttdeci">gint width</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00065">remmina_protocol_widget.c:65</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a071153b511500c3faa6804ebd76aeba1"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">_RemminaSSHTunnel::localdisplay</a></div><div class="ttdeci">gchar * localdisplay</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00173">remmina_ssh.h:173</a></div></div>
<div class="ttc" id="types_8h_html_afae2f546eaf9ef8a816a804e830055bf"><div class="ttname"><a href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a></div><div class="ttdeci">gboolean(* RemminaXPortTunnelInitFunc)(RemminaProtocolWidget *gp, gint remotedisplay, const gchar *server, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00095">types.h:95</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_af7db7b9f49fe6b83b17471116d363d40"><div class="ttname"><a href="remmina__message__panel_8c.html#af7db7b9f49fe6b83b17471116d363d40">remmina_message_panel_response</a></div><div class="ttdeci">void remmina_message_panel_response(RemminaMessagePanel *mp, gint response_id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00793">remmina_message_panel.c:793</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a66263e6e7da79357ceb80d32b191d9f2"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a></div><div class="ttdeci">void remmina_protocol_widget_chat_open(RemminaProtocolWidget *gp, const gchar *name, void(*on_send)(RemminaProtocolWidget *gp, const gchar *text), void(*on_destroy)(RemminaProtocolWidget *gp))</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02007">remmina_protocol_widget.c:2007</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a66263e6e7da79357ceb80d32b191d9f2"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a></div><div class="ttdeci">void remmina_protocol_widget_chat_open(RemminaProtocolWidget *gp, const gchar *name, void(*on_send)(RemminaProtocolWidget *gp, const gchar *text), void(*on_destroy)(RemminaProtocolWidget *gp))</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02013">remmina_protocol_widget.c:2013</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_a7015155d2b1db3e74de4d4d5ef7cca55"><div class="ttname"><a href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a></div><div class="ttdeci">RemminaMessagePanel * remmina_message_panel_new()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00087">remmina_message_panel.c:87</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a9abdee80580cddd54405d0577e459c2c"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">_RemminaProtocolFeature::opt3_type_hint</a></div><div class="ttdeci">RemminaTypeHint opt3_type_hint</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00080">types.h:80</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a41a28954660d2d3816630e2ef9bb4211"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">_RemminaProtocolWidgetPriv::init_func</a></div><div class="ttdeci">RemminaTunnelInitFunc init_func</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00075">remmina_protocol_widget.c:75</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_aa904bb1d9f643f6fde2b0eea4a8b1660"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">_RemminaSSHTunnel::connect_func</a></div><div class="ttdeci">RemminaSSHTunnelCallback connect_func</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00176">remmina_ssh.h:176</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01825">remmina_protocol_widget.c:1825</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01830">remmina_protocol_widget.c:1830</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a624b8ac30ddcd00ebda0b51d504f5a33"><div class="ttname"><a href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a></div><div class="ttdeci">gboolean remmina_ssh_init_session(RemminaSSH *ssh)</div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a8700f21cfca6167fc9c4abe37c2d99b6"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">_RemminaProtocolWidgetPriv::closed</a></div><div class="ttdeci">gboolean closed</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00079">remmina_protocol_widget.c:79</a></div></div>
</div><!-- fragment --></div><!-- contents -->
diff --git a/public/remmina__protocol__widget_8h.html b/public/remmina__protocol__widget_8h.html
index 74b074ce9..08d4d514b 100644
--- a/public/remmina__protocol__widget_8h.html
+++ b/public/remmina__protocol__widget_8h.html
@@ -345,7 +345,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00806">806</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00811">811</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -381,7 +381,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00793">793</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00798">798</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -401,7 +401,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02023">2023</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02029">2029</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -443,7 +443,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02007">2007</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02013">2013</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -473,7 +473,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02030">2030</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02036">2036</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -493,7 +493,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00464">464</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00469">469</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -513,7 +513,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00456">456</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00461">461</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -543,7 +543,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00743">743</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00748">748</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -563,7 +563,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01849">1849</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01854">1854</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -583,7 +583,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01858">1858</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01863">1863</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -603,7 +603,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01867">1867</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01872">1872</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -623,7 +623,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01876">1876</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01881">1881</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -643,7 +643,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01408">1408</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01413">1413</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -663,7 +663,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01837">1837</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01842">1842</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -683,7 +683,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01439">1439</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01444">1444</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -703,7 +703,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01420">1420</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01425">1425</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -723,7 +723,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00764">764</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00769">769</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -743,7 +743,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01471">1471</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01476">1476</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -763,7 +763,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02077">2077</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02083">2083</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -783,7 +783,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01396">1396</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01401">1401</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -803,7 +803,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01362">1362</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01367">1367</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -823,7 +823,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01378">1378</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01383">1383</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -843,7 +843,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01831">1831</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01836">1836</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -863,7 +863,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01371">1371</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01376">1376</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -883,7 +883,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01355">1355</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01360">1360</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -903,7 +903,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01843">1843</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01848">1848</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -941,7 +941,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01825">1825</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01830">1830</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -961,7 +961,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01384">1384</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01389">1389</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -981,7 +981,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00216">216</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00217">217</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1001,7 +1001,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02082">2082</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02088">2088</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1021,7 +1021,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01433">1433</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01438">1438</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1041,7 +1041,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01465">1465</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01470">1470</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1061,7 +1061,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00433">433</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00438">438</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1081,7 +1081,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00719">719</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00724">724</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1111,7 +1111,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00890">890</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00895">895</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1153,7 +1153,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00865">865</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00870">870</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1173,7 +1173,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02087">2087</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02093">2093</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1193,7 +1193,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00315">315</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00316">316</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1253,7 +1253,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01689">1689</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01694">1694</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1289,7 +1289,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01697">1697</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01702">1702</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1309,7 +1309,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01751">1751</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01756">1756</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1357,7 +1357,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01791">1791</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01796">1796</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1395,7 +1395,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01995">1995</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02001">2001</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1437,7 +1437,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01759">1759</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01764">1764</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1467,7 +1467,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01684">1684</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01689">1689</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1487,7 +1487,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01989">1989</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01995">1995</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1517,7 +1517,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01939">1939</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01944">1944</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1537,7 +1537,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01968">1968</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01973">1973</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1559,7 +1559,7 @@ Functions</h2></td></tr>
<p>Check if the plugin accepts keystrokes. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00499">499</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00504">504</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1589,7 +1589,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00708">708</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00713">713</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1619,7 +1619,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00787">787</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00792">792</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1649,7 +1649,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00770">770</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00775">775</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1679,7 +1679,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00852">852</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00857">857</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1699,7 +1699,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01885">1885</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01890">1890</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1729,7 +1729,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00694">694</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00699">699</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1771,7 +1771,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02096">2096</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02102">2102</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1803,7 +1803,7 @@ Functions</h2></td></tr>
<p>Send to the plugin some keystrokes. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00507">507</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00512">512</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1833,7 +1833,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01414">1414</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01419">1419</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1863,7 +1863,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01342">1342</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01347">1347</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1899,7 +1899,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01445">1445</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01450">1450</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1929,7 +1929,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01426">1426</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01431">1431</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1959,7 +1959,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01402">1402</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01407">1407</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -1989,7 +1989,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00859">859</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00864">864</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2019,7 +2019,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01390">1390</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01395">1395</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2055,7 +2055,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02052">2052</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02058">2058</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2075,7 +2075,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00359">359</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00360">360</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2095,7 +2095,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00391">391</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00396">396</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2137,7 +2137,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01190">1190</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01195">1195</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2175,7 +2175,7 @@ Functions</h2></td></tr>
<p>Start an SSH tunnel if possible and return the host:port string. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01057">1057</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01062">1062</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2205,7 +2205,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01159">1159</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01164">1164</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2235,7 +2235,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01297">1297</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01302">1302</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2255,7 +2255,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00440">440</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00445">445</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2275,7 +2275,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00731">731</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00736">736</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2295,7 +2295,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00408">408</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00413">413</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -2315,7 +2315,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02136">2136</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l02142">2142</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__protocol__widget_8h_source.html b/public/remmina__protocol__widget_8h_source.html
index 458d7499e..76a64e459 100644
--- a/public/remmina__protocol__widget_8h_source.html
+++ b/public/remmina__protocol__widget_8h_source.html
@@ -86,109 +86,109 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8h_source.ht
<div class="title">remmina_protocol_widget.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__protocol__widget_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_FEATURE_TOOL_SSH -1</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_FEATURE_TOOL_SFTP -2</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define REMMINA_TYPE_PROTOCOL_WIDGET (remmina_protocol_widget_get_type())</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), REMMINA_TYPE_PROTOCOL_WIDGET, RemminaProtocolWidget))</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), REMMINA_TYPE_PROTOCOL_WIDGET, RemminaProtocolWidgetClass))</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define REMMINA_IS_PROTOCOL_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), REMMINA_TYPE_PROTOCOL_WIDGET))</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#define REMMINA_IS_PROTOCOL_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), REMMINA_TYPE_PROTOCOL_WIDGET))</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), REMMINA_TYPE_PROTOCOL_WIDGET, RemminaProtocolWidgetClass))</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#af0c9f34cf823d03994aacc083d832c19"> 55</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a> <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2dbd7c9006318dd027d5a5f0b4f59f26"> 56</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html"> 58</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a> {</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#a95ded9fdbd7d1180d9172c9a1eeb9bfc"> 59</a></span>&#160; GtkEventBox <a class="code" href="struct___remmina_protocol_widget.html#a95ded9fdbd7d1180d9172c9a1eeb9bfc">event_box</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67"> 60</a></span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> * <a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6"> 61</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a> * <a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c"> 62</a></span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> * <a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html"> 65</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a> {</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#aa6b1be03dfc5554195f6fbc9bb4f50f2"> 66</a></span>&#160; GtkEventBoxClass <a class="code" href="struct___remmina_protocol_widget_class.html#aa6b1be03dfc5554195f6fbc9bb4f50f2">parent_class</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#a5cf457e2e48c9c2b831b0c8a4f88c760"> 68</a></span>&#160; void (*connect)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#a5d723669f6520949e5e0b47e8f2c5213"> 69</a></span>&#160; void (*disconnect)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#afab4068813bba5630bed6b6000dacb1b"> 70</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#acbb1fd035466ac82e208e76adfaf9e99"> 71</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#ac646886d6110e3050a48b6a29e183b2c"> 72</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#a49409472ef2062977ac80f236de454d3"> 73</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;};</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;GType <a class="code" href="remmina__protocol__widget_8h.html#aca61c93aaf5f3cbc2046c8267bb84a2e">remmina_protocol_widget_get_type</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;G_GNUC_CONST;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;GtkWindow* <a class="code" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;GtkWidget* <a class="code" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">const</span> gchar* <a class="code" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint width);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint height);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean expand);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *fmt, ...);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *<a class="code" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type, gint <span class="keywordtype">id</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">/* Provide thread-safe way to emit signals */</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *signal_name);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkWidget *widget);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390"> 122</a></span>&#160;<span class="keyword">typedef</span> gboolean (*<a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, guint keyval, gboolean release);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> func);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean wait, <span class="keyword">const</span> gchar *fmt, ...);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">/* Start a SSH tunnel if it’s enabled. Returns a newly allocated string indicating:</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * 1. The actual destination (host:port) if SSH tunnel is disable</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * 2. The tunnel local destination (127.0.0.1:port) if SSH tunnel is enabled</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint default_port, gboolean port_plus);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint local_port);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a> init_func);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint display);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">/* Extension for remmina_protocol_widget_panel_authuserpwd() not currently exported to plugins */</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean want_domain, gboolean allow_password_saving);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">/* Dialog panel API used by the plugins */</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> pflags, <span class="keyword">const</span> gchar *title, <span class="keyword">const</span> gchar *default_username, <span class="keyword">const</span> gchar *default_password, <span class="keyword">const</span> gchar *default_domain, <span class="keyword">const</span> gchar *password_prompt);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *fingerprint);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *new_fingerprint, <span class="keyword">const</span> gchar *old_fingerprint);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a78069d2e4c2773685126fc3127b26dae">remmina_protocol_widget_panel_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint port);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *name, <span class="keywordtype">void</span> (*on_send)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text), <span class="keywordtype">void</span> (*on_destroy)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>(GtkWidget *widget, <span class="keyword">const</span> guint *keyvals, <span class="keywordtype">int</span> keyvals_length, GdkEventType action);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">/* Check if the plugin accepts keystrokes */</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">/* Send to the plugin some keystrokes */</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">/* Take screenshot of plugin */</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="struct___remmina_plugin_screenshot_data.html">RemminaPluginScreenshotData</a> *rpsd);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment">/* Deal with the remimna connection window map/unmap events */</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">/* Functions to support execution of GTK code on master thread */</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;RemminaMessagePanel *<a class="code" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, <span class="keyword">const</span> gchar *msg, <a class="code" href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a> response_callback, gpointer response_callback_data);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, RemminaMessagePanel *mp);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;G_END_DECLS</div><div class="ttc" id="remmina__protocol__widget_8h_html_a9d55210413d6a313478f81cf76ecf1b7"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a></div><div class="ttdeci">gchar * remmina_protocol_widget_start_direct_tunnel(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)</div><div class="ttdoc">Start an SSH tunnel if possible and return the host:port string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01057">remmina_protocol_widget.c:1057</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aeaf728bb767c1bbdda6a0d8dc3553565"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a></div><div class="ttdeci">static gboolean desktop_resize(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00447">remmina_protocol_widget.c:447</a></div></div>
+<a href="remmina__protocol__widget_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Remmina - The GTK+ Remote Desktop Client</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2009-2011 Vic Lee</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Copyright (C) 2016-2023 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * version of the file(s), but you are not obligated to do so. * If you</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rcw_8h.html">rcw.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__file_8h.html">remmina_file.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_FEATURE_TOOL_SSH -1</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_FEATURE_TOOL_SFTP -2</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define REMMINA_TYPE_PROTOCOL_WIDGET (remmina_protocol_widget_get_type())</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), REMMINA_TYPE_PROTOCOL_WIDGET, RemminaProtocolWidget))</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), REMMINA_TYPE_PROTOCOL_WIDGET, RemminaProtocolWidgetClass))</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define REMMINA_IS_PROTOCOL_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), REMMINA_TYPE_PROTOCOL_WIDGET))</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#define REMMINA_IS_PROTOCOL_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), REMMINA_TYPE_PROTOCOL_WIDGET))</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#define REMMINA_PROTOCOL_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), REMMINA_TYPE_PROTOCOL_WIDGET, RemminaProtocolWidgetClass))</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#af0c9f34cf823d03994aacc083d832c19"> 55</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a> <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2dbd7c9006318dd027d5a5f0b4f59f26"> 56</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html"> 58</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a> {</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#a95ded9fdbd7d1180d9172c9a1eeb9bfc"> 59</a></span>&#160; GtkEventBox <a class="code" href="struct___remmina_protocol_widget.html#a95ded9fdbd7d1180d9172c9a1eeb9bfc">event_box</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67"> 60</a></span>&#160; <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> * <a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6"> 61</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a> * <a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c"> 62</a></span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> * <a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html"> 65</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a> {</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#aa6b1be03dfc5554195f6fbc9bb4f50f2"> 66</a></span>&#160; GtkEventBoxClass <a class="code" href="struct___remmina_protocol_widget_class.html#aa6b1be03dfc5554195f6fbc9bb4f50f2">parent_class</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#a5cf457e2e48c9c2b831b0c8a4f88c760"> 68</a></span>&#160; void (*connect)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#a5d723669f6520949e5e0b47e8f2c5213"> 69</a></span>&#160; void (*disconnect)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#afab4068813bba5630bed6b6000dacb1b"> 70</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#acbb1fd035466ac82e208e76adfaf9e99"> 71</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#ac646886d6110e3050a48b6a29e183b2c"> 72</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_class.html#a49409472ef2062977ac80f236de454d3"> 73</a></span>&#160; void (*<a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;};</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;GType <a class="code" href="remmina__protocol__widget_8h.html#aca61c93aaf5f3cbc2046c8267bb84a2e">remmina_protocol_widget_get_type</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;G_GNUC_CONST;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;GtkWindow* <a class="code" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;GtkWidget* <a class="code" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">const</span> gchar* <a class="code" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint width);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint height);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scalemode);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean expand);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *fmt, ...);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *<a class="code" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type, gint <span class="keywordtype">id</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">/* Provide thread-safe way to emit signals */</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *signal_name);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkWidget *widget);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390"> 122</a></span>&#160;<span class="keyword">typedef</span> gboolean (*<a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a>)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, guint keyval, gboolean release);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> func);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean wait, <span class="keyword">const</span> gchar *fmt, ...);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">/* Start a SSH tunnel if it’s enabled. Returns a newly allocated string indicating:</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * 1. The actual destination (host:port) if SSH tunnel is disable</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * 2. The tunnel local destination (127.0.0.1:port) if SSH tunnel is enabled</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint default_port, gboolean port_plus);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint local_port);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a> init_func);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint display);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">/* Extension for remmina_protocol_widget_panel_authuserpwd() not currently exported to plugins */</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean want_domain, gboolean allow_password_saving);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">/* Dialog panel API used by the plugins */</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> pflags, <span class="keyword">const</span> gchar *title, <span class="keyword">const</span> gchar *default_username, <span class="keyword">const</span> gchar *default_password, <span class="keyword">const</span> gchar *default_domain, <span class="keyword">const</span> gchar *password_prompt);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *fingerprint);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *new_fingerprint, <span class="keyword">const</span> gchar *old_fingerprint);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a78069d2e4c2773685126fc3127b26dae">remmina_protocol_widget_panel_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;gint <a class="code" href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint port);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *name, <span class="keywordtype">void</span> (*on_send)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text), <span class="keywordtype">void</span> (*on_destroy)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>(GtkWidget *widget, <span class="keyword">const</span> guint *keyvals, <span class="keywordtype">int</span> keyvals_length, GdkEventType action);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">/* Check if the plugin accepts keystrokes */</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">/* Send to the plugin some keystrokes */</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">/* Take screenshot of plugin */</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="struct___remmina_plugin_screenshot_data.html">RemminaPluginScreenshotData</a> *rpsd);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment">/* Deal with the remimna connection window map/unmap events */</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">/* Functions to support execution of GTK code on master thread */</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;RemminaMessagePanel *<a class="code" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, <span class="keyword">const</span> gchar *msg, <a class="code" href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a> response_callback, gpointer response_callback_data);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, RemminaMessagePanel *mp);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;G_END_DECLS</div><div class="ttc" id="remmina__protocol__widget_8h_html_a9d55210413d6a313478f81cf76ecf1b7"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a></div><div class="ttdeci">gchar * remmina_protocol_widget_start_direct_tunnel(RemminaProtocolWidget *gp, gint default_port, gboolean port_plus)</div><div class="ttdoc">Start an SSH tunnel if possible and return the host:port string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01062">remmina_protocol_widget.c:1062</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aeaf728bb767c1bbdda6a0d8dc3553565"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a></div><div class="ttdeci">static gboolean desktop_resize(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00452">remmina_protocol_widget.c:452</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_class_html_aa6b1be03dfc5554195f6fbc9bb4f50f2"><div class="ttname"><a href="struct___remmina_protocol_widget_class.html#aa6b1be03dfc5554195f6fbc9bb4f50f2">_RemminaProtocolWidgetClass::parent_class</a></div><div class="ttdeci">GtkEventBoxClass parent_class</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00066">remmina_protocol_widget.h:66</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a262d75d6b535bd8c623e607805db4084"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_new_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01759">remmina_protocol_widget.c:1759</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00216">remmina_protocol_widget.c:216</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a36e01bda95825ee6b5f164f52af7c457"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_lock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00433">remmina_protocol_widget.c:433</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_ab2b4a7c615a472ad391d1c06ea1f00cc"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a></div><div class="ttdeci">static gboolean lock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00415">remmina_protocol_widget.c:415</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a1cae52cad394f317c712eb4fd709d261"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00359">remmina_protocol_widget.c:359</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_add3775989fb5ed7a7f1f7c9b5980a94e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a></div><div class="ttdeci">static gboolean unlock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00424">remmina_protocol_widget.c:424</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a262d75d6b535bd8c623e607805db4084"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_new_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01764">remmina_protocol_widget.c:1764</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00217">remmina_protocol_widget.c:217</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a36e01bda95825ee6b5f164f52af7c457"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_lock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00438">remmina_protocol_widget.c:438</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_ab2b4a7c615a472ad391d1c06ea1f00cc"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a></div><div class="ttdeci">static gboolean lock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00420">remmina_protocol_widget.c:420</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a1cae52cad394f317c712eb4fd709d261"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00360">remmina_protocol_widget.c:360</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_add3775989fb5ed7a7f1f7c9b5980a94e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a></div><div class="ttdeci">static gboolean unlock_dynres(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00429">remmina_protocol_widget.c:429</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html"><div class="ttname"><a href="remmina__ssh_8h.html">remmina_ssh.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01843">remmina_protocol_widget.c:1843</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a08d312825fc0de9f9286279d99f763a1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientkey(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01876">remmina_protocol_widget.c:1876</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a4a3a9ba7422fc302b0b412ac771c9953"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a></div><div class="ttdeci">void remmina_protocol_widget_chat_close(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02023">remmina_protocol_widget.c:2023</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01848">remmina_protocol_widget.c:1848</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a08d312825fc0de9f9286279d99f763a1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientkey(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01881">remmina_protocol_widget.c:1881</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a4a3a9ba7422fc302b0b412ac771c9953"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a></div><div class="ttdeci">void remmina_protocol_widget_chat_close(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02029">remmina_protocol_widget.c:2029</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01408">remmina_protocol_widget.c:1408</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_acf40f566116cf43af26891cd37af4eb1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a></div><div class="ttdeci">void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00694">remmina_protocol_widget.c:694</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ad637ec849c497e4a0d4c723396aa6fba"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authuserpwd_ssh_tunnel(RemminaProtocolWidget *gp, gboolean want_domain, gboolean allow_password_saving)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01697">remmina_protocol_widget.c:1697</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02030">remmina_protocol_widget.c:2030</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a12eddf3428a53201ee0a2ec422d2fa4a"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a></div><div class="ttdeci">gboolean remmina_protocol_widget_ssh_exec(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01190">remmina_protocol_widget.c:1190</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a843c2455a10c9382aee454515f9e7f8b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01989">remmina_protocol_widget.c:1989</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01885">remmina_protocol_widget.c:1885</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01413">remmina_protocol_widget.c:1413</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_acf40f566116cf43af26891cd37af4eb1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a></div><div class="ttdeci">void remmina_protocol_widget_send_clipboard(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00699">remmina_protocol_widget.c:699</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ad637ec849c497e4a0d4c723396aa6fba"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authuserpwd_ssh_tunnel(RemminaProtocolWidget *gp, gboolean want_domain, gboolean allow_password_saving)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01702">remmina_protocol_widget.c:1702</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ae2522242b3f39ee84ee8cf75170de0c0"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a></div><div class="ttdeci">void remmina_protocol_widget_chat_receive(RemminaProtocolWidget *gp, const gchar *text)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02036">remmina_protocol_widget.c:2036</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a12eddf3428a53201ee0a2ec422d2fa4a"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a></div><div class="ttdeci">gboolean remmina_protocol_widget_ssh_exec(RemminaProtocolWidget *gp, gboolean wait, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01195">remmina_protocol_widget.c:1195</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a843c2455a10c9382aee454515f9e7f8b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ab863cc1442a992adfa323bc77ab88504"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a></div><div class="ttdeci">void remmina_protocol_widget_save_cred(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01890">remmina_protocol_widget.c:1890</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html"><div class="ttname"><a href="struct___remmina_connection_object.html">_RemminaConnectionObject</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00162">rcw.c:162</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01465">remmina_protocol_widget.c:1465</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aa6d9f2f558fcd9e7fe58eefcde1c3c5c"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_reverse_tunnel(RemminaProtocolWidget *gp, gint local_port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01159">remmina_protocol_widget.c:1159</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a4017a800d7803a40d606ffce2578509a"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00787">remmina_protocol_widget.c:787</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a2830f756dfc3d735b57b0c5753c429e3"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a></div><div class="ttdeci">gboolean remmina_protocol_widget_is_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01470">remmina_protocol_widget.c:1470</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aa6d9f2f558fcd9e7fe58eefcde1c3c5c"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_reverse_tunnel(RemminaProtocolWidget *gp, gint local_port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01164">remmina_protocol_widget.c:1164</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a4017a800d7803a40d606ffce2578509a"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00792">remmina_protocol_widget.c:792</a></div></div>
<div class="ttc" id="struct___remmina_protocol_plugin_html"><div class="ttname"><a href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00065">plugin.h:65</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01396">remmina_protocol_widget.c:1396</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a13e14fa81f7ca52942415a7caf5b932c"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a></div><div class="ttdeci">void remmina_protocol_widget_register_hostkey(RemminaProtocolWidget *gp, GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00852">remmina_protocol_widget.c:852</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a97cba8208a4348446159bf465b3233f5"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a></div><div class="ttdeci">void remmina_protocol_widget_mpdestroy(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00890">remmina_protocol_widget.c:890</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a9473da27fd10eb46ef8360f9ad4be86d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01849">remmina_protocol_widget.c:1849</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a5c2137462d3168e90c812f1ce75a6e62"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02087">remmina_protocol_widget.c:2087</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ae609b351fff17c235251b0ba7c480da5"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01401">remmina_protocol_widget.c:1401</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a13e14fa81f7ca52942415a7caf5b932c"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a></div><div class="ttdeci">void remmina_protocol_widget_register_hostkey(RemminaProtocolWidget *gp, GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00857">remmina_protocol_widget.c:857</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a97cba8208a4348446159bf465b3233f5"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a></div><div class="ttdeci">void remmina_protocol_widget_mpdestroy(RemminaConnectionObject *cnnobj, RemminaMessagePanel *mp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00895">remmina_protocol_widget.c:895</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a9473da27fd10eb46ef8360f9ad4be86d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01854">remmina_protocol_widget.c:1854</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a5c2137462d3168e90c812f1ce75a6e62"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02093">remmina_protocol_widget.c:2093</a></div></div>
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a></div><div class="ttdeci">RemminaMessagePanelFlags</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00155">types.h:155</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ac705ffa194e3c3457e9a0a1bd6c79be8"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a></div><div class="ttdeci">void remmina_protocol_widget_setup(RemminaProtocolWidget *gp, RemminaFile *remminafile, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02052">remmina_protocol_widget.c:2052</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_affb2413c00f0681fe08f90523f7e1471"><div class="ttname"><a href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_keystrokes(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdoc">Send to the plugin some keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00507">remmina_protocol_widget.c:507</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a480f842fac65440c367bf3c3d87d2601"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_receives_keystrokes(RemminaProtocolWidget *gp)</div><div class="ttdoc">Check if the plugin accepts keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00499">remmina_protocol_widget.c:499</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a8127b4cc7c278216dff87a7e4a336dfb"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a></div><div class="ttdeci">GtkWindow * remmina_protocol_widget_get_gtkwindow(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02077">remmina_protocol_widget.c:2077</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ac705ffa194e3c3457e9a0a1bd6c79be8"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a></div><div class="ttdeci">void remmina_protocol_widget_setup(RemminaProtocolWidget *gp, RemminaFile *remminafile, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02058">remmina_protocol_widget.c:2058</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_affb2413c00f0681fe08f90523f7e1471"><div class="ttname"><a href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a></div><div class="ttdeci">void remmina_protocol_widget_send_keystrokes(RemminaProtocolWidget *gp, GtkMenuItem *widget)</div><div class="ttdoc">Send to the plugin some keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00512">remmina_protocol_widget.c:512</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a480f842fac65440c367bf3c3d87d2601"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_receives_keystrokes(RemminaProtocolWidget *gp)</div><div class="ttdoc">Check if the plugin accepts keystrokes. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00504">remmina_protocol_widget.c:504</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a8127b4cc7c278216dff87a7e4a336dfb"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a></div><div class="ttdeci">GtkWindow * remmina_protocol_widget_get_gtkwindow(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02083">remmina_protocol_widget.c:2083</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html_aa7b9f54b6bb8bb01c24a8740b9c3633c"><div class="ttname"><a href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">_RemminaProtocolWidget::plugin</a></div><div class="ttdeci">RemminaProtocolPlugin * plugin</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00062">remmina_protocol_widget.h:62</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8h_html_a78069d2e4c2773685126fc3127b26dae"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a78069d2e4c2773685126fc3127b26dae">remmina_protocol_widget_panel_destroy</a></div><div class="ttdeci">void remmina_protocol_widget_panel_destroy(RemminaProtocolWidget *gp)</div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01297">remmina_protocol_widget.c:1297</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ad6e2d00646e8268aa0e8bbe31b77db48"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a></div><div class="ttdeci">void remmina_protocol_widget_set_current_scale_mode(RemminaProtocolWidget *gp, RemminaScaleMode scalemode)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01414">remmina_protocol_widget.c:1414</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00456">remmina_protocol_widget.c:456</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a172fa9cf2ce196c9846a3e47ea9036b4"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a></div><div class="ttdeci">gboolean remmina_protocol_widget_start_xport_tunnel(RemminaProtocolWidget *gp, RemminaXPortTunnelInitFunc init_func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01302">remmina_protocol_widget.c:1302</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ad6e2d00646e8268aa0e8bbe31b77db48"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a></div><div class="ttdeci">void remmina_protocol_widget_set_current_scale_mode(RemminaProtocolWidget *gp, RemminaScaleMode scalemode)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01419">remmina_protocol_widget.c:1419</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00461">remmina_protocol_widget.c:461</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html"><div class="ttname"><a href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00058">remmina_protocol_widget.h:58</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html_a18a9b0b9c8e619b3bdee881d7601f6d6"><div class="ttname"><a href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">_RemminaProtocolWidget::priv</a></div><div class="ttdeci">RemminaProtocolWidgetPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00061">remmina_protocol_widget.h:61</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01433">remmina_protocol_widget.c:1433</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aab2f304822ccfd4979854ef1afd81771"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a></div><div class="ttdeci">gboolean remmina_protocol_widget_has_error(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01438">remmina_protocol_widget.c:1438</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html"><div class="ttname"><a href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00072">types.h:72</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8h_html_ab89fba118812616a3e47504cfe4f3390"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a></div><div class="ttdeci">gboolean(* RemminaHostkeyFunc)(RemminaProtocolWidget *gp, guint keyval, gboolean release)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00122">remmina_protocol_widget.h:122</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01939">remmina_protocol_widget.c:1939</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00708">remmina_protocol_widget.c:708</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01944">remmina_protocol_widget.c:1944</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00713">remmina_protocol_widget.c:713</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html_a95ded9fdbd7d1180d9172c9a1eeb9bfc"><div class="ttname"><a href="struct___remmina_protocol_widget.html#a95ded9fdbd7d1180d9172c9a1eeb9bfc">_RemminaProtocolWidget::event_box</a></div><div class="ttdeci">GtkEventBox event_box</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00059">remmina_protocol_widget.h:59</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_html_aae1dfb6ff52460c80a3adf80d4934f67"><div class="ttname"><a href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">_RemminaProtocolWidget::cnnobj</a></div><div class="ttdeci">RemminaConnectionObject * cnnobj</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00060">remmina_protocol_widget.h:60</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a70aecb9af2ea35527e8d058d1d87a0d3"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacrl(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01858">remmina_protocol_widget.c:1858</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a508044024b303c286a0e643e44d85a29"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_error_message(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01439">remmina_protocol_widget.c:1439</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aadd106cec729a80405c6097e4c662044"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a></div><div class="ttdeci">void remmina_protocol_widget_set_height(RemminaProtocolWidget *gp, gint height)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01402">remmina_protocol_widget.c:1402</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a9092c29f585fdabaf0ce7e865670053b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_question_yesno(RemminaProtocolWidget *gp, const char *msg)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01684">remmina_protocol_widget.c:1684</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01371">remmina_protocol_widget.c:1371</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01995">remmina_protocol_widget.c:1995</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ab224a0f643d291f86ede54e373bd0a6f"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_name(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01378">remmina_protocol_widget.c:1378</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ab9632c73b32531b7bea976e10204670b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientcert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01867">remmina_protocol_widget.c:1867</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a70aecb9af2ea35527e8d058d1d87a0d3"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_cacrl(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01863">remmina_protocol_widget.c:1863</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a508044024b303c286a0e643e44d85a29"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_error_message(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01444">remmina_protocol_widget.c:1444</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aadd106cec729a80405c6097e4c662044"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a></div><div class="ttdeci">void remmina_protocol_widget_set_height(RemminaProtocolWidget *gp, gint height)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01407">remmina_protocol_widget.c:1407</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a9092c29f585fdabaf0ce7e865670053b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_question_yesno(RemminaProtocolWidget *gp, const char *msg)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ad8df6a87e19b7751b26820ef4a668de9"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_height(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01376">remmina_protocol_widget.c:1376</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a8ef0523afadadc9984d53fb02ecc01ad"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a></div><div class="ttdeci">void remmina_protocol_widget_panel_hide(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02001">remmina_protocol_widget.c:2001</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ab224a0f643d291f86ede54e373bd0a6f"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_name(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01383">remmina_protocol_widget.c:1383</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ab9632c73b32531b7bea976e10204670b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_clientcert(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01872">remmina_protocol_widget.c:1872</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a></div><div class="ttdeci">RemminaProtocolFeatureType</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00046">types.h:46</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01831">remmina_protocol_widget.c:1831</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01836">remmina_protocol_widget.c:1836</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_class_html"><div class="ttname"><a href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8h_source.html#l00065">remmina_protocol_widget.h:65</a></div></div>
<div class="ttc" id="remmina__message__panel_8h_html_ae2923c94c1caf1ac4a7eb48361d2670a"><div class="ttname"><a href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a></div><div class="ttdeci">void(* RemminaMessagePanelCallback)(void *user_data, int button)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8h_source.html#l00067">remmina_message_panel.h:67</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8h_html_aca61c93aaf5f3cbc2046c8267bb84a2e"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aca61c93aaf5f3cbc2046c8267bb84a2e">remmina_protocol_widget_get_type</a></div><div class="ttdeci">GType remmina_protocol_widget_get_type(void) G_GNUC_CONST</div></div>
<div class="ttc" id="rcw_8h_html"><div class="ttname"><a href="rcw_8h.html">rcw.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01426">remmina_protocol_widget.c:1426</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a0b19dbe685e4465e7f06706270e120fa"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a></div><div class="ttdeci">void remmina_protocol_widget_set_expand(RemminaProtocolWidget *gp, gboolean expand)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01431">remmina_protocol_widget.c:1431</a></div></div>
<div class="ttc" id="types_8h_html_aeea5ee1e675368413b6f6ab09883e7de"><div class="ttname"><a href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a></div><div class="ttdeci">RemminaScaleMode</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00141">types.h:141</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a05b5edfc3d3d0dcff1745d1d35aaca5c"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_opened(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00391">remmina_protocol_widget.c:391</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00743">remmina_protocol_widget.c:743</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aa674c14f3a46dd5eb6b53d6f8ce6bd31"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authx509(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01751">remmina_protocol_widget.c:1751</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a2067c19b160eb43bddda6c6c6e8d6045"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_gtkviewport(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02082">remmina_protocol_widget.c:2082</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00464">remmina_protocol_widget.c:464</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01837">remmina_protocol_widget.c:1837</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01825">remmina_protocol_widget.c:1825</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a2551dd6f53480609596d2695040fba5d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_unlock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00440">remmina_protocol_widget.c:440</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a15368afcbeb770f8cf25941bd49e7b54"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a></div><div class="ttdeci">void remmina_protocol_widget_set_display(RemminaProtocolWidget *gp, gint display)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01342">remmina_protocol_widget.c:1342</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a78b123eca6709bceeacda7d791a94bf1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a></div><div class="ttdeci">RemminaMessagePanel * remmina_protocol_widget_mpprogress(RemminaConnectionObject *cnnobj, const gchar *msg, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00865">remmina_protocol_widget.c:865</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a605b69a9aa4393024369cc5070488692"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00806">remmina_protocol_widget.c:806</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01968">remmina_protocol_widget.c:1968</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a95088334da86faf9520383629fff48af"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a></div><div class="ttdeci">void remmina_protocol_widget_set_error(RemminaProtocolWidget *gp, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01445">remmina_protocol_widget.c:1445</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_abdf99138612d02bc3921b0b77bdc89cb"><div class="ttname"><a href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a></div><div class="ttdeci">gint remmina_protocol_widget_get_multimon(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01362">remmina_protocol_widget.c:1362</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ac9da39853a32523057759a498bf6ac0a"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_unmap_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00731">remmina_protocol_widget.c:731</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a8565f01f8b5a3f0ee4518bda5f923f9a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a></div><div class="ttdeci">static gboolean update_align(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00399">remmina_protocol_widget.c:399</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a14684e3222e6afb1b43d77634a174767"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a></div><div class="ttdeci">void remmina_protocol_widget_update_remote_resolution(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02136">remmina_protocol_widget.c:2136</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a9bcd0d356c7215dc0f791c9744360705"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a></div><div class="ttdeci">void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02096">remmina_protocol_widget.c:2096</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00793">remmina_protocol_widget.c:793</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a5aaadd752a3275a0a8e0018a3dd669f8"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a></div><div class="ttdeci">void remmina_protocol_widget_set_hostkey_func(RemminaProtocolWidget *gp, RemminaHostkeyFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00859">remmina_protocol_widget.c:859</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01384">remmina_protocol_widget.c:1384</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a05b5edfc3d3d0dcff1745d1d35aaca5c"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_opened(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00396">remmina_protocol_widget.c:396</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ac3e5a7f14aef4adb2e57d35e9c180b3b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a></div><div class="ttdeci">void remmina_protocol_widget_emit_signal(RemminaProtocolWidget *gp, const gchar *signal_name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00748">remmina_protocol_widget.c:748</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aa674c14f3a46dd5eb6b53d6f8ce6bd31"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authx509(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01756">remmina_protocol_widget.c:1756</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a2067c19b160eb43bddda6c6c6e8d6045"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a></div><div class="ttdeci">GtkWidget * remmina_protocol_widget_gtkviewport(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02088">remmina_protocol_widget.c:2088</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00469">remmina_protocol_widget.c:469</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a7c15fa81642c52ef382e1dbe34ffb6ac"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_domain(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01842">remmina_protocol_widget.c:1842</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01830">remmina_protocol_widget.c:1830</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a2551dd6f53480609596d2695040fba5d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a></div><div class="ttdeci">void remmina_protocol_widget_unlock_dynres(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00445">remmina_protocol_widget.c:445</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a15368afcbeb770f8cf25941bd49e7b54"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a></div><div class="ttdeci">void remmina_protocol_widget_set_display(RemminaProtocolWidget *gp, gint display)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01347">remmina_protocol_widget.c:1347</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a78b123eca6709bceeacda7d791a94bf1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a></div><div class="ttdeci">RemminaMessagePanel * remmina_protocol_widget_mpprogress(RemminaConnectionObject *cnnobj, const gchar *msg, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00870">remmina_protocol_widget.c:870</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a605b69a9aa4393024369cc5070488692"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_ref(RemminaProtocolWidget *gp, const RemminaProtocolFeature *feature)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00811">remmina_protocol_widget.c:811</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a7ed85f4ea19e0660dbf46f4f3dc4b895"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_retry(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01973">remmina_protocol_widget.c:1973</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a95088334da86faf9520383629fff48af"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a></div><div class="ttdeci">void remmina_protocol_widget_set_error(RemminaProtocolWidget *gp, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01450">remmina_protocol_widget.c:1450</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_abdf99138612d02bc3921b0b77bdc89cb"><div class="ttname"><a href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a></div><div class="ttdeci">gint remmina_protocol_widget_get_multimon(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01367">remmina_protocol_widget.c:1367</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ac9da39853a32523057759a498bf6ac0a"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_unmap_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00736">remmina_protocol_widget.c:736</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a8565f01f8b5a3f0ee4518bda5f923f9a"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a></div><div class="ttdeci">static gboolean update_align(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00404">remmina_protocol_widget.c:404</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a14684e3222e6afb1b43d77634a174767"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a></div><div class="ttdeci">void remmina_protocol_widget_update_remote_resolution(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02142">remmina_protocol_widget.c:2142</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a9bcd0d356c7215dc0f791c9744360705"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a></div><div class="ttdeci">void remmina_protocol_widget_send_keys_signals(GtkWidget *widget, const guint *keyvals, int keyvals_length, GdkEventType action)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02102">remmina_protocol_widget.c:2102</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00798">remmina_protocol_widget.c:798</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a5aaadd752a3275a0a8e0018a3dd669f8"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a></div><div class="ttdeci">void remmina_protocol_widget_set_hostkey_func(RemminaProtocolWidget *gp, RemminaHostkeyFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00864">remmina_protocol_widget.c:864</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01389">remmina_protocol_widget.c:1389</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00060">remmina_protocol_widget.c:60</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aa88afa1e3f04974974a8be324b0a930e"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a></div><div class="ttdeci">void remmina_protocol_widget_update_align(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00408">remmina_protocol_widget.c:408</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a1585ea6908dd5c0a9b0f47d409916435"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_map_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00719">remmina_protocol_widget.c:719</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_adbe15328275677cb38bd8c8a2d5e039d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00770">remmina_protocol_widget.c:770</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a66263e6e7da79357ceb80d32b191d9f2"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a></div><div class="ttdeci">void remmina_protocol_widget_chat_open(RemminaProtocolWidget *gp, const gchar *name, void(*on_send)(RemminaProtocolWidget *gp, const gchar *text), void(*on_destroy)(RemminaProtocolWidget *gp))</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02007">remmina_protocol_widget.c:2007</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_af9b6a2c2665010ab09a6d9943f9850bd"><div class="ttname"><a href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a></div><div class="ttdeci">const RemminaProtocolFeature * remmina_protocol_widget_get_features(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00764">remmina_protocol_widget.c:764</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_acf75fd4bac28a3d53da064b2905f23c1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_changed_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01791">remmina_protocol_widget.c:1791</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aa88afa1e3f04974974a8be324b0a930e"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a></div><div class="ttdeci">void remmina_protocol_widget_update_align(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00413">remmina_protocol_widget.c:413</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01694">remmina_protocol_widget.c:1694</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a1585ea6908dd5c0a9b0f47d409916435"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a></div><div class="ttdeci">gboolean remmina_protocol_widget_map_event(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00724">remmina_protocol_widget.c:724</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_adbe15328275677cb38bd8c8a2d5e039d"><div class="ttname"><a href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a></div><div class="ttdeci">gboolean remmina_protocol_widget_query_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00775">remmina_protocol_widget.c:775</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a66263e6e7da79357ceb80d32b191d9f2"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a></div><div class="ttdeci">void remmina_protocol_widget_chat_open(RemminaProtocolWidget *gp, const gchar *name, void(*on_send)(RemminaProtocolWidget *gp, const gchar *text), void(*on_destroy)(RemminaProtocolWidget *gp))</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02013">remmina_protocol_widget.c:2013</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_af9b6a2c2665010ab09a6d9943f9850bd"><div class="ttname"><a href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a></div><div class="ttdeci">const RemminaProtocolFeature * remmina_protocol_widget_get_features(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00769">remmina_protocol_widget.c:769</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_acf75fd4bac28a3d53da064b2905f23c1"><div class="ttname"><a href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_changed_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *new_fingerprint, const gchar *old_fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01796">remmina_protocol_widget.c:1796</a></div></div>
<div class="ttc" id="struct___remmina_plugin_screenshot_data_html"><div class="ttname"><a href="struct___remmina_plugin_screenshot_data.html">_RemminaPluginScreenshotData</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00083">types.h:83</a></div></div>
<div class="ttc" id="types_8h_html_afae2f546eaf9ef8a816a804e830055bf"><div class="ttname"><a href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a></div><div class="ttdeci">gboolean(* RemminaXPortTunnelInitFunc)(RemminaProtocolWidget *gp, gint remotedisplay, const gchar *server, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00095">types.h:95</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01420">remmina_protocol_widget.c:1420</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01425">remmina_protocol_widget.c:1425</a></div></div>
<div class="ttc" id="remmina__file_8h_html"><div class="ttname"><a href="remmina__file_8h.html">remmina_file.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01471">remmina_protocol_widget.c:1471</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a41b62f211a8a8e960bc80aa1ba6b0380"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a></div><div class="ttdeci">void remmina_protocol_widget_set_width(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01390">remmina_protocol_widget.c:1390</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01355">remmina_protocol_widget.c:1355</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8h_html_a6399c3828908e36ed6202b5599bd206b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00315">remmina_protocol_widget.c:315</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01476">remmina_protocol_widget.c:1476</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a41b62f211a8a8e960bc80aa1ba6b0380"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a></div><div class="ttdeci">void remmina_protocol_widget_set_width(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01395">remmina_protocol_widget.c:1395</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01360">remmina_protocol_widget.c:1360</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8h_html_a6399c3828908e36ed6202b5599bd206b"><div class="ttname"><a href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00316">remmina_protocol_widget.c:316</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/public/remmina__ssh_8c_source.html b/public/remmina__ssh_8c_source.html
index f1a854a4d..4738df5c0 100644
--- a/public/remmina__ssh_8c_source.html
+++ b/public/remmina__ssh_8c_source.html
@@ -112,10 +112,10 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="struct___remmina_s_s_h_shell_html_af5c36c45f7e0beedee2e365da48a1331"><div class="ttname"><a href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">_RemminaSSHShell::run_line</a></div><div class="ttdeci">gchar * run_line</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00249">remmina_ssh.h:249</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_a3aaebd7f03b7d8601818fabc46b787ed"><div class="ttname"><a href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">_RemminaSSH::error</a></div><div class="ttdeci">gchar * error</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00080">remmina_ssh.h:80</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_aa34e103281dafaa073d2a676b3368529"><div class="ttname"><a href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">_RemminaSSH::passphrase</a></div><div class="ttdeci">gchar * passphrase</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00084">remmina_ssh.h:84</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_aebc7c7d34c470081a52aa35d998ce868"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_auth(RemminaProtocolWidget *gp, RemminaMessagePanelFlags pflags, const gchar *title, const gchar *default_username, const gchar *default_password, const gchar *default_domain, const gchar *password_prompt)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01694">remmina_protocol_widget.c:1694</a></div></div>
<div class="ttc" id="types_8h_html_a341a0a8b6509633809d99348cc3ba486a1f63bf86b8f6da71137cf0a28ebf024a"><div class="ttname"><a href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a1f63bf86b8f6da71137cf0a28ebf024a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME_READONLY</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00157">types.h:157</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_a547feb6e46dfb8e37a4eb338c17d7b52"><div class="ttname"><a href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">_RemminaSSH::ssh_mutex</a></div><div class="ttdeci">pthread_mutex_t ssh_mutex</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00082">remmina_ssh.h:82</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01843">remmina_protocol_widget.c:1843</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9ed3110b7b030bccd0ff9ed70e86da2d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_savepassword(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01848">remmina_protocol_widget.c:1848</a></div></div>
<div class="ttc" id="types_8h_html_a112d7cc6c755209cabb68cf2a62ad515"><div class="ttname"><a href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a></div><div class="ttdeci">typedefG_BEGIN_DECLS struct _RemminaFile RemminaFile</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00044">types.h:44</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_a0b3e071eb2c6011efdcea3f65f8e7fa0"><div class="ttname"><a href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">_RemminaSSH::ciphers</a></div><div class="ttdeci">gchar * ciphers</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00074">remmina_ssh.h:74</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a998d504fc1ae83365d905bd0b72e07ef"><div class="ttname"><a href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh_delete_item</a></div><div class="ttdeci">static void remmina_ssh_delete_item(ssh_channel channel)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00226">remmina_ssh.c:226</a></div></div>
@@ -168,7 +168,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="remmina__ssh_8c_html_aa836e9642f5703d984c65513c7220b56"><div class="ttname"><a href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a></div><div class="ttdeci">static int remmina_ssh_cp_to_fd_cb(ssh_session session, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00537">remmina_ssh.c:537</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00114">remmina_ssh.h:114</a></div></div>
<div class="ttc" id="remmina__log_8h_html"><div class="ttname"><a href="remmina__log_8h.html">remmina_log.h</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a9092c29f585fdabaf0ce7e865670053b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_question_yesno(RemminaProtocolWidget *gp, const char *msg)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01684">remmina_protocol_widget.c:1684</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a9092c29f585fdabaf0ce7e865670053b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_question_yesno(RemminaProtocolWidget *gp, const char *msg)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01689">remmina_protocol_widget.c:1689</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a155d773294b0671aac4e710e97d90047"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">_RemminaSSHTunnel::buffer</a></div><div class="ttdeci">gchar * buffer</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00162">remmina_ssh.h:162</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_a76ed92539dfe749a24a3a3b99f3a644f"><div class="ttname"><a href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">_RemminaSSH::tunnel_entrance_port</a></div><div class="ttdeci">gint tunnel_entrance_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00089">remmina_ssh.h:89</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a30412e0b4302f5ae0b9be2749390a48d"><div class="ttname"><a href="remmina__ssh_8h.html#a30412e0b4302f5ae0b9be2749390a48d">remmina_ssh_shell_new_from_file</a></div><div class="ttdeci">RemminaSSHShell * remmina_ssh_shell_new_from_file(RemminaFile *remminafile)</div></div>
@@ -226,7 +226,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="struct___remmina_s_s_h_shell_html_a88090ecb372853a19640c883f5bf606a"><div class="ttname"><a href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">_RemminaSSHShell::exit_callback</a></div><div class="ttdeci">RemminaSSHExitFunc exit_callback</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00253">remmina_ssh.h:253</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a09bd4aee40b6e8d6ba8ffaa84dc95330"><div class="ttname"><a href="remmina__ssh_8h.html#a09bd4aee40b6e8d6ba8ffaa84dc95330">remmina_ssh_convert</a></div><div class="ttdeci">gchar * remmina_ssh_convert(RemminaSSH *ssh, const gchar *from)</div></div>
<div class="ttc" id="struct___remmina_s_s_h_shell_html_a2d56befd61e28b83f90fe3eff0e6dfe7"><div class="ttname"><a href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">_RemminaSSHShell::exec</a></div><div class="ttdeci">gchar * exec</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00248">remmina_ssh.h:248</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01831">remmina_protocol_widget.c:1831</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a3fc52d61f77327534286f57e563e0923"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_password(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01836">remmina_protocol_widget.c:1836</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00068">remmina_file.h:68</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_aa8e75d0a635b3390100218bee6b49378"><div class="ttname"><a href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">_RemminaSSH::callback</a></div><div class="ttdeci">ssh_callbacks callback</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00061">remmina_ssh.h:61</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a1e09b32044c240a7dce0ad8afcbf0ff2"><div class="ttname"><a href="remmina__ssh_8h.html#a1e09b32044c240a7dce0ad8afcbf0ff2">remmina_sftp_open</a></div><div class="ttdeci">gboolean remmina_sftp_open(RemminaSFTP *sftp)</div></div>
@@ -246,7 +246,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="remmina__public_8c_html_adc8b77823386e00e610527d6b0b61149"><div class="ttname"><a href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a></div><div class="ttdeci">void remmina_public_get_server_port(const gchar *server, gint defaultport, gchar **host, gint *port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00422">remmina_public.c:422</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a52b3f47eac79f2781ba81d61505f4f53"><div class="ttname"><a href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a></div><div class="ttdeci">gboolean remmina_ssh_tunnel_open(RemminaSSHTunnel *tunnel, const gchar *host, gint port, gint local_port)</div></div>
<div class="ttc" id="remmina__ssh_8h_html_a3d7138d9cbbe44aea15440436ce85d6e"><div class="ttname"><a href="remmina__ssh_8h.html#a3d7138d9cbbe44aea15440436ce85d6e">remmina_sftp_new_from_file</a></div><div class="ttdeci">RemminaSFTP * remmina_sftp_new_from_file(RemminaFile *remminafile)</div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01471">remmina_protocol_widget.c:1471</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a2506e80d482c34532d0e534856452069"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a></div><div class="ttdeci">RemminaFile * remmina_protocol_widget_get_file(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01476">remmina_protocol_widget.c:1476</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a6a8653ae6e45acff9e6b01aeda5f45e8"><div class="ttname"><a href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8">remmina_ssh_connect_local_xsocket</a></div><div class="ttdeci">static int remmina_ssh_connect_local_xsocket(int display_number)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00377">remmina_ssh.c:377</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_a37cb349f88211ed4a65a3486f8523eaa"><div class="ttname"><a href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">_RemminaSSH::certfile</a></div><div class="ttdeci">gchar * certfile</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00070">remmina_ssh.h:70</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_shell_html_ab02f57e79ea0ba35f8a3788ef01a707f"><div class="ttname"><a href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">_RemminaSSHShell::master</a></div><div class="ttdeci">gint master</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00246">remmina_ssh.h:246</a></div></div>
@@ -259,7 +259,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="remmina__file_8h_html"><div class="ttname"><a href="remmina__file_8h.html">remmina_file.h</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_aa904bb1d9f643f6fde2b0eea4a8b1660"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">_RemminaSSHTunnel::connect_func</a></div><div class="ttdeci">RemminaSSHTunnelCallback connect_func</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00176">remmina_ssh.h:176</a></div></div>
<div class="ttc" id="remmina__file_8h_html_abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e"><div class="ttname"><a href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e">SSH_AUTH_AGENT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__file_8h_source.html#l00070">remmina_file.h:70</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01825">remmina_protocol_widget.c:1825</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a96159bd8e9d70c74967e666e2f188df0"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a></div><div class="ttdeci">gchar * remmina_protocol_widget_get_username(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01830">remmina_protocol_widget.c:1830</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html_a6de32421fea0537fb29c03e0ae8b41d6"><div class="ttname"><a href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">_RemminaSSH::is_multiauth</a></div><div class="ttdeci">gboolean is_multiauth</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00087">remmina_ssh.h:87</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a624b8ac30ddcd00ebda0b51d504f5a33"><div class="ttname"><a href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a></div><div class="ttdeci">gboolean remmina_ssh_init_session(RemminaSSH *ssh)</div></div>
<div class="ttc" id="remmina__ssh_8c_html_aad84c6609cb431d48121ae5e0902441b"><div class="ttname"><a href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a></div><div class="ttdeci">enum remmina_ssh_auth_result remmina_ssh_auth(RemminaSSH *ssh, const gchar *password, RemminaProtocolWidget *gp, RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l01085">remmina_ssh.c:1085</a></div></div>
diff --git a/public/remmina__ssh__plugin_8c_source.html b/public/remmina__ssh__plugin_8c_source.html
index 7e90c1d90..59a537d7b 100644
--- a/public/remmina__ssh__plugin_8c_source.html
+++ b/public/remmina__ssh__plugin_8c_source.html
@@ -135,7 +135,7 @@ $(document).ready(function(){initNavTree('remmina__ssh__plugin_8c_source.html','
<div class="ttc" id="struct___remmina_color_pref_html_a3a897d3fdc112fd9f96d2363f4094fc4"><div class="ttname"><a href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">_RemminaColorPref::color2</a></div><div class="ttdeci">gchar * color2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00117">remmina_pref.h:117</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_html"><div class="ttname"><a href="struct___remmina_s_s_h.html">_RemminaSSH</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00059">remmina_ssh.h:59</a></div></div>
<div class="ttc" id="struct___remmina_ssh_search_html_a3a0be990d7ef8629f8c4caf188b2d723"><div class="ttname"><a href="struct___remmina_ssh_search.html#a3a0be990d7ef8629f8c4caf188b2d723">_RemminaSshSearch::wrap_around_checkbutton</a></div><div class="ttdeci">GtkToggleButton * wrap_around_checkbutton</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00217">remmina_ssh_plugin.c:217</a></div></div>
-<div class="ttc" id="remmina__protocol__widget_8c_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00793">remmina_protocol_widget.c:793</a></div></div>
+<div class="ttc" id="remmina__protocol__widget_8c_html_a6a630e96e5b914d60d678ae8eaad4cd9"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a></div><div class="ttdeci">void remmina_protocol_widget_call_feature_by_type(RemminaProtocolWidget *gp, RemminaProtocolFeatureType type, gint id)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00798">remmina_protocol_widget.c:798</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00113">remmina_ssh.h:113</a></div></div>
<div class="ttc" id="remmina__ssh__plugin_8c_html_a2d4a960ae03e832fb20239f4880a6244"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#a2d4a960ae03e832fb20239f4880a6244">tango_palette</a></div><div class="ttdeci">const GdkRGBA tango_palette[PALETTE_SIZE]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00106">remmina_ssh_plugin.c:106</a></div></div>
<div class="ttc" id="remmina__ssh__plugin_8c_html_a236a29beb2ea51daaeb01fe86d41807ca3c1607106f03c3be44c0f70a6040604c"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#a236a29beb2ea51daaeb01fe86d41807ca3c1607106f03c3be44c0f70a6040604c">GRUVBOX</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l00081">remmina_ssh_plugin.c:81</a></div></div>
diff --git a/public/search/all_12.js b/public/search/all_12.js
index 494a001eb..e56561014 100644
--- a/public/search/all_12.js
+++ b/public/search/all_12.js
@@ -1697,6 +1697,7 @@ var searchData=
['response_5fcallback_5fdata',['response_callback_data',['../structremmina__masterthread__exec__data.html#aed4afd0ce7ecf117534076f500aa0658',1,'remmina_masterthread_exec_data::response_callback_data()'],['../struct_remmina_message_panel_private.html#a6595dbe739d97d82e36c6e0878bcf1d4',1,'RemminaMessagePanelPrivate::response_callback_data()']]],
['ret_5fmp',['ret_mp',['../structremmina__masterthread__exec__data.html#ab4a1d527225cf5a768814b02acb0e7a1',1,'remmina_masterthread_exec_data']]],
['retptr',['retptr',['../structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24',1,'remmina_plugin_rdp_ui_object']]],
+ ['retry_5fmessage_5fpanel',['retry_message_panel',['../struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4',1,'_RemminaProtocolWidgetPriv']]],
['retval',['retval',['../structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07',1,'remmina_masterthread_exec_data::retval()'],['../struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235',1,'_RemminaUnlockDialog::retval()'],['../structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee',1,'remmina_plugin_rdp_ui_object::retval()']]],
['reveal_5fbutton',['reveal_button',['../struct___remmina_ssh_search.html#a8f9a64245acf9b02edac4fbbcfdedd02',1,'_RemminaSshSearch']]],
['revealer',['revealer',['../struct___remmina_ssh_search.html#a9b72b310751ac148d5c55b0f2a04a300',1,'_RemminaSshSearch']]],
diff --git a/public/search/all_14.js b/public/search/all_14.js
index f2f1b068f..74cce3524 100644
--- a/public/search/all_14.js
+++ b/public/search/all_14.js
@@ -43,7 +43,7 @@ var searchData=
['toolbar_5fplacement_5ftop',['TOOLBAR_PLACEMENT_TOP',['../remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f',1,'remmina_pref.h']]],
['toolbarplace_5fsignal',['TOOLBARPLACE_SIGNAL',['../rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7aa9941863b5633ddecb019f793f2f7668',1,'rcw.c']]],
['tooltip',['tooltip',['../struct___remmina_f_t_p_task.html#ac2b00cace6fd885736792664843be667',1,'_RemminaFTPTask']]],
- ['top',['top',['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()'],['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()']]],
+ ['top',['Top',['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()'],['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()']]],
['transfer_5fclip_5fcond',['transfer_clip_cond',['../structrf__clipboard.html#acf5bf9da1a18e21409c4b10368f8dfd7',1,'rf_clipboard']]],
['transfer_5fclip_5fmutex',['transfer_clip_mutex',['../structrf__clipboard.html#a5c6be1637ed9e2ce72ffde2ed5400205',1,'rf_clipboard']]],
['translated_5fkeycode',['translated_keycode',['../structremmina__plugin__rdp__keymap__entry.html#aa63271d75f6dfda81584ddfb7c60b2a1',1,'remmina_plugin_rdp_keymap_entry']]],
diff --git a/public/search/all_6.js b/public/search/all_6.js
index 767bf4826..cd97cab82 100644
--- a/public/search/all_6.js
+++ b/public/search/all_6.js
@@ -31,7 +31,7 @@ var searchData=
['filename_5fcolumn',['FILENAME_COLUMN',['../remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d',1,'remmina_main.c']]],
['filetype',['filetype',['../struct_remmina_plugin_loader.html#a56f300db088d387cc4de9dbcd4b8e96f',1,'RemminaPluginLoader']]],
['find_5fprotocol_5fsetting',['find_protocol_setting',['../remmina__file_8c.html#a1399e5b83aa040b6613cf98be45b4c99',1,'remmina_file.c']]],
- ['flags',['flags',['../struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c',1,'PyGObject::flags()'],['../structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c',1,'remmina_plugin_rdp_event::flags()'],['../struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893',1,'_DialogData::flags()'],['../structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114',1,'remmina_plugin_rdp_event::Flags()']]],
+ ['flags',['Flags',['../structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114',1,'remmina_plugin_rdp_event::Flags()'],['../struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c',1,'PyGObject::flags()'],['../structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c',1,'remmina_plugin_rdp_event::flags()'],['../struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893',1,'_DialogData::flags()']]],
['flags_5fadd',['flags_add',['../struct___py_g_object___functions.html#a16c1bbbcaa3751066da103df308a515d',1,'_PyGObject_Functions']]],
['flags_5fadd_5fconstants',['flags_add_constants',['../struct___py_g_object___functions.html#a8c63a8826b8c2c19a54ff0e059b5a6cd',1,'_PyGObject_Functions']]],
['flags_5ffrom_5fgtype',['flags_from_gtype',['../struct___py_g_object___functions.html#a154d872bd50af4f8cb30fbf035015c97',1,'_PyGObject_Functions']]],
diff --git a/public/search/variables_11.js b/public/search/variables_11.js
index b73dfbea3..c733d34db 100644
--- a/public/search/variables_11.js
+++ b/public/search/variables_11.js
@@ -116,6 +116,7 @@ var searchData=
['response_5fcallback_5fdata',['response_callback_data',['../structremmina__masterthread__exec__data.html#aed4afd0ce7ecf117534076f500aa0658',1,'remmina_masterthread_exec_data::response_callback_data()'],['../struct_remmina_message_panel_private.html#a6595dbe739d97d82e36c6e0878bcf1d4',1,'RemminaMessagePanelPrivate::response_callback_data()']]],
['ret_5fmp',['ret_mp',['../structremmina__masterthread__exec__data.html#ab4a1d527225cf5a768814b02acb0e7a1',1,'remmina_masterthread_exec_data']]],
['retptr',['retptr',['../structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24',1,'remmina_plugin_rdp_ui_object']]],
+ ['retry_5fmessage_5fpanel',['retry_message_panel',['../struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4',1,'_RemminaProtocolWidgetPriv']]],
['retval',['retval',['../structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07',1,'remmina_masterthread_exec_data::retval()'],['../struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235',1,'_RemminaUnlockDialog::retval()'],['../structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee',1,'remmina_plugin_rdp_ui_object::retval()']]],
['reveal_5fbutton',['reveal_button',['../struct___remmina_ssh_search.html#a8f9a64245acf9b02edac4fbbcfdedd02',1,'_RemminaSshSearch']]],
['revealer',['revealer',['../struct___remmina_ssh_search.html#a9b72b310751ac148d5c55b0f2a04a300',1,'_RemminaSshSearch']]],
diff --git a/public/search/variables_13.js b/public/search/variables_13.js
index 12551c7b0..58ce55ace 100644
--- a/public/search/variables_13.js
+++ b/public/search/variables_13.js
@@ -25,7 +25,7 @@ var searchData=
['toolbar_5fplace',['toolbar_place',['../struct___remmina_connection_window_class.html#aeb815c87f3bddad607a61d293eef661d',1,'_RemminaConnectionWindowClass']]],
['toolbar_5fplacement',['toolbar_placement',['../struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133',1,'_RemminaPref']]],
['tooltip',['tooltip',['../struct___remmina_f_t_p_task.html#ac2b00cace6fd885736792664843be667',1,'_RemminaFTPTask']]],
- ['top',['top',['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()'],['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()']]],
+ ['top',['Top',['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()'],['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()']]],
['transfer_5fclip_5fcond',['transfer_clip_cond',['../structrf__clipboard.html#acf5bf9da1a18e21409c4b10368f8dfd7',1,'rf_clipboard']]],
['transfer_5fclip_5fmutex',['transfer_clip_mutex',['../structrf__clipboard.html#a5c6be1637ed9e2ce72ffde2ed5400205',1,'rf_clipboard']]],
['translated_5fkeycode',['translated_keycode',['../structremmina__plugin__rdp__keymap__entry.html#aa63271d75f6dfda81584ddfb7c60b2a1',1,'remmina_plugin_rdp_keymap_entry']]],
diff --git a/public/search/variables_6.js b/public/search/variables_6.js
index 354ec16da..4a1c732e3 100644
--- a/public/search/variables_6.js
+++ b/public/search/variables_6.js
@@ -25,7 +25,7 @@ var searchData=
['filechooserbutton_5foptions_5fscreenshots_5fpath',['filechooserbutton_options_screenshots_path',['../struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27',1,'_RemminaPrefDialog']]],
['filename',['filename',['../struct___remmina_applet_menu_item.html#aac9b89701606ff0f130f36ec0df55674',1,'_RemminaAppletMenuItem::filename()'],['../struct___remmina_file.html#a5edb4595f0c83cae611b557bfba02a07',1,'_RemminaFile::filename()'],['../structdistro__info.html#a1999084b11586bdb56bc2453fce7f633',1,'distro_info::filename()']]],
['filetype',['filetype',['../struct_remmina_plugin_loader.html#a56f300db088d387cc4de9dbcd4b8e96f',1,'RemminaPluginLoader']]],
- ['flags',['flags',['../struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c',1,'PyGObject::flags()'],['../structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c',1,'remmina_plugin_rdp_event::flags()'],['../struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893',1,'_DialogData::flags()'],['../structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114',1,'remmina_plugin_rdp_event::Flags()']]],
+ ['flags',['Flags',['../structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114',1,'remmina_plugin_rdp_event::Flags()'],['../struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c',1,'PyGObject::flags()'],['../structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c',1,'remmina_plugin_rdp_event::flags()'],['../struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893',1,'_DialogData::flags()']]],
['flags_5fadd',['flags_add',['../struct___py_g_object___functions.html#a16c1bbbcaa3751066da103df308a515d',1,'_PyGObject_Functions']]],
['flags_5fadd_5fconstants',['flags_add_constants',['../struct___py_g_object___functions.html#a8c63a8826b8c2c19a54ff0e059b5a6cd',1,'_PyGObject_Functions']]],
['flags_5ffrom_5fgtype',['flags_from_gtype',['../struct___py_g_object___functions.html#a154d872bd50af4f8cb30fbf035015c97',1,'_PyGObject_Functions']]],
diff --git a/public/struct___remmina_protocol_widget_priv.html b/public/struct___remmina_protocol_widget_priv.html
index a9ddb8224..ef78c15d1 100644
--- a/public/struct___remmina_protocol_widget_priv.html
+++ b/public/struct___remmina_protocol_widget_priv.html
@@ -131,6 +131,8 @@ Data Fields</h2></td></tr>
<tr class="separator:a70cdb4f879e8bb26b23d05cbbe685640"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a24677077c069fbbb1f17e747530e1b"><td class="memItemLeft" align="right" valign="top">RemminaMessagePanel *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a></td></tr>
<tr class="separator:a6a24677077c069fbbb1f17e747530e1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acad26c8fddd63360e26ecc99b0d57be4"><td class="memItemLeft" align="right" valign="top">RemminaMessagePanel *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4">retry_message_panel</a></td></tr>
+<tr class="separator:acad26c8fddd63360e26ecc99b0d57be4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3feb5e5dad00109813fac890d913885"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a></td></tr>
<tr class="separator:ae3feb5e5dad00109813fac890d913885"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11a8aa051088d48b389c8385d03a65f7"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a></td></tr>
@@ -180,7 +182,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00097">97</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00098">98</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -196,7 +198,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00098">98</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00099">99</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -228,7 +230,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00099">99</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00100">100</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -244,7 +246,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00100">100</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00101">101</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -292,7 +294,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00094">94</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00095">95</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -436,7 +438,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00093">93</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00094">94</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -504,6 +506,22 @@ Data Fields</h2></td></tr>
</div>
</div>
+<a id="acad26c8fddd63360e26ecc99b0d57be4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acad26c8fddd63360e26ecc99b0d57be4">&#9670;&nbsp;</a></span>retry_message_panel</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RemminaMessagePanel* _RemminaProtocolWidgetPriv::retry_message_panel</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00090">90</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+
+</div>
+</div>
<a id="a7c8675e38544a9c393b560b31d165791"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c8675e38544a9c393b560b31d165791">&#9670;&nbsp;</a></span>save_password</h2>
@@ -516,7 +534,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00095">95</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00096">96</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -580,7 +598,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00092">92</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00093">93</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
diff --git a/public/struct___remmina_protocol_widget_priv.js b/public/struct___remmina_protocol_widget_priv.js
index 301df842c..fc4f86be8 100644
--- a/public/struct___remmina_protocol_widget_priv.js
+++ b/public/struct___remmina_protocol_widget_priv.js
@@ -22,6 +22,7 @@ var struct___remmina_protocol_widget_priv =
[ "profile_remote_height", "struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca", null ],
[ "profile_remote_width", "struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10", null ],
[ "remmina_file", "struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec", null ],
+ [ "retry_message_panel", "struct___remmina_protocol_widget_priv.html#acad26c8fddd63360e26ecc99b0d57be4", null ],
[ "save_password", "struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791", null ],
[ "scalemode", "struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533", null ],
[ "scaler_expand", "struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c", null ],
diff --git a/public/struct___remmina_protocol_widget_signal_data.html b/public/struct___remmina_protocol_widget_signal_data.html
index 06552683b..40a446bdf 100644
--- a/public/struct___remmina_protocol_widget_signal_data.html
+++ b/public/struct___remmina_protocol_widget_signal_data.html
@@ -98,7 +98,7 @@ Data Fields</h2></td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00121">121</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00122">122</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="a7a8b9ad6fdff86250a5eef649693d64a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a8b9ad6fdff86250a5eef649693d64a">&#9670;&nbsp;</a></span>gp</h2>
@@ -112,7 +112,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00122">122</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00123">123</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -128,7 +128,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00123">123</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l00124">124</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
diff --git a/public/struct_mp_run_info.html b/public/struct_mp_run_info.html
index e5ee0348d..45a3b1733 100644
--- a/public/struct_mp_run_info.html
+++ b/public/struct_mp_run_info.html
@@ -102,7 +102,7 @@ Data Fields</h2></td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01569">1569</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01574">1574</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="a5c8cb7c26289f2afa4fcd87fced6bb91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c8cb7c26289f2afa4fcd87fced6bb91">&#9670;&nbsp;</a></span>destroyed</h2>
@@ -116,7 +116,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01573">1573</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01578">1578</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -132,7 +132,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01571">1571</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01576">1576</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -148,7 +148,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01570">1570</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01575">1575</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -164,7 +164,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01572">1572</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01577">1577</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
diff --git a/public/structremmina__protocol__widget__dialog__mt__data__t.html b/public/structremmina__protocol__widget__dialog__mt__data__t.html
index 5597e2197..6a71d86e1 100644
--- a/public/structremmina__protocol__widget__dialog__mt__data__t.html
+++ b/public/structremmina__protocol__widget__dialog__mt__data__t.html
@@ -118,7 +118,7 @@ Data Fields</h2></td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01477">1477</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01482">1482</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="a81eb96409c1543bcf2d9474d4d89907f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81eb96409c1543bcf2d9474d4d89907f">&#9670;&nbsp;</a></span>called_from_subthread</h2>
@@ -132,7 +132,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01487">1487</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01492">1492</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -148,7 +148,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01483">1483</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01488">1488</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -164,7 +164,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01482">1482</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01487">1487</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -180,7 +180,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01481">1481</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01486">1486</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -196,7 +196,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01485">1485</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01490">1490</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -212,7 +212,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01479">1479</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01484">1484</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -228,7 +228,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01486">1486</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01491">1491</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -244,7 +244,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01490">1490</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01495">1495</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -260,7 +260,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01489">1489</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01494">1494</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -276,7 +276,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01492">1492</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01497">1497</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -292,7 +292,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01484">1484</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01489">1489</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>
@@ -308,7 +308,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01480">1480</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__protocol__widget_8c_source.html#l01485">1485</a> of file <a class="el" href="remmina__protocol__widget_8c_source.html">remmina_protocol_widget.c</a>.</p>
</div>
</div>