NotepadNext icon indicating copy to clipboard operation
NotepadNext copied to clipboard

Opening a file when another instance is already is running sometimes fails

Open swiftgeek opened this issue 1 year ago • 6 comments

Opening a file when another instance is already is running sometimes fail, ending up with just raising a window and not actually opening the file (ie. MainWindow::bringWindowToForeground() runs in primary instance, but it's not followed by NotepadNextApplication::openFiles(const QStringList&) or anything else )

It might be my imagination, but the more tabs are open the higher the chances of it failing

NotepadNext 0.7 running on linux

New file opened using NotepadNext "/home/user/dir/foo bar.txt"

swiftgeek avatar Apr 07 '24 01:04 swiftgeek

What version of Linux? Is the AppImage or Flatpack?

dail8859 avatar Apr 07 '24 02:04 dail8859

I have also encountered the same problem under MAC. When NN is already open and minimized, double-clicking another file will not wake up NN. The NN window needs to be restored manually, then the file will be imported by NN.

Kapture 2024-04-07 at 12.36.39.webm

ErickWei avatar Apr 07 '24 04:04 ErickWei

Archlinux, installed from AUR

@ErickWei that sounds like exact opposite to my problem

swiftgeek avatar Apr 07 '24 04:04 swiftgeek

Ohh it could be another issue sorry

Archlinux, installed from AUR

@ErickWei that sounds like exact opposite to my problem

ErickWei avatar Apr 07 '24 04:04 ErickWei

Actually if I minimize like in @ErickWei test case it feels like it's failing a lot less

Normally I'm just switching virtual desktops on KDE

swiftgeek avatar Apr 07 '24 04:04 swiftgeek

Archlinux, installed from AUR

I'm not sure who maintains that repository but I'm assuming this is a general Linux issue and not specifical to Archlinux+AUR.

I have also encountered the same problem under MAC.

There's a few different components to all this working. And it works different depending on OS.

The first part is just forcing the window to be maximized and forcing it to the front of everything else. Most operating systems deem this as being malicious and make it difficult to do this.

The MainWindow::bringWindowToForeground() method probably needs more specific implementations for Linux and Mac. I've had to implement one for Windows just because Qt doesn't provide a good cross-platform way to do it that I've found.

The other piece is sending the information of the file to open to the other instance. It relies on the 3rd party library to implement this and I know there were issues on Qt6.6+. Mac also works slightly differently when telling another instance to open a file. So I'm not completely sure why this would be failing.

I did just recently add some extra debugging info into the application to hopefully help troubleshoot but this will probably be difficult since it seems to be so OS specific.

dail8859 avatar Apr 07 '24 14:04 dail8859