Multiple tray icons when using TrayItem in Windows 10 - swt

I have a standalone Java based SWT in the front end application. I contribute a custom icon to the system tray menu using SWT tray
trayItem.setImage(image);
Now whenever my application is closed, I dispose of the tray item.
But when my system goes to sleep and comes back again, the application is very much running. When the system comes back again, my application tries to update the tray item's image.
While updating the image I see multiple tray icons appear in the system tray. So the number of icons keep on increasing as many times as my applications wakes up.
Unfortunately this is only reproducible on Windows 10 but not on earlier versions. Has anyone experienced this problem? I don't have any windows 10 system with me. Otherwise I could have written a sample code to reproduce it.

Fix for this issue is available from Eclipse 4.7 (Oxygen).

You are facing bug defined on below link
https://bugs.eclipse.org/bugs/show_bug.cgi?id=488739.
You need SWT 4.7+, the issue has been fixed in the same

Related

Does anyone else have this showing in eclipse?

This hasn't happened before, but recently I noticed eclipse having two windows opened at the same time. Is this normal? Or a virus of some sort? Here is a picture to show you what I mean:
http://icap.me/i/SdHY5YGBB6.php
Sorry for the bad quality (took it on my phone). Eclipse is on the left and the window opened with it is on the right. Thanks
I've seen a second window before when Eclipse has been terminated just after opening its splash screen, leaving the screen open from a process in some odd state. Use task manager to see if you can force one of the processes closed.

Eclipse IDE - Is it possible to have detached windows not always on top?

Basically I have multiple monitors for development with Eclipse. I detach some of the windows such as the "Console" view so that I can have it fill my monitor. This is great as I can fill up my screens.
However in some cases I also want to have my browser in front while I'm coding since there's some documentation I need to look at. I can't figure out how to do this without creating another perspective...
You can open a new window (Window|New Window) and drag your views into this window instead of detaching them. New windows are not connected with the main one and you can control their visibility as you wish.
The answer appears to be that you can't...
In Eclipse Luna I had the problem that floating windows were not coming up while setting the focus on the main IDE window. It happened after I changed from 32 to 64bit using the same workspace. The windows were opened and closed correctly.
What solved the problem was reintegrating the floating windows into the main IDE window and recreated floating windows again.

Empty Dialogs in Flex Builder

