Chatterino / chatterino2

Chat client for https://twitch.tv
MIT License
1.97k stars 442 forks source link

Emote window position isnt saved after restarting Chatterino #5414

Closed makedir closed 1 month ago

makedir commented 1 month ago

Checklist

Describe your issue

Emote window position isnt saved afer restarting Chatterino, always spawns on left top corner. Please give option to make it always spawn left or right next to Chaterino window.

Screenshots

No response

OS and Chatterino Version

2.5.1 Windows 11

Felanbird commented 1 month ago

Cannot replicate on windows 10

CaptainFlint commented 1 month ago

I have the same issue on Windows 10. I open Chatterino, click the emotes button to open the dialog. Move it to some place, change its size; the resulting position is like this:

image Full size image

Then I restart Chatterino, open the emotes dialog again, and it appears like this:

image Full size image

Neither position, nor size are remembered. The dialog is not even fully visible, part of it is hidden beyond the lower border of the screen (if I pull the dialog up without changing its size, there will be two extra lines of emotes visible).

I had this behavior for as long as I can remember, even when I was working in Windows 7. I just never got around to reporting it.

Nerixyz commented 1 month ago

I noticed the emote window moves by 8 pixels every time it's reopened. For me on Windows 10, the following change fixes this: https://github.com/Nerixyz/chatterino2/commit/391111afe7fa8c9ae70ca0621ac078d1c39045ed

However, I can't replicate the emote window moving more than 8px. It might be good to mention if you're using any high-DPI scaling or change your monitor layout frequently.

CaptainFlint commented 1 month ago

My display configuration is a single monitor 2560x1440 resolution, default 100% scaling.

I also noticed that the windows:emotePopup:x/y in window-layout.json are used for restoring the position, but these values are never saved by Chatterino. No matter where I move the dialog over the screen, those x/y coordinates in the json file are never updated. But if I edit them manually, next time I open the emote dialog its position reflects the change. (And, of course, there are no issues with write access or anything stupid like that, I checked; other data in the same file are updated properly.)

Also, indeed, there is a shift in those coordinates. I made a screenshot of the whole display and measured the 0-based coordinates of the top left corner after moving the dialog, wrote them into the json, and next time the dialog is opened it's displaced by (-8, -1) compared to what is written in the JSON.

Nerixyz commented 1 month ago

I also noticed that the windows:emotePopup:x/y in window-layout.json are used for restoring the position, but these values are never saved by Chatterino. No matter where I move the dialog over the screen, those x/y coordinates in the json file are never updated.

Chatterino doesn't record the position of the emote popup until it's closed, and doesn't save it until the main app is closed, or a window is moved/resized. I've added that in my branch.

CaptainFlint commented 1 month ago

Of course, I was checking the JSON file only after closing the application, not while it was running. Sorry, should have mentioned it, but thought it was obvious.

Also, while we're at it, why is only the position of the emotes dialog processed and not the size? For the main window size is also stored. It would make sense to keep/restore the emotes dialog size too.

Nerixyz commented 1 month ago

Also, while we're at it, why is only the position of the emotes dialog processed and not the size? For the main window size is also stored. It would make sense to keep/restore the emotes dialog size too.

That's a good idea. I've done that in the PR. Ideally, we'd do that for more windows (e.g. the settings window - https://github.com/Chatterino/chatterino2/issues/2583) in the future. It also resolves the invisible-bounds issue.

makedir commented 1 month ago

Please give an option you can set where to auto open the emji window:

and then auto attach to main window.

makedir commented 2 weeks ago

Not totally fixed. Still is buggy and wont save / attach emoji wndow when you use standalone client start option -c channel. @pajlada

pajlada commented 2 weeks ago

Not totally fixed. Still is buggy and wont save / attach emoji wndow when you use standalone client start option -c channel. @pajlada

Nothing is saved when you use -c - so I would say this is the expected behaviour.

makedir commented 2 weeks ago

Not accetable. Then fix "-c" mode and change that behavior or add another option to disable that behavior.

pajlada commented 2 weeks ago

Not accetable. Then fix "-c" mode and change that behavior or add another option to disable that behavior.

There's nothing to fix when it's the intended behaviour - it's for use with other applications that want to launch Chatterino in scenarios where you might have multiple instances of Chatterino running at the same time.

I don't know what option to add since I don't know the use case. You can build Chatterino from source and disable the dontSaveSettings part of Args.cpp

makedir commented 2 weeks ago

You dont need to answer to this. This Issue report was all about the nonsense implementation, that the emoji gui is seperated. This makes zero sense. It needs to be autodocked to the main window or removed at all as a seperate buggy window.

pajlada commented 2 weeks ago

Seems like we misunderstood your original report then - in the future you can try reducing the scope of the report, or being clearer with your wording to ensure that doesn't happen