This allows identifying, eg. the é button on French keyboard (which is at the location where 2 is on QWERTY)
This is not intended to be complete. One must still choose what to display depending on the label and the mapped button handle (if any).
Classes with virtual ref(), unref() and get_ref_count() methods, like RecorderBase, could not be returned by PT() from methods because they didn't inherit from ReferenceCount. However, classes do not need to inherit ReferenceCount to be able to be tracked by a PointerTo, and defining an abstract base class with pure virtual ref()/unref()/get_ref_count() is a way to avoid dual inheritance of ReferenceCount.
It's not "real" relative mouse like DGA, but it's good enough: it confines the cursor to the window and continues to provide relative mouse movement regardless of the position of the cursor in the window.
This gets relative mouse mode working under wayland, where cursor warping is not supported; see #746.
Made initialization ignore the setScrollBarWidth function
Respect the length/height of the scrollbar and only change the actual
width in the setScrollBarWidth function
Added a very basic unittest class for the scrolledFrame
Closes#864
If multiple ShaderMatSpec entries use the same state matrix, this should result in a reduction in the number of times that state matrix is fetched. This is especially so for arrays, which are now fetched once rather than once for every item.
This is the first step towards trying to solve #846.
There is an intermittent build failure and I suspect it's because the keys are too generic and are interned, and thus may have their refcount incremented or decremented by some other (background?) process.
The previous behavior was for unloadAnims() to remove the control effects from all animations, even when only one animation was passed in, which is unintuitive behavior.
Fixes#853
They are not exposed to Python, and I cannot think of a good reason to use these classes directly in C++ code.
Call init_libpnmimagetypes() to register these classes with the PNMFileTypeRegistry instead.
For some reason, IOHIDDeviceRegisterRemovalCallback() no longer works on
10.15+, so an app will crash once trying to poll a device that doesn't
exist anymore. Thankfully, there is the alternative solution of using
IOHIDManagerRegisterDeviceRemovalCallback(). This just required a little
rearranging of the callback code, as well as keeping track of the
connection between IOHIDDeviceRefs and IOKitInputDevices so we actually
know which device to remove.
Closes#847
This results in size savings for thirdparty libraries that are only used once, and a size increase for libraries used more than once (eg. OpenSSL). More importantly, it prevents conflicts with other versions of the libraries loaded by other Python modules, such as the version of OpenSSL that the hmac module uses.
We need to be careful to only apply this for packages that are either used once, used in a plug-in module, or if we don't need to pass thirdparty library structures across Panda library boundaries. For example, I haven't done this for Bullet, since the Bullet symbols need to be available through libpandabullet.so due to the fact that pandabullet contains calls to the Bullet libraries in the inline methods.
Fixes#851
These were probably added before makepanda gained the ability to automatically add dependencies of static libraries when linking statically.
They don't really do any harm--the linker will probably optimize these out automatically--but it's cleaner not to add unused dependencies.