<feed xmlns='http://www.w3.org/2005/Atom'>
<title>subsurface.git/desktop-widgets, branch v4.8.0</title>
<subtitle>forked from https://github.com/subsurface/subsurface</subtitle>
<id>https://git.tsegers.com/subsurface.git/atom?h=v4.8.0</id>
<link rel='self' href='https://git.tsegers.com/subsurface.git/atom?h=v4.8.0'/>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/'/>
<updated>2018-06-26T06:06:07Z</updated>
<entry>
<title>desktop: fix multi-keystroke input on location</title>
<updated>2018-06-26T06:06:07Z</updated>
<author>
<name>Murillo Bernardes</name>
<email>mfbernardes@gmail.com</email>
</author>
<published>2018-06-26T04:17:00Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=2de814fec83a2baf6d0fbaba38a45e094b01fffc'/>
<id>urn:sha1:2de814fec83a2baf6d0fbaba38a45e094b01fffc</id>
<content type='text'>
When the tooltip is hidden QInputMethodEvent is handled
by QLineEdit and works properly.
When the tooltip is visible DiveLocationListView gains
focus and receives QInputMethodEvent, without handling
them properly.

This patch just forwards the event back to the QLineEdit
object.

Fix #1405

Signed-off-by: Murillo Bernardes &lt;mfbernardes@gmail.com&gt;
</content>
</entry>
<entry>
<title>Localization: make cache thread safe and robust against use-after-free</title>
<updated>2018-06-24T18:31:14Z</updated>
<author>
<name>Berthold Stoeger</name>
<email>bstoeger@mail.tuwien.ac.at</email>
</author>
<published>2018-06-17T21:28:44Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=db0dd54c376eb25263059075e5103f0849ef2ffe'/>
<id>urn:sha1:db0dd54c376eb25263059075e5103f0849ef2ffe</id>
<content type='text'>
The old trGettext() was not thread-safe and the returned C-strings
could be freed in the case of empty translations strings. Therefore:

1) Introduce a mutex protecting access to the cache.

2) Never change existing entries, even if the translation string is empty.

Signed-off-by: Berthold Stoeger &lt;bstoeger@mail.tuwien.ac.at&gt;
</content>
</entry>
<entry>
<title>Localization: remove gettextFromC::instance()</title>
<updated>2018-06-24T18:31:14Z</updated>
<author>
<name>Berthold Stoeger</name>
<email>bstoeger@mail.tuwien.ac.at</email>
</author>
<published>2018-06-17T19:03:16Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=879cb73b8bda364f63cc97c0f9963cfddc581add'/>
<id>urn:sha1:879cb73b8bda364f63cc97c0f9963cfddc581add</id>
<content type='text'>
There were a handfull instances of the kind
1) gettextFromC::instance()-&gt;tr(...)
2) gettextFromC::instance()-&gt;trGettext(...)

1) is pointless, as tr is a static function.

All instances of 2) were likewise pointless, because trGettext()
returns a C-string, which was then immediately converted to a
QString.

Thus, replace both constructs by gettextFromC::tr(...).

After this change there was only one user of gettextFromC::instance()
left, viz. the C-interface funtion trGettext(). Therefore, remove
gettextFromC::instance() and do all the caching / translating
directly in the global trGettext().

Signed-off-by: Berthold Stoeger &lt;bstoeger@mail.tuwien.ac.at&gt;
</content>
</entry>
<entry>
<title>android/desktop: remove mapWidget from subsurface.qrc</title>
<updated>2018-06-22T03:27:58Z</updated>
<author>
<name>jan Iversen</name>
<email>jani@apache.org</email>
</author>
<published>2018-06-20T14:06:49Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=5df93e084d7be1cf3942fabc69bae884fcf5f1f4'/>
<id>urn:sha1:5df93e084d7be1cf3942fabc69bae884fcf5f1f4</id>
<content type='text'>
remove mapWidget entries from subsurface.qrc, and
add reference to map-widget.qrc in CMakelist.txt

Android uses the same CMakelist.txt

Signed-off-by: Jan Iversen &lt;jani@apache.org&gt;
</content>
</entry>
<entry>
<title>equipment: sanitize 'tank_info' loop limits</title>
<updated>2018-06-20T00:30:58Z</updated>
<author>
<name>Lubomir I. Ivanov</name>
<email>neolit123@gmail.com</email>
</author>
<published>2018-06-19T00:19:56Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=769aca9e956cd4bb7cc97be813968348f5e7f3d2'/>
<id>urn:sha1:769aca9e956cd4bb7cc97be813968348f5e7f3d2</id>
<content type='text'>
In a number of places the global 'tank_info' array
is being iterated based on a 'tank_info[idx].name != NULL'
condition.

