This adds support for multi-byte builds. Users building qTox in
multi-byte instead of unicode mode would otherwise get compiler errors.
This is one step in the direction of making qTox a library with the UI
being just one application of it: it gives library users a choice of how
they build it.
Change closeEvent() to hideEvent() for handling main window closing.
Close event is no longer ignored, which prevented logging out from
various Linux desktop environments.
Closes#1485
In cmake builds, `__FILE__` is the absolute file path. In qmake, it's a
relative path. For in-tree qmake builds, it would be `"src/..."`, for
out of tree, it could be `"../src/..."` or `"../qTox/src/..."` or any
other relative path depending on how qTox was built. This change
normalises them to paths based in src.
Fixed#3660. Removed using of GUI class in Profile Importer. Because, it
cannot be used before Nexus instance will be created. As result, it
provide crash in some cases.
There have been numerous issues about it from confused users,
e.g. #2698, #2870, #3638. Clearly tooltip alone is not enough.
Could have been done long time ago in #2818, if not for naive belief
that tooltip will suffice.
This commit fixes missing scaling factors with desktop video to allow
desktop video under HiDPI scaling to work as intended. Also removes a
few obsolete lines of scaling that that was required for older Qt
versions.
Makes changes to settings application wide transparent. The properties section is optional in theory, but comes in very handy, if we decide to access settings e.g. from within a script context.
There is no documentation about what this function is supposed to do or what it
should return, so I'm just guessing it's a success boolean, so it should be
returning true.
initramfs (26):
feat(video): redesign and improve VideoFrame class
fix(video): fix CoreAV and VideoSurface to conform to new VideoFrame
refactor(video): rename and make the frame alignment propety public
fix(video): fix memory leak caused by unfreed buffers in CoreVideoSource
fix(video): fix slanted video when video size is not divisible by 8
refactor(video): use a new ToxAVFrame structure instead of vpx_image
refactor(video): static cast video dimensions to suppress warnings
feat(video): adds an ID parameter to the VideoSource class
refactor(video): internalize frame reference counting
feat(video): add accessor functions for sourceID and frameID
refactor(video): make type aliases public
refactor(video): use generics to simply VideoFrame conversion functions
refactor(video): rename ToxAVFrame to ToxYUVFrame and add documentation
refactor(video): update documentation to match new format (issue #3559)
refactor(videoframe): correct mistakes in commit documentation format
fix(video): fix a use-after-free with VideoFrame
fix(video): added declaration for missing biglock in CameraSource
docs(video): remove old unnecessary comment pertaining to removed code
fix(video): fix invalid VideoSource ID allocation
fix(video): specify color ranges for pixel formats that are not YUV
fix(video): use a QReadWriteLock to manage camera access
fix(video): force the use of non-deprecated pixel formats for YUV
refactor(video): update code and documentation to honour QSize validity
refactor(videoframe): move all inline/template functions into source
fix(video): guard storeVideoFrame() against freeing in-use memory
feat(video): add a isValid() function to ToxTUVFrame
This commit fixes an issue where storeVideoFrame() can in rare cases
free memory that is still in use. Also adds extra documentation
documenting it's precise usage.
This commit changes the mutex-memfence combination to a pure-mutex
implementation within CameraSource. This should prevent a lot of
pre-existing race conditions from happening.
This commit fixes the an invalid ID allocation by VideoSource, before
this commit all VideoSources receives the same ID causing VideoFrame to
believe all frames belong to the same video source.
Additionally, this commit addresses issues with deprecated pixel
formats and silences libswscale warnings.
This commit replaces the contents of toQImage(), toToxAVFrame() and
getAVFrame() with speciailized calls to a generic toGenericObject()
function for better code clarity.
This commit takes the frame tracking code and internalizes it into the
VideoFrame class itself for better reusability. The code in
CameraSource has since been removed.
Instead of misusing an existing structure from another library, defines
a new simpler structure that reflects the capabilities of the ToxAV
transport mechanism.
* rename file avsettings.ui -> avform.ui, introducing seamless switching between UI/Code
* switch to "private multi-inheritance" pattern, which has several advantages
Don't hard-code ":0" as the display and try and use the DISPLAY
environment variable instead.
This fixes screen grabbing under X11 when the user is not on screen 0.
Fix#3500.
Diadlo (12):
refactor(avform): Extracted functions with best mode search and combo box filling
refactor(avform): Replace `bestModeInds` on videoMode index and video height as quality name
refactor(avform): Separeted search of preferred index in function
fix(avform): Took default resolution from middle of list
feat(videomode): Added possible video shift
feat(cameradevice, avform): Added ability of screen selection
feat(avform, screenshotgrabber): Added custom screen region selection
style(corevideosource): Small style fixes
fix(videoframe): Added correct image copy
fix(avform): Added restoring selected region
feat(camerasource): Change default video mode to preferred
fix(directshow): Fixed problem with crosses initialization
fix chat area's inner stylesheet
note: the base font is never a bold font (respects html tags: e.g. <b>bold text</b>)
fix block colors:
* action -> blue
* alert -> red
* quote -> green
BREAKING CHANGE: Current markdown syntax is unintuitive, and thus we have agreed on switching to @SkyzohKey's implementation. Replaces all instances of Markdown with Text Styling. Closes#3404.
Setting "currentFont" fires a "currentFontChanged" signal, causing the wrong font pixel-size. After changing the order, the values still overwrite the font settings - yet with the correct values. Probably all signals should be blocked in c'tor during initialization of the settings widget(s) to avoid overwriting any settings.
Call buttons would be enabled but non-functional if you were looking at a friend who was offline. We now check if the friend is offline and disable the call buttons if so.
Fixes#2480
The GUI was deleting itself on logout, but was doing while deep inside the middle of GUI code, resulting in a series of use-after-free on the return path. We now freeze the GUI and logout asynchronously in a more suitable call stack.
Importing a profile, saving a QR code image or setting an auto-accept directory using Nautilus as the default file manager, which many users use, was causing a hang in Qt's method. Setting Qt to use it's own file manager in this circumstance fixes the issue. Closes#3436, closes#3443.
As esecially the "Disabled" text is translated, the audio device will change from "disabled" to "default", just by changing the language.
In contrast to video devices, an audio device is either always available, or sound will be disabled. So "Disabled" is the correct term to use here.
API:
* open default in/out device, when device name is empty
* move privatized code
* fix unsigned/signed conversion warnings
UI (settings):
* refactor: select audio devices by combobox index
Add setFocus() call to make password input focus work after user
clicks Load button (hence losing focus) with invalid password.
Without this patch, focus only works when using Enter key to login.
Spaces were being inserted before and after markdown translated code which could potentially change intended meaning and/or presentation of the user's message. I believe these were necessary for dealing with an earlier bug but from my testing they are no longer needed.
QVector<T>::removeOne() was added in Qt 5.4, and this method usage
broke build for Debian 8 whitch has Qt 5.3.2.
Add alternative implementation and comment for the future to use
removeOne() when this becomes possible.
Closes#3416
Colomban Wendling (10):
fix(capslockindicator): fix altering the line edit height
fix(capslock_x11): properly release the X display handle
refactor(capslockindicator): encapsulate event handling
fix(capslockindicator): also update indicator when the app gets focus
refactor(capslockindicator): expose as a QAction to simplify API
refactor(capslockindicator): use a single shared event handler
refactor(capslockindicator): avoid overhead on OSX
refactor: replace CapsLockIndicator with new PasswordEdit widget
fix(passwordfields): use PasswordEdit widget for all password fields
refactor(passwordedit): don't add the caps indicator at all if disabled
Introduce a new PasswordEdit widget extending QLineEdit that takes care
of all the specifics of a QLineEntry when it is used to input a
password, including echo mode and caps lock indicator.
Also optimize the event handling to only listen to global events when
it is actually needed, e.g. when a password field is actually visible.
Optimize the implementation by using a single shared event handler,
managing the caps lock state check and propagating it appropriately to
all instances at once.
This allows to have an up-to-date indicator when the caps lock state
changed outside of the application and the user comes back to it, even
if it doesn't trigger a Show event (e.g. the window was visible all the
time).
* The initial status icon to set on GTK didn't exist (anymore?).
* GTK resources aren't compatible with Qt's, so the resource lookup
couldn't work anyway, even if it did exist.
* The caller calls SystemTryIcon::setIcon() right after instancing it
anyway, so there's no need for an initial icon.
This fixes a runtime critical warning from GTK as we tried to unref a
NULL icon, which is invalid.
Fixes#3154.
Also simplify the memory management by using the C++ allocator and by
using the bytes directly as passed to the free callback instead of
passing it again as user data.
Fix altering the Line Edit widget height when the indicator is on (e.g.
when caps lock is active).
To avoid messing with the style and all the complex issues that arise
from it, use an action to display the icon inside the line edit, as it
is a built-in feature that work just fine.
Fixes#3379.
Do not provide more than one entry in the settings for the same actual
mode, even if it was selected for different expected resolutions.
For example, do not list 640x480 twice for both 480p and 360p if the
device doesn't have a better 360p mode, and simply skip the 360p entry.
Diadlo (10):
feat(capslock): Added caps lock checker
feat(loginform): Added caps lock indicator to newPass
feat(loginscreen): Created new CapsLockIndicator class
feat(capslockindicator): Added tooltip
fix(platform): Added checkCapsLock OSX implementation
docs(INSTALL.md): Added libX11 in dependencies
refactor(loginscreen, capslockindicator): Caps Lock indicator class was made independent
fix(capslockindicator): Tooltip color was changed. Tooltip translation was added
style(capslockindicator): Fixed code style
fix(capslockindicator): Fix position of capslock indicator
PafXUS (4):
fix(widget): delete icon in destructor
fix(systemtrayicon): delete qtIcon in destructor
fix(profileform): set parent for validator
fix(friendwidget): check pointer before using it
Index the filtered modes we show to the user when selecting from the
combobox, not the full list of modes actually supported by the device.
Fixes#1033.
Alexander Zhdanov (3):
feat(genericchatform): add "Quote selected text" feature to chat window
docs(user_manual_en.md): add some documentation about quotes
docs(user_manual_en.md): fix documentation about quotes
The filter_audio API is not working for qTox/Tox and thus disabled by default via compiler switch. In current qTox UI, it is not configurable, even when this switch is enabled. According to issue #3194 the library is no longer maintained as well. I don't see any reason to keep it in qTox.