Added `sensible-browser' as the first browser launcher option, even before `xdg-open'.
`sensible-browser' tries to open an URL using the preferred web browser, while `xdg-open' just to open a resource (not just an URL) with the preferred application.
Since the method is called openURL and a URL (Uniform Resource Locator) is a web address, `sensible-browser' fits the functionality better.
A notable difference would be calling Sys.openURL('localhost').
Since `localhost' has no leading `http://', `xdg-open' would try to open a `localhost' file and fail, while `sensible-browser' would launch the appropriate browser.
While `sensible-browser' is particular of Debian-based systems and is not as common as xdg-open, this does not negatively affect systems that do not have `sensible-browser':
Were it not present in the system, the rest of the browser launchers would be tried, starting by `xdg-open'.
Added `iceweasel' after `firefox'. `iceweasel' is the Debian fork of Firefox.
Added `google-chrome' and `chromium'. `chromium' is provided in Debian instead of `google-chrome'.
Since the stats in http://www.w3schools.com/browsers/browsers_stats.asp show that Google Chrome is used by more users than Firefox, I put both Google Chrome and Chromium before Firefox in the list.
This change will not affect most of the users, as they will have a preferred browser set up with either `sensible-browser' or `xdg-open'.
According to
https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/A
pplicationKit/Classes/nsbitmapimagerep_Class/Reference/Reference.html
the data referenced by the "planes" parameter will not be copied into
the NSBitmapImageRep class.
This means that when the referenced data changes (which is very likely
in our case since the data is retrieved from Java by
GetDirectBufferAddress()) we see exactly the effect described in the
LWJGL forum here: http://lwjgl.org/forum/index.php/topic,5007.0.html
The Apple class reference documentation linked above also describes
that when the "planes" parameter is NULL then the NSBitmapImageRep
class will allocate enough memory to store the image data and will
automatically free the allocated memory when the NSBitmapImageRep
instance is freed. In this case the data can be accessed with the
"bitmapData" method.
Which is exactly what we'll do now: pass NULL into the method to let it
allocate memory and then simply memcpy our image data into that area.
This seems to fix the mouse cursor image.
- Instead of grabbing focus directly to our window, we call requestFocus on the Canvas component. This will clear focus from any other AWT component.
- When the parent Canvas gets focus, we detect it in update and that's when we grab focus to our window. We can't use a listener, setFocus must be called in our thread.
- Alt-tabbing out/in also works because focus goes to the Canvas. The above check will trigger again and our window will be refocused.
- Reverted to WS_CHILD in window flags.
- Added WM_MOUSEACTIVATE handling: Focus the display + return MA_NOACTIVATE.
- Removed unnecessary appActivate calls in WM_ACTIVATE. We don't receive WM_ACTIVATE with WS_CHILD and the focus events do the job just fine.
- Detect parent window focus in update and force focus the display. This is useful when we alt-tab to the parent window and we don't receive any events.
Fix build error on Linux.
On some Linux distributions, there is no static libXxf86vm.a, only a shared library. In order to succeed a build, link against the shared library. Since the linker options are the same for 32-bit installations and Solaris, merge the options.
- Cleaned up cl flags and enabled parallel compilation. Native compilation
is now multiple times faster.
- Fixed all /W3 compilation warnings.
- Changed window flag from WS_CHILDWINDOW to WS_POPUP when Display.setParent
is used, in an attempt to fix focus-related issues.