This is dangerous because if the user has added a lot of tanks,
such loops can reach 'tank_info[MAX_TANK_INFO]'. This is an
out of bounds read and if the 'name' pointer there happens to be
non-NULL, passing that address to a peace of code that tries
to read it (like strlen()) would either SIGSEGV or have undefined
behavior.

Clamp all loops that iterate 'tank_info' to MAX_TANK_INFO.

Signed-off-by: Lubomir I. Ivanov &lt;neolit123@gmail.com&gt;
</content>
</entry>
<entry>
<title>In dive picture shift time dialog suppress double triggering of timeEdit</title>
<updated>2018-06-18T06:08:27Z</updated>
<author>
<name>Stefan Fuchs</name>
<email>sfuchs@gmx.de</email>
</author>
<published>2018-06-17T18:22:55Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=0a3fe87f54170f7814efbf3a4c5faf3eab7d8cba'/>
<id>urn:sha1:0a3fe87f54170f7814efbf3a4c5faf3eab7d8cba</id>
<content type='text'>
In dive picture shift time dialog when pressing the up or down arrow
of the timeEdit widged there is some risk of double triggering because
the function called after this UI action ("updateInvalid()") can have
quite some runtime.

Suppress any potential double triggering by disabling the timeEdit
widget after each change until the code is processed.

Signed-off-by: Stefan Fuchs &lt;sfuchs@gmx.de&gt;
</content>
</entry>
<entry>
<title>Change from gettextFromC::instance()-&gt;tr() to gettextFromC::tr();</title>
<updated>2018-06-18T05:42:39Z</updated>
<author>
<name>Stefan Fuchs</name>
<email>sfuchs@gmx.de</email>
</author>
<published>2018-06-17T15:55:47Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=c953aadcf82ee050102e228bf08bcff76886caaa'/>
<id>urn:sha1:c953aadcf82ee050102e228bf08bcff76886caaa</id>
<content type='text'>
Code cleanup.

Suggested-by: Berthold Stoeger &lt;bstoeger@mail.tuwien.ac.at&gt;
Signed-off-by: Stefan Fuchs &lt;sfuchs@gmx.de&gt;
</content>
</entry>
<entry>
<title>Use correct "tr" call for translating dive mode names</title>
<updated>2018-06-18T05:42:39Z</updated>
<author>
<name>Stefan Fuchs</name>
<email>sfuchs@gmx.de</email>
</author>
<published>2018-06-17T06:48:54Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=88e6ba2f61cb1cf92787d8bdd2be499744ac546d'/>
<id>urn:sha1:88e6ba2f61cb1cf92787d8bdd2be499744ac546d</id>
<content type='text'>
Correctly use gettextFromC::instance()-&gt;tr(); instead of a simple
tr(); to translate the dive mode names.
This goes on top of 0bc9edf855caf95e2d58ccaf704ceeda079e06f1
and finally makes the whole thing work.

Signed-off-by: Stefan Fuchs &lt;sfuchs@gmx.de&gt;
</content>
</entry>
<entry>
<title>Dive computers: turn QMultiMap into sorted vector</title>
<updated>2018-06-16T21:53:13Z</updated>
<author>
<name>Berthold Stoeger</name>
<email>bstoeger@mail.tuwien.ac.at</email>
</author>
<published>2018-06-16T12:06:35Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=1f654050fa7e461166ee4d8b46d66b4ca91f31d4'/>
<id>urn:sha1:1f654050fa7e461166ee4d8b46d66b4ca91f31d4</id>
<content type='text'>
The list of known dive computers was stored in a multi-map indexed
by the device name. Turn this into a sorted QVector. Thus, no
map-to-list conversion is needed in the device editing dialog,
which distinctly simplifies the code.

Signed-off-by: Berthold Stoeger &lt;bstoeger@mail.tuwien.ac.at&gt;
</content>
</entry>
<entry>
<title>Cleanup: fold DiveComputerManagementDialog::update() into init()</title>
<updated>2018-06-16T21:53:13Z</updated>
<author>
<name>Berthold Stoeger</name>
<email>bstoeger@mail.tuwien.ac.at</email>
</author>
<published>2018-06-15T21:51:28Z</published>
<link rel='alternate' type='text/html' href='https://git.tsegers.com/subsurface.git/commit/?id=b0cc4169549e34781e63b25a016b05f1334f33cd'/>
<id>urn:sha1:b0cc4169549e34781e63b25a016b05f1334f33cd</id>
<content type='text'>
update() was only called in conjunction with init(). No point in
having two functions. The separation between both functions seemed
arbitrary anyway.

Signed-off-by: Berthold Stoeger &lt;bstoeger@mail.tuwien.ac.at&gt;
</content>
</entry>
</feed>
