Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • seraphlivery/Remmina
  • lpiert/Remmina
  • iridiumcao/Remmina
  • no1491/Remmina
  • supermariobross205/Remmina
  • axalonso/Remmina
  • Remmina/Remmina
  • joseph-turk/Remmina
  • ruur/Remmina
  • xiangxiang/Remmina
  • Feishi/Remmina
  • mikini/Remmina
  • zodimo/Remmina
  • Pain_666/Remmina
  • iraklisk/Remmina
  • TeknoMobil/Remmina
  • c01o/Remmina
  • ollie314/Remmina
  • divyaatnet2015/Remmina
  • dima190386/Remmina
  • allsource/tools-all/Remmina
  • codecopy/Remmina
  • will30/Remmina
  • julienmary/Remmina
  • Hamster59/Remmina
  • pavelbo/Remmina
  • adrubesh/Remmina
  • milan.sreca/Remmina
  • dungpx/Remmina
  • haftrecht77/Remmina
  • morristech/Remmina
  • heuripedes1/Remmina
  • lutzadam/Remmina
  • ookkookk/ookk-share/Remmina
  • clayton.p.boyer/Remmina
  • tanjoodo/Remmina
  • kaluginrn/Remmina
  • OzzieIsaacs/Remmina
  • rabbit2190/Remmina
  • DevDef/Remmina
  • wolfmanx/Remmina
  • nikolasklauser/Remmina
  • tarifrr/Remmina
  • makamo/Remmina
  • kenvandine/Remmina
  • boundless/Remmina
  • Yabgu/Remmina
  • lialex100/Remmina
  • weldteh2017/Remmina
  • lcmftianci/Remmina
  • bjornrun/Remmina
  • mantaroh/Remmina
  • gpavinteractiv/Remmina
  • dark_kod3x/Remmina
  • rasphino/Remmina
  • mxbmxl/Remmina
  • samoilenkolev/Remmina
  • sigal1/Remmina
  • atriwidada/Remmina
  • rauhmaru/Remmina
  • djb.cash/Remmina
  • roger29/Remmina
  • daniel.tallentire/Remmina
  • terebe/Remmina
  • shailendrapspundhir/Remmina
  • givay/Remmina
  • rmgianni/Remmina
  • a761208/Remmina
  • naim00000007/Remmina
  • bikerboi38/Remmina
  • zjw88282740/Remmina
  • padlen8919/Remmina
  • BriGuy.CN/Remmina
  • EwertonLourenco/Remmina
  • calspb/Remmina
  • adexc/Remmina
  • austinmajor/Remmina
  • sbilly/Remmina
  • DVSB/Remmina
  • gazeta1/Remmina
  • tiago.antoniazi/Remmina
  • sunweaver/Remmina
  • muzena/Remmina
  • arunpyasi/Remmina
  • benjamin.schwerdtner/Remmina
  • kleberhifi/Remmina
  • Petrus_S/Remmina
  • dongcd/Remmina
  • benass12/Remmina
  • cyph3x/Remmina
  • Cypresslin/Remmina
  • sharePlatform/Remmina
  • omerfazat/Remmina
  • mingy98/Remmina
  • pingzhang1981/Remmina
  • hansbetaald/Remmina
  • erikdunteman/Remmina
  • kongfucode/Remmina
  • shshanmu/Remmina
  • raj.krishnamurthy/Remmina
  • cdslily/Remmina
  • shulakov.mihail/Remmina
  • ronter/Remmina
  • pavol.walker/Remmina
  • lidarddu/Remmina
  • erick.lzr/Remmina
  • marcontonio3146ruiz/Remmina
  • Zlika1/Remmina
  • zlgxzswjy/Remmina
  • hellsworth/Remmina
  • sideskate/Remmina
  • jokerbuilder/Remmina
  • rafaelff/Remmina
  • yarons/Remmina
  • qgroup/Remmina
  • MoriartyShan/Remmina
  • kingu/Remmina
  • jn7163/Remmina
  • pizdusasi/Remmina
  • rishigna2016/Remmina
  • lmc1/Remmina
  • SokolovAV/Remmina
  • nulllik/Remmina
  • GYOS_Geese/Remmina
  • sam0x17/Remmina
  • NiurenZhu/Remmina
  • Hokadiw/Remmina
  • CimpianAlin/Remmina
  • rfilipo/Remmina
  • joyce_lowe/Remmina
  • antymat/Remmina
  • NoisySpaceBalls/Remmina
  • propcoder/Remmina
  • b0tanik/Remmina
  • amirbakhtiari/Remmina
  • afarina1/Remmina
  • lawler/Remmina
  • rolaya/Remmina
  • yurchor/Remmina
  • ertos12/Remmina
  • josprachi/Remmina
  • umityavz/Remmina
  • hopyres/Remmina
  • raghueljacks/Remmina
  • wlsoporte/Remmina
  • thorekarlsson79/Remmina
  • projek/Remmina
  • 4johndoe/Remmina
  • okanimamoglu/Remmina
  • greenfoxua/Remmina
  • mark.bidar/Remmina
  • jjbrehm/Remmina
  • antioff/Remmina
  • iaxat/Remmina
  • mskalski/Remmina
  • qgroup_f.beu/Remmina
  • wagneralvaro80/Remmina
  • khubaibumer/Remmina
  • GregTheHun/Remmina
  • pieterbruegel/Remmina
  • jpramez/Remmina
  • juarez.rudsatz/Remmina
  • masums/Remmina
  • qarmin/Remmina
  • flow/Remmina
  • Transii/Remmina
  • nametable-group/Remmina
  • domosino/Remmina
  • jose1711/Remmina
  • pcdash/Remmina
  • fmcodes/Remmina
  • antonio.petricca/Remmina
  • ThomasCr/Remmina
  • Cherrg/Remmina
  • antenore/Remmina
  • garymoon/Remmina
  • ehtesham-naseer/Remmina
  • Stoffe-Pro/Remmina
  • espentveit/Remmina
  • kenansun0/Remmina
  • pnowack/Remmina
  • daxkelson/Remmina
  • achmafooma/Remmina
  • kapsh/Remmina
  • lecourt.charley/Remmina
  • asuter/Remmina
  • bwack/Remmina
  • Fantu/Remmina
  • hyy829119/Remmina
  • acendrou/Remmina
  • nikolaytsanov/Remmina
  • tuxpm/Remmina
  • Benjamin_Loison/Remmina
  • sharof/Remmina
  • jweberhofer/Remmina
  • gil-obradors/Remmina
  • supernoi/Remmina
  • akallabeth/Remmina
  • escanor.wang/Remmina
  • ersen/Remmina
  • twinzhanghui/Remmina
  • rys2/Remmina
  • ragnarstolsmark/Remmina
  • jamespharvey20/Remmina
  • Sandglass-vic/Remmina
  • kymya74/Remmina
  • matir/Remmina
  • xsmile/Remmina
  • cth451/Remmina
  • Mindslave/Remmina
  • ncopa/Remmina
  • sgnls/Remmina
  • mfvescovi/Remmina
  • PGH1005/Remmina
  • cirelli94/Remmina
  • matty-r/Remmina
  • belarbimhd/Remmina
  • radinmoradi138/Remmina
  • agunnerson-work/Remmina
  • MasonJF/Remmina
  • dzatoah/Remmina
  • Enkiduzis/Remmina
  • dtorro18/Remmina
  • nnthegreek/Remmina
  • yasuokam/Remmina
  • PollockT/Remmina
  • broth-itk/Remmina
  • merarischreoder/Remmina
  • nbergonz/remmina-clone
  • ballardkairhi/Remmina
  • yasinbakhtiar521/Remmina
  • eworm-de/Remmina
  • headkaze/Remmina
  • emmguyot1/contributions/Remmina
  • yurashek/Remmina
  • B4dM4n/Remmina
  • MoralCode/Remmina
  • jbicha/Remmina
  • donoban/Remmina
  • c0dewing/Remmina
  • lorenz/Remmina
  • PHWR/Remmina
  • q9253702811/Remmina
  • marco.fortina/Remmina
  • msaxl/Remmina
  • jrelmore/Remmina
  • ac0v/Remmina
  • Lebensgefahr/Remmina
  • yeezues/Remmina
  • hokmabadsiroos565/Remmina
  • adelqnet12/Remmina
  • mdevaev/Remmina
  • youcefnafa/Remmina
  • devilmate438/Remmina
  • hl-zlg/Remmina
  • festevam/Remmina
  • MiQ88/Remmina
  • palfortime/Remmina
  • AHOHNMYC/Remmina
  • myheroyuki/Remmina
  • ksqeib1/Remmina
  • jones.developer.chung/Remmina
  • emrtkn/Remmina
  • kemaldemet0053/deneme
  • bkohler/Remmina
  • iavael/Remmina
  • appyaoli/Remmina
  • caciagli1/Remmina
  • windik-forks/remmina-ps
  • benoit.lagarde/Remmina
  • darvin1/Remmina
  • Benim1111/Remmina
  • yselkowitz1/Remmina
  • armbiant/yeti-rdc
  • dminischetti/Remmina
  • nstewart708418/Remmina
  • abozonot/yeti-rdc
  • XDvvJake/Remmina
  • cccczl/Remmina
  • ttrrdfx/Remmina
  • divinAirvantage/Remmina
  • MaxIhlenfeldt/Remmina
  • mvzlb/Remmina
  • bhatman1441/Remmina
  • gomanuke/Remmina
  • alifmakhir70/Remmina
  • bvbek/Remmina
  • WoolenWang/Remmina
  • BobbyTheBuilder/Remmina
  • joseph.spagnol/Remmina
  • Csega1/Remmina
  • bloodcodehack/Remmina
  • jchw/Remmina
  • danilzolotarev1980/Remmina
  • alexbercovici/Remmina
  • Soccerunner/Remmina
  • guorouda/Remmina
  • kambisembi/Remmina
  • gador1/Remmina
  • shvprasad100/remmina-web-cam-fix
  • msizanoen/Remmina
  • asterismx/Remmina
  • yasinbakhtiar/Remmina
  • scoulondre/Remmina
  • erwin.bogner1/Remmina
  • mr1fullhouse/Remmina
  • Malekkhatab/Remmina
  • jose.c.oliveira/Remmina
  • yangpada/Remmina
  • jtmoree/Remmina
  • yanchunw/Remmina
  • Enzime/Remmina
  • toliak/Remmina
  • shiny0110/Remmina
  • aung_khaing_khant/Remmina
  • yurivict/Remmina
  • MahadMuhammad/Remmina
  • petris/Remmina
  • vaparetia/Remmina
  • robxnano/Remmina
  • soumyaDghosh/Remmina
  • Robotic-Brain/Remmina
  • vhhhl1/Remmina
  • randomher0/Remmina
  • hackersk2005/Remmina
  • pnowak433/Remmina
  • qqjt/Remmina
  • klemensn/Remmina
  • rownaas/Remmina
  • mnloss/Remmina
  • sadlylion/Remmina
  • alvarorg/Remmina
  • lab19010812/Remmina
  • deining/Remmina
  • yangwanxu/Remmina
  • dexxter00/Remmina
  • aasheeshjoshi/Remmina
  • hunderteins/Remmina
  • imo02299/Remmina
  • liu.perry/Remmina
  • AkiraPenguin/Remmina
  • sunlight.suraj/Remmina
  • Shofuuu/Remmina
  • andyjones1982/Remmina
  • motoford/Remmina
  • morganw3/Remmina
  • Schmersal/Remmina
  • S.Julien/Remmina
  • blacklabsoftware1/Remmina
  • ousmane.dembele/Remmina
  • sobermomma7/Remmina
  • acutemeridian/Remmina
  • jepperley/Remmina
  • Victrid/Remmina
  • uptoskycola/Remmina
  • mtelka/Remmina
  • vmvarmy/Remmina
  • polivets.ov/Remmina
  • NOBODYGIVESAFUK/Remmina
  • masscollabs/masscollabscloudplatform/Remmina
  • timdewhirst/Remmina
  • chatpong-v/Remmina
  • Vietexa/Remmina
  • bshanahan210/Remmina
  • sylv-io/Remmina
  • weskoerber/Remmina