I have been experiencing a strange issue in Flex Builder 3 where certain dialogs such as the Add New Project wizard and the SVN Commit dialog are completely empty save for the title area.
I'm running Flex Builder v3.0 (build 3.02.2.214193) on the Windows 7 RC. I have tried completely uninstalling and reinstalling Flex Builder to no avail. I don't think it's Windows 7 causing the issues because it was working a couple of months ago with no problems. Even more strange is that I have not installed any additional plugins or made any configuration changes to Flex Builder between the time before these problems began and now.
Has anyone else encountered this problem, and if so, know of any solutions?
Here are a couple of screenshots to illustrate the behaviour.
alt text http://www.colincochrane.com/image.axd?picture=2009%2f9%2fdialog2.PNG
alt text http://www.colincochrane.com/image.axd?picture=2009%2f9%2femptydialog.png
You are probably running Logitech SetPoint. Try killing all setpoint processes. (you don't even have to restart flex). It worked for me :-S
According to this Adobe forums post, there are multiple causes:
SetPoint (as indicated by Scheea)
Wacom Tablet drivers
In addition, comments suggest the following:
UltraMon
These seem to suggest that the cause is any program which monitors keystrokes or mouse movement.
Workaround: In the new wizard dialog above, note the question mark on the bottom left (the help button). When you click on the help button a help panel is added to the dialog on the right separated from the main dialog by a splitter. When you drag the splitter the rest of the dialog appears. You may need to scroll to a position where you can see all of its contents, but it should become usable. Resizing the dialog alone was not sufficient for me.
In addition, I couldn't fully use the mouse to select elements so I had to type into the filter field in order for the correct projects to show up.
I had the issue with Window7 x64 Ultimate with FB3 Pro and shutting down Set Point seems to have fixed the issue.
For me it was Set Point and Display Fusion (allows you to set up multiple background images as wallpaper on multiple monitors). Took a lot of hair pulling to figure this out.

Eclipse RCP Splash Screen

I'm involved in a project that is attempting to use the Eclipse RCP splash screen to gather user credentials, language, etc. If this screen loses focus, it is not available (under Windows at least) through the ALt-Tab functionality, and can only be found by minimizing all other windows and uncovering it. Any way of having this screen allow itself to be activated in this way? They're avoiding creating an intermediate screen, for reasons unknown at this point.
I think it might be time to examine those unknown reasons. Even eclipse doesn't use the splash screen in this way. If it needs to prompt for information, it opens a new dialog to ask for it.
Good luck.
[Edit] I stand corrected. This thread seems to have a solution to this. Good luck, I'm no SWT/RCP guru.
See this page. From one of the comments:
The splash screen window is created natively with the extended window style WS_EX_TOOLWINDOW which makes it not appear in the task bar. This corresponds to the SWT constant SWT.TOOL.
I don't know if it's possible to change the window style after it is created on Windows. You can always drop down to JNI if that's necessary.
Create your own implementation of AbstractSplashHandler.
When creating the shell, don't use the SWT.TOOL style.
The shell will be accessible through the windows task bar.

What determines the monitor my app runs on?

I am using Windows, and I have two monitors.
Some applications will always start on my primary monitor, no matter where they were when I closed them.
Others will always start on the secondary monitor, no matter where they were when I closed them.
Is there a registry setting buried somewhere, which I can manipulate to control which monitor applications launch into by default?
#rp: I have Ultramon, and I agree that it is indispensable, to the point that Microsoft should buy it and incorporate it into their OS. But as you said, it doesn't let you control the default monitor a program launches into.
Here's what I've found. If you want an app to open on your secondary monitor by default do the following:
1. Open the application.
2. Re-size the window so that it is not maximized or minimized.
3. Move the window to the monitor you want it to open on by default.
4. Close the application. Do not re-size prior to closing.
5. Open the application.
It should open on the monitor you just moved it to and closed it on.
6. Maximize the window.
The application will now open on this monitor by default. If you want to change it to another monitor, just follow steps 1-6 again.
Correctly written Windows apps that want to save their location from run to run will save the results of GetWindowPlacement() before shutting down, then use SetWindowPlacement() on startup to restore their position.
Frequently, apps will store the results of GetWindowPlacement() in the registry as a REG_BINARY for easy use.
The WINDOWPLACEMENTroute has many advantages over other methods:
Handles the case where the screen resolution changed since the last run: SetWindowPlacement() will automatically ensure that the window is not entirely offscreen
Saves the state (minimized/maximized) but also saves the restored (normal) size and position
Handles desktop metrics correctly, compensating for the taskbar position, etc. (i.e. uses "workspace coordinates" instead of "screen coordinates" -- techniques that rely on saving screen coordinates may suffer from the "walking windows" problem where a window will always appear a little lower each time if the user has a toolbar at the top of the screen).
Finally, programs that handle window restoration properly will take into account the nCmdShow parameter passed in from the shell. This parameter is set in the shortcut that launches the application (Normal, Minimized, Maximize):
if(nCmdShow != SW_SHOWNORMAL)
placement.showCmd = nCmdShow; //allow shortcut to override
For non-Win32 applications, it's important to be sure that the method you're using to save/restore window position eventually uses the same underlying call, otherwise (like Java Swing's setBounds()/getBounds() problem) you'll end up writing a lot of extra code to re-implement functionality that's already there in the WINDOWPLACEMENT functions.
It's not exactly the answer to this question but I dealt with this problem with the Shift + Win + [left,right] arrow keys shortcut. You can move the currently active window to another monitor with it.
Get UltraMon. Quickly.
http://realtimesoft.com/ultramon/
It doesn't let you specify what monitor an app starts on, but it lets you move an app to the another monitor, and keep its aspect ratio intact, with one mouse click. It is a very handy utility.
Most programs will start where you last left them. So if you have two monitors at work, but only one at home, it's possible to start you laptop at home and not see the apps running on the other monitor (which now isn't there). UltrMon also lets you move those orphan apps back to the main screen quickly and easily.
I'm fairly sure the primary monitor is the default. If the app was coded decently, when it's closed, it'll remember where it was last at and will reopen there, but -- as you've noticed -- it isn't a default behavior.
EDIT: The way I usually do it is to have the location stored in the app's settings. On load, if there is no value for them, it defaults to the center of the screen. On closing of the form, it records its position. That way, whenever it opens, it's where it was last. I don't know of a simple way to tell it to launch onto the second monitor the first time automatically, however.
-- Kevin Fairchild
Important note: If you remember the position of your application and shutdown and then start up again at that position, keep in mind that the user's monitor configuration may have changed while your application was closed.
Laptop users, for example, frequently change their display configuration. When docked there may be a 2nd monitor that disappears when undocked. If the user closes an application that was running on the 2nd monitor and the re-opens the application when the monitor is disconnected, restoring the window to the previous coordinates will leave it completely off-screen.
To figure out how big the display really is, check out GetSystemMetrics.
So I had this issue with Adobe Reader 9.0. Somehow the program forgot to open on my right monitor and was consistently opening on my left monitor. Most programs allow you to drag it over, maximize the screen, and then close it out and it will remember. Well, with Adobe, I had to drag it over and then close it before maximizing it, in order for Windows to remember which screen to open it in next time. Once you set it to the correct monitor, then you can maximize it. I think this is stupid, since almost all windows programs remember it automatically without try to rig a way for XP to remember.
So I agree there are some apps that you can configured to open on one screen by maximizing or right clicking and moving/sizing screen, then close and reopen. However, there are others that will only open on the main screen.
What I've done to resolve: set the monitor you prefer stubborn apps to open on, as monitor 1 and the your other monitor as 2, then change your monitor 2 to be the primary - so your desktop settings and start bar remain. Hope this helps.
Do not hold me to this but I am pretty sure it depends on the application it self. I know many always open on the main monitor, some will reopen to the same monitor they were previously run in, and some you can set. I know for example I have shortcuts to open command windows to particular directories, and each has an option in their properties to the location to open the window in. While Outlook just remembers and opens in the last screen it was open in. Then other apps open in what ever window the current focus is in.
So I am not sure there is a way to tell every program where to open. Hope that helps some.
I've noticed that if I put a shortcut on my desktop on one screen the launched application may appear on that screen (if that app doesn't reposition itself).
This also applies to running things from Windows Explorer - if Explorer is on one screen the launched application will pick that monitor to use.
Again - I think this is when the launching application specifies the default (windows managed) position. Most applications seem to override this default behavior in some way.
A simple window created like so will do this:
hWnd = CreateWindow(windowClass, windowTitle, WS_VISIBLE | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, SW_SHOW, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL);
Right click the shortcut and select properties.
Make sure you are on the "Shortcut" Tab.
Select the RUN drop down box and change it to Maximized.
This may assist in launching the program in full screen on the primary monitor.