366 results
Show changes
Commits on Source (41)
Showing
with 311 additions and 122 deletions
......@@ -19,37 +19,6 @@ resource_rules:
{{author}} This issue was closed due to not being updated for a long time. Please re-open it if still relevant.
CC {{assignees}}
- name: Unlabelled after 8 days
conditions:
date:
attribute: updated_at
condition: older_than
interval_type: days
interval: 8
state: opened
no_additional_labels: true
limits:
most_recent: 50
actions:
labels:
- needs attention
comment: |
{{author}} This issue has gone unlabelled for 8 days. It needs somone to label it.
summarize:
title: |
#{resource[:type].capitalize} require labels
item: |
- [ ] [{{title}}]({{web_url}}) {{labels}}
redact_confidential_resources: false
summary: |
The following issues require labels:
{{items}}
Please take care of them.
/label ~"needs attention"
- name: Close old "needinfo" policy
conditions:
date:
......@@ -103,6 +72,38 @@ resource_rules:
comment: |
{{author}} This issue is now closed due to being marked as "needs attention" with no updates for a long time. Please re-open it if still relevant.
CC {{assignees}}
- name: Unlabelled after 8 days
conditions:
date:
attribute: updated_at
condition: older_than
interval_type: days
interval: 8
state: opened
no_additional_labels: true
limits:
most_recent: 50
actions:
labels:
- needs attention
comment: |
{{author}} This issue has gone unlabelled for 8 days. It needs somone to label it.
summarize:
title: |
#{resource[:type].capitalize} require labels
item: |
- [ ] [{{title}}]({{web_url}}) {{labels}}
redact_confidential_resources: false
summary: |
The following issues require labels:
{{items}}
Please take care of them.
/label ~"needs attention"
merge_requests:
rules:
......
## v1.4.37
[full changelog](https://gitlab.com/Remmina/Remmina/compare/v1.4.36...v1.4.37)
* Implement horizontal smooth scrolling in RDP [!2606](https://gitlab.com/Remmina/Remmina/-/merge_requests/2606) *@acutemeridian*
* [REM-3209] Allow -c to work with www plugin [!2607](https://gitlab.com/Remmina/Remmina/merge_requests/2607) *@myheroyuki*
* [REM-3210] Add ability to lock message panels to one side of the window [!2608](https://gitlab.com/Remmina/Remmina/merge_requests/2608) *@myheroyuki*
* [REM-3223] fix dangling pointer in ssh_options_get_port invocation [!2609](https://gitlab.com/Remmina/Remmina/merge_requests/2609) *@Victrid*
* Revert "[REM-2854] Add timeout option to handle VNC disconnects" [!2610](https://gitlab.com/Remmina/Remmina/merge_requests/2610) *@myheroyuki*
* Fix OpenSSL include dir [!2611](https://gitlab.com/Remmina/Remmina/merge_requests/2611) *@mtelka*
* Revert "[REM-3121] Handle GotFrameBufferUpdate on its own thread to prevent freeze" [!2612](https://gitlab.com/Remmina/Remmina/merge_requests/2612) *@myheroyuki*
* [REM-3227] fix compile warning that is failure with newer gcc versions [!2613](https://gitlab.com/Remmina/Remmina/merge_requests/2613) *@myheroyuki*
* [REM-3206] Add null check to prevent crash when pasting empty clipbaord [!2614](https://gitlab.com/Remmina/Remmina/merge_requests/2614) *@myheroyuki*
* [REM-3076] [REM-3086] Remove support for FreeRDP_SupportMonitorLayoutPdu to prevent loss of keyboard with xrdp [!2615](https://gitlab.com/Remmina/Remmina/merge_requests/2615) *@myheroyuki*
* [REM-3236] Don't rely on padding characters to be present to try decrypting passwords [!2616](https://gitlab.com/Remmina/Remmina/merge_requests/2585) *@myheroyuki*
* [REM-3246] Add option to immediately close VNC windows when they fail to... [!2617](https://gitlab.com/Remmina/Remmina/merge_requests/2617) *@myheroyuki*
* Allow Remmina to use plugins immediately on download without needing a restart [!2618](https://gitlab.com/Remmina/Remmina/merge_requests/2618) *@myheroyuki*
* [REM-3176] Add plugin api to allow Remmina to display if a profile is... [!2619](https://gitlab.com/Remmina/Remmina/merge_requests/2619) *@myheroyuki*
* [REM-3177] Fix error message for failed RDP connection [!2620](https://gitlab.com/Remmina/Remmina/merge_requests/2620) *@myheroyuki*
* Add more detail to bug report to make certain issues easier to solve [!2621](https://gitlab.com/Remmina/Remmina/merge_requests/2621) *@myheroyuki*
* [REM-3176] Resize icons to fit flatpak specifications [!2622](https://gitlab.com/Remmina/Remmina/merge_requests/2622) *@myheroyuki*
## v1.4.36
[full changelog](https://gitlab.com/Remmina/Remmina/compare/v1.4.35...v1.4.36)
......
......@@ -36,7 +36,7 @@ cmake_policy(SET CMP0048 NEW)
project(
Remmina
VERSION 1.4.36
VERSION 1.4.37
DESCRIPTION "The Gtk Remote Desktop Client"
LANGUAGES C CXX
)
......@@ -129,6 +129,8 @@ if(NOT BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS ON)
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=incompatible-pointer-types")
if(CMAKE_COMPILER_IS_GNUCC)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES
"i686")
......
......@@ -38,7 +38,7 @@ PROJECT_NAME = "Remmina - The GTK+ Remote Desktop Client"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = v1.4.36
PROJECT_NUMBER = v1.4.37
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
......
......@@ -21,7 +21,7 @@
<summary xml:lang="hr">Klijent za upravljanje udaljenom radnom površinom</summary>
<content_rating type="oars-1.1" />
<releases>
<release version="1.4.36" date="2024-10-01"/>
<release version="1.4.37" date="2024-12-19"/>
</releases>
<description>
<p>
......
......@@ -64,6 +64,9 @@ set(APPICONSCALE_ACTIONS_DATA
set(APPICONSCALE_EMBLEMS_DATA
scalable/emblems/org.remmina.Remmina-sftp-symbolic.svg
scalable/emblems/org.remmina.Remmina-ssh-symbolic.svg
scalable/emblems/org.remmina.Remmina-status-red.svg
scalable/emblems/org.remmina.Remmina-status-grey.svg
scalable/emblems/org.remmina.Remmina-status-green.svg
)
install(FILES ${APPICONSCALE_ACTIONS_DATA} DESTINATION ${APPICONSCALE_ACTIONS_DIR})
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg1"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
sodipodi:docname="green_dot.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.81602132"
inkscape:cx="397.04845"
inkscape:cy="560.64712"
inkscape:window-width="1850"
inkscape:window-height="1136"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<circle
style="fill:#008000;stroke-width:0.169531"
id="path2"
cx="67.116829"
cy="67.765289"
r="66.79258" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="512"
viewBox="0 0 135.46667 135.46666"
version="1.1"
id="svg1"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
sodipodi:docname="gray_dot.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.81602132"
inkscape:cx="395.82299"
inkscape:cy="556.97074"
inkscape:window-width="1850"
inkscape:window-height="1136"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-0.32424927,-0.97270966)">
<ellipse
style="fill:#b3b3b3;stroke-width:0.170971"
id="path2"
cx="67.603188"
cy="68.413757"
rx="67.278938"
ry="67.441048" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="512"
height="512"
viewBox="0 0 135.46666 135.46667"
version="1.1"
id="svg1"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
sodipodi:docname="red_dot.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.81602132"
inkscape:cx="397.04845"
inkscape:cy="560.64712"
inkscape:window-width="1850"
inkscape:window-height="1136"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<ellipse
style="fill:#aa0000;stroke-width:0.170148"
id="path2"
cx="67.278946"
cy="68.089523"
rx="66.954697"
ry="67.116814" />
</g>
</svg>
......@@ -51,6 +51,7 @@ More details in COPYING</property>
Daniel Teichmann &lt;daniel.teichmann@das-netzwerkteam.de&gt;
Davy Defaud &lt;davy.defaud@free.fr&gt;
Marc-André Moreau &lt;marcandre.moreau@gmail.com&gt;
Marcel Telka &lt;marcel@telka.sk&gt;
Jean-Louis Dupond &lt;jean-louis@dupond.be&gt;
Matteo Nastasi &lt;nastasi@alternativeoutput.it&gt;
Johannes Weberhofer &lt;jweberhofer@weberhofer.at&gt;
......@@ -88,6 +89,7 @@ More details in COPYING</property>
Adolfo Jayme Barrientos &lt;fitojb@ubuntu.com&gt;
Солтыс Сергей &lt;treefeed@mail.ru&gt;
bhatman1441 &lt;blackhat1441@protonmail.com&gt;
Alex Meridian &lt;alex@meridian.family&gt;
朝歌 &lt;amtlib-dot-dll@users.noreply.github.com&gt;
Rex Tsai &lt;chihchun@kalug.linux.org.tw&gt;
antenore@simbiosi.org &lt;antenore@simbiosi.org&gt;
......@@ -124,6 +126,7 @@ More details in COPYING</property>
玉堂白鹤 &lt;yjwork@qq.com&gt;
Zlika &lt;zlika_ese@hotmail.com&gt;
Walter Cheuk &lt;wwycheuk@gmail.com&gt;
Weihao Jiang &lt;weihau.chiang@gmail.com&gt;
repzilon &lt;repzilon@users.noreply.github.com&gt;
remminafan1 &lt;32010086+remminafan1@users.noreply.github.com&gt;
Olexandr Nesterenko &lt;olexn@ukr.net&gt;
......
......@@ -569,6 +569,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<attribute name="text">5</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererPixbuf" id="renderer_files_list_status_icon">
<property name="stock_size">4</property>
</object>
<attributes>
<attribute name="icon-name">9</attribute>
</attributes>
</child>
</object>
</child>
</object>
......
......@@ -824,7 +824,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="halign">start</property>
<property name="margin-start">18</property>
<property name="margin-end">18</property>
<property name="margin-bottom">18</property>
<property name="draw-indicator">True</property>
</object>
<packing>
......@@ -832,6 +831,24 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="top-attach">9</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="checkbutton_appearance_mp_left">
<property name="label" translatable="yes">Display message prompts on the left side of the screen</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="margin-start">18</property>
<property name="margin-end">18</property>
<property name="margin-bottom">18</property>
<property name="active">True</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">10</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label_appearance__grab">
<property name="visible">True</property>
......
......@@ -68,6 +68,7 @@ static PyObject* remmina_register_plugin_wrapper(PyObject* self, PyObject* plugi
static PyObject* remmina_file_get_datadir_wrapper(PyObject* self, PyObject* plugin);
static PyObject* remmina_file_new_wrapper(PyObject* self, PyObject* args, PyObject* kwargs);
static PyObject* remmina_unlock_new_wrapper(PyObject* self, PyObject* args, PyObject* kwargs);
static void remmina_add_network_state_wrapper(PyObject* self, PyObject* args, PyObject* kwargs);
static PyObject* remmina_pref_set_value_wrapper(PyObject* self, PyObject* args, PyObject* kwargs);
static PyObject* remmina_pref_get_value_wrapper(PyObject* self, PyObject* args, PyObject* kwargs);
static PyObject* remmina_pref_get_scale_quality_wrapper(PyObject* self, PyObject* plugin);
......@@ -138,6 +139,10 @@ static PyMethodDef remmina_python_module_type_methods[] = {
*/
{ "unlock_new", (PyCFunction)remmina_unlock_new_wrapper, METH_VARARGS | METH_KEYWORDS, NULL },
/**
* Calls remmina_main_add_network_status and returns its result.
*/
{ "add_network_state", (PyCFunction)remmina_add_network_state_wrapper, METH_VARARGS | METH_KEYWORDS, NULL },
/**
* Calls remmina_pref_set_value and returns its result.
*/
......@@ -875,6 +880,26 @@ static PyObject* remmina_unlock_new_wrapper(PyObject* self, PyObject* args, PyOb
return PyBool_FromLong(python_wrapper_get_service()->plugin_unlock_new(window));
}
static void remmina_add_network_state_wrapper(PyObject* self, PyObject* args, PyObject* kwargs)
{
TRACE_CALL(__func__);
static char* kwlist[] = { "key", "value", NULL };
gchar* key, * value;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss", kwlist, &key, &value))
{
return;
}
if (key)
{
python_wrapper_get_service()->add_network_state(g_strdup(key), g_strdup(value));
}
python_wrapper_check_error();
return;
}
static PyObject* remmina_pref_set_value_wrapper(PyObject* self, PyObject* args, PyObject* kwargs)
{
TRACE_CALL(__func__);
......
......@@ -742,17 +742,22 @@ static gboolean remmina_rdp_event_on_scroll(GtkWidget *widget, GdkEventScroll *e
#if GTK_CHECK_VERSION(3, 4, 0)
case GDK_SCROLL_SMOOTH:
if (event->delta_y == 0.0)
if (event->delta_y != 0.0) {
flag = PTR_FLAGS_WHEEL;
windows_delta = event->delta_y * -120;
} else if (event->delta_x != 0.0) {
flag = PTR_FLAGS_HWHEEL;
windows_delta = event->delta_x * 120;
} else {
return FALSE;
windows_delta = event->delta_y * -120;
}
if (windows_delta > 255)
windows_delta = 255;
if (windows_delta < -256)
windows_delta = -256;
flag = PTR_FLAGS_WHEEL | ((short)windows_delta & WheelRotationMask);
flag |= ((short)windows_delta & WheelRotationMask);
break;
#endif
......
......@@ -214,7 +214,5 @@ void remmina_rdp_monitor_get (rfContext *rfi, gchar **monitorids, guint32 *maxwi
*maxwidth = destgeom.width;
*maxheight = destgeom.height;
REMMINA_PLUGIN_DEBUG("maxw and maxh: %ux%u", *maxwidth, *maxheight);
if (n_monitors > 1)
freerdp_settings_set_bool(rfi->clientContext.context.settings, FreeRDP_SupportMonitorLayoutPdu, TRUE);
*monitorids = g_strdup(buffer);
}
......@@ -2536,7 +2536,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget *gp)
break;
case FREERDP_ERROR_CONNECT_FAILED:
remmina_plugin_service->protocol_plugin_set_error(gp, _("Lost connection to the RDP server “%s”."), freerdp_settings_get_string(rfi->clientContext.context.settings, FreeRDP_ServerHostname));
remmina_plugin_service->protocol_plugin_set_error(gp, _("Failed to connect to the RDP server “%s”."), freerdp_settings_get_string(rfi->clientContext.context.settings, FreeRDP_ServerHostname));
break;
case FREERDP_ERROR_DNS_NAME_NOT_FOUND:
remmina_plugin_service->protocol_plugin_set_error(gp, _("Could not find the address for the RDP server “%s”."), freerdp_settings_get_string(rfi->clientContext.context.settings, FreeRDP_ServerHostname));
......
......@@ -58,7 +58,6 @@ static RemminaPluginService *remmina_plugin_service = NULL;
static int dot_cursor_x_hot = 2;
static int dot_cursor_y_hot = 2;
static int cl_select_counter = 0;
static const gchar *dot_cursor_xpm[] =
{ "5 5 3 1", " c None", ". c #000000", "+ c #FFFFFF", " ... ", ".+++.", ".+ +.", ".+++.", " ... " };
......@@ -683,15 +682,8 @@ static void remmina_plugin_vnc_rfb_fill_buffer(rfbClient *cl, guchar *dest, gint
}
}
gboolean remmina_plugin_vnc_rfb_updatefb(gpointer* data){
FrameInfo *frame = (FrameInfo*)data;
rfbClient *cl = frame->cl;
int x = frame->x;
int y = frame->y;
int w = frame->w;
int h = frame->h;
static void remmina_plugin_vnc_rfb_updatefb(rfbClient *cl, int x, int y, int w, int h)
{
TRACE_CALL(__func__);
RemminaProtocolWidget *gp = rfbClientGetClientData(cl, NULL);
RemminaPluginVncData *gpdata = GET_PLUGIN_DATA(gp);
......@@ -699,42 +691,25 @@ gboolean remmina_plugin_vnc_rfb_updatefb(gpointer* data){
gint rowstride;
gint width;
if (gpdata->running){
LOCK_BUFFER(TRUE);
if (w >= 1 || h >= 1) {
width = remmina_plugin_service->protocol_plugin_get_width(gp);
bytesPerPixel = cl->format.bitsPerPixel / 8;
rowstride = cairo_image_surface_get_stride(gpdata->rgb_buffer);
cairo_surface_flush(gpdata->rgb_buffer);
remmina_plugin_vnc_rfb_fill_buffer(cl, cairo_image_surface_get_data(gpdata->rgb_buffer) + y * rowstride + x * 4,
rowstride, gpdata->vnc_buffer + ((y * width + x) * bytesPerPixel), width * bytesPerPixel, NULL,
w, h);
cairo_surface_mark_dirty(gpdata->rgb_buffer);
}
if ((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE))
remmina_plugin_vnc_scale_area(gp, &x, &y, &w, &h);
UNLOCK_BUFFER(TRUE);
LOCK_BUFFER(TRUE);
remmina_plugin_vnc_queue_draw_area(gp, x, y, w, h);
if (w >= 1 || h >= 1) {
width = remmina_plugin_service->protocol_plugin_get_width(gp);
bytesPerPixel = cl->format.bitsPerPixel / 8;
rowstride = cairo_image_surface_get_stride(gpdata->rgb_buffer);
cairo_surface_flush(gpdata->rgb_buffer);
remmina_plugin_vnc_rfb_fill_buffer(cl, cairo_image_surface_get_data(gpdata->rgb_buffer) + y * rowstride + x * 4,
rowstride, gpdata->vnc_buffer + ((y * width + x) * bytesPerPixel), width * bytesPerPixel, NULL,
w, h);
cairo_surface_mark_dirty(gpdata->rgb_buffer);
}
free(frame);
return FALSE;
}
static void remmina_plugin_vnc_rfb_got_update(rfbClient *cl, int x, int y, int w, int h)
{
TRACE_CALL(__func__);
FrameInfo* frame = malloc(sizeof(FrameInfo));
frame->cl = cl;
frame->x = x;
frame->y = y;
frame->h = h;
frame->w = w;
g_idle_add(G_SOURCE_FUNC(remmina_plugin_vnc_rfb_updatefb), frame);
if ((remmina_plugin_service->remmina_protocol_widget_get_current_scale_mode(gp) != REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE))
remmina_plugin_vnc_scale_area(gp, &x, &y, &w, &h);
UNLOCK_BUFFER(TRUE);
remmina_plugin_vnc_queue_draw_area(gp, x, y, w, h);
}
static void remmina_plugin_vnc_rfb_finished(rfbClient *cl) __attribute__ ((unused));
......@@ -1164,37 +1139,33 @@ static gboolean remmina_plugin_vnc_main_loop(RemminaProtocolWidget *gp)
if (cl->buffered)
goto handle_buffered;
timeout.tv_sec = 5;
timeout.tv_sec = 10;
timeout.tv_usec = 0;
FD_ZERO(&fds);
FD_SET(cl->sock, &fds);
FD_SET(gpdata->vnc_event_pipe[0], &fds);
ret = select(MAX(cl->sock, gpdata->vnc_event_pipe[0]) + 1, &fds, NULL, NULL, &timeout);
cl_select_counter++;
/* Sometimes it returns <0 when opening a modal dialog in other window. Absolutely weird */
/* So we continue looping anyway */
if (ret <= 0){
if (ret <= 0)
return TRUE;
}
if (FD_ISSET(gpdata->vnc_event_pipe[0], &fds)){
if (FD_ISSET(gpdata->vnc_event_pipe[0], &fds))
remmina_plugin_vnc_process_vnc_event(gp);
}
if (FD_ISSET(cl->sock, &fds) || cl_select_counter >= 10) {
cl_select_counter = 0;
if (FD_ISSET(cl->sock, &fds)) {
i = WaitForMessage(cl, 500);
if (i < 0){
return TRUE;
}
if (i < 0)
return TRUE;
handle_buffered:
if (!HandleRFBServerMessage(cl)) {
gpdata->running = FALSE;
remmina_plugin_service->protocol_plugin_set_error(gp, "VNC connection timed out");
if (gpdata->connected && !remmina_plugin_service->protocol_plugin_is_closed(gp))
remmina_plugin_service->protocol_plugin_signal_connection_closed(gp);
return FALSE;
}
}
return TRUE;
}
......@@ -1214,7 +1185,6 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
gint colordepth = remmina_plugin_service->file_get_int(remminafile, "colordepth", 32);
gint quality = remmina_plugin_service->file_get_int(remminafile, "quality", 9);
gint timeout = remmina_plugin_service->file_get_int(remminafile, "timeout", 60);
while (gpdata->connected) {
gpdata->auth_called = FALSE;
......@@ -1249,10 +1219,7 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
cl->canHandleNewFBSize = TRUE;
cl->GetPassword = remmina_plugin_vnc_rfb_password;
cl->GetCredential = remmina_plugin_vnc_rfb_credential;
cl->GotFrameBufferUpdate = remmina_plugin_vnc_rfb_got_update;
cl->readTimeout = timeout;
cl->connectTimeout = timeout;
cl->GotFrameBufferUpdate = remmina_plugin_vnc_rfb_updatefb;
/**
* @fixme we have to implement FinishedFrameBufferUpdate
* This is to know when the server has finished to send a batch of frame buffer
......@@ -1263,7 +1230,6 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
* @fixme we have to implement HandleKeyboardLedState
* cl->HandleKeyboardLedState = remmina_plugin_vnc_rfb_led_state
*/
cl->FinishedFrameBufferUpdate = remmina_plugin_vnc_rfb_finished;
cl->HandleKeyboardLedState = remmina_plugin_vnc_rfb_led_state;
cl->GotXCutText = (
remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ?
......@@ -1390,8 +1356,15 @@ static gboolean remmina_plugin_vnc_main(RemminaProtocolWidget *gp)
if (!gpdata->connected) {
REMMINA_PLUGIN_DEBUG("Client not connected with error: %s", vnc_error);
if (cl && !gpdata->auth_called && !(remmina_plugin_service->protocol_plugin_has_error(gp)))
remmina_plugin_service->protocol_plugin_set_error(gp, "%s", vnc_error);
if (cl && !gpdata->auth_called && !(remmina_plugin_service->protocol_plugin_has_error(gp))){
if (remmina_plugin_service->file_get_int(remminafile, "closeonfailure", FALSE)){
//Do nothing to close immediately
}
else{
remmina_plugin_service->protocol_plugin_set_error(gp, "%s", vnc_error);
}
}
gpdata->running = FALSE;
remmina_plugin_service->protocol_plugin_signal_connection_closed(gp);
......@@ -2085,10 +2058,6 @@ static gchar repeater_tooltip[] =
" the repeater, e.g. with x11vnc:\n"
" x11vnc -connect repeater=ID:123456789+10.10.10.12:5500");
static gchar timeout_tooltip[] =
N_("Time in seconds to wait while reading from the VNC server before disconnecting:\n"
" • Set to 0 to disable any timeout\n");
static gchar vnciport_tooltip[] =
N_("Listening for remote VNC connection:\n"
" • The “Listen on port” field is the port Remmina will listen to,\n"
......@@ -2137,7 +2106,6 @@ static const RemminaProtocolSetting remmina_plugin_vnc_basic_settings[] =
{ REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Colour depth"), FALSE, colordepth_list, NULL, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_INT, "timeout", N_("Disconnect Timeout"), FALSE, NULL, timeout_tooltip, NULL, NULL},
{ REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP, "keymap", NULL, FALSE, NULL, NULL, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL, NULL, NULL }
};
......@@ -2150,7 +2118,6 @@ static const RemminaProtocolSetting remmina_plugin_vnci_basic_settings[] =
{ REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD, "password", N_("User password"), FALSE, NULL, NULL, NULL, NULL},
{ REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "colordepth", N_("Colour depth"), FALSE, colordepth_list, NULL, NULL, NULL},
{ REMMINA_PROTOCOL_SETTING_TYPE_SELECT, "quality", N_("Quality"), FALSE, quality_list, NULL, NULL, NULL},
{ REMMINA_PROTOCOL_SETTING_TYPE_INT, "timeout", N_("Disconnect Timeout"), FALSE, NULL, timeout_tooltip, NULL, NULL},
{ REMMINA_PROTOCOL_SETTING_TYPE_KEYMAP, "keymap", NULL, FALSE, NULL, NULL, NULL, NULL},
{ REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL, NULL, NULL}
};
......@@ -2177,6 +2144,7 @@ static const RemminaProtocolSetting remmina_plugin_vnc_advanced_settings[] =
{ REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Turn off clipboard sync"), TRUE, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableencryption", N_("Turn off encryption"), FALSE, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "viewonly", N_("View only"), TRUE, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "closeonfailure", N_("Close on connection failure"), TRUE, NULL, NULL },
{ REMMINA_PROTOCOL_SETTING_TYPE_END, NULL, NULL, FALSE, NULL, NULL }
};
......
......@@ -34,8 +34,6 @@
#pragma once
#include "common/remmina_plugin.h"
#include <rfb/rfbclient.h>
#ifndef __PLUGIN_CONFIG_H
#define __PLUGIN_CONFIG_H
......@@ -121,14 +119,6 @@ typedef struct _RemminaPluginVncData {
} RemminaPluginVncData;
typedef struct _FrameInfo{
rfbClient *cl;
int x;
int y;
int w;
int h;
} FrameInfo;
enum {
REMMINA_PLUGIN_VNC_EVENT_KEY,
REMMINA_PLUGIN_VNC_EVENT_POINTER,
......
......@@ -427,7 +427,7 @@ static void remmina_plugin_www_init(RemminaProtocolWidget *gp)
cache_dir = g_build_path("/", datapath, "cache", NULL);
REMMINA_PLUGIN_DEBUG("WWW data path is %s", datapath);
if (datapath) {
if (datapath && datapath[0 != '\0']) {
gchar *indexeddb_dir = g_build_filename(datapath, "indexeddb", NULL);
gchar *local_storage_dir = g_build_filename(datapath, "local_storage", NULL);
gchar *applications_dir = g_build_filename(datapath, "applications", NULL);
......
......@@ -6,7 +6,7 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Remmina v1.4.36\n"
"Project-Id-Version: Remmina v1.4.37\n"
"Report-Msgid-Bugs-To: l10n@lists.remmina.org\n"
"POT-Creation-Date: 2024-02-08 11:49+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
......