| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
We now require 1.60.0, to unconditionally use the GI_CHECK_VERSION
version check macro.
|
|
|
|
|
|
| |
This is a reimplemented fc776c2058e11da5c3a4cebeea7f313057bc079f with
the proper fix for the regression introduced by that commit which
required a revert.
|
|
|
|
|
| |
Otherwise the default implementation of __ne__ (which has wrong
behavior) is used instead of inverting the result of __eq__.
|
|
|
|
|
|
| |
For example, `Gdk.RGBA() == None` should return False instead of raising a TypeError
Fixes https://gitlab.gnome.org/GNOME/pygobject/-/issues/414
|
|
|
|
|
|
|
|
|
|
|
| |
Py_TRASHCAN_SAFE_BEGIN and Py_TRASHCAN_SAFE_END are deprecated since Python 3.11
and result in a deprecation warning when building against Python 3.11.
This follows the suggested migration to Py_TRASHCAN_BEGIN and Py_TRASHCAN_END
in https://docs.python.org/3/whatsnew/3.11.html
Py_TRASHCAN_BEGIN only exists since Python 3.8, while we still support 3.7,
so also use the suggested macro to support older Python versions.
|
|
|
|
|
|
|
|
|
|
|
| |
If two threads are trying to load a type at exactly the same time,
it's possible for two wrappers to get generated for the type.
One thread will end up with the wrapper that's not blessed as the
"real" one and future calls will fail. The blessed wrapper will
be incomplete, and so future calls from it will fail as well.
This commit adds a lock to ensure the two threads don't stomp
on each others toes.
|
|
|
|
|
|
|
| |
This reverts commit fc776c2058e11da5c3a4cebeea7f313057bc079f.
This might have caused a regression, see #535.
Until we know more revert this for now.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These functions were deprecated in gobject-introspection 1.72
GI_CHECK_VERSION was added after gobject-introspection 1.58, and we
require 1.56.
../gi/pygi-closure.c: In function ‘_pygi_invoke_closure_free’:
../gi/pygi-closure.c:635:5: warning: ‘g_callable_info_free_closure’ is deprecated: Use 'g_callable_info_destroy_closure' instead [-Wdeprecated-declarations]
635 | g_callable_info_free_closure (invoke_closure->info,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../gi/pygi-closure.h:22,
from ../gi/pygi-closure.c:20:
/usr/include/gobject-introspection-1.0/girffi.h:106:15: note: declared here
106 | void g_callable_info_free_closure (GICallableInfo *callable_info,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../gi/pygi-closure.c: In function ‘_pygi_make_native_closure’:
../gi/pygi-closure.c:674:9: warning: ‘g_callable_info_prepare_closure’ is deprecated: Use 'g_callable_info_create_closure' instead [-Wdeprecated-declarations]
674 | g_callable_info_prepare_closure (info, &closure->cif, _pygi_closure_handle,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gobject-introspection-1.0/girffi.h:100:15: note: declared here
100 | ffi_closure * g_callable_info_prepare_closure (GICallableInfo *callable_info,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
| |
When the interface is being registered by PyGObject and again through
an override, the first one is being leaks, free it at this point.
We need to copy the GInterfaceInfo to set on the GType QData as we
do not own it.
|
|
|
|
|
|
|
| |
PyList_GET_ITEM only returns a borrowed reference. In the unlikely event
of an error converting the key or value, the reference would be
unintentionally decremented. This could cause random failures later on
(and was indeed causing the PyPy test to fail randomly later on).
|
| |
|
|
|
|
| |
Check for required type, instead of negating invalid type.
|
| |
|
| |
|
| |
|
|
|
|
| |
Why does a g_instance_init() function only handle GObjects?
|
|
|
|
| |
It's not used in GTK 4.
|
|
|
|
| |
Those methods require a Gdk.ContentFormats object.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
An attempt to pass a Path object as a filename results in a TypeError:
"Must be bytes, not PosixPath". A simple way to accept Path objects
would be unconditionally turning them into strings, but since native
paths may be bytes as well, this might break applications relying on
being able to bytes-based filename. Instead, convert the path into an
appropriate representation (string or bytes) using os.fspath(). It
internally tests whether the path is a PathLike object and does the
right thing.
Signed-off-by: Andrej Shadura <andrew.shadura@collabora.co.uk>
|
|
|
|
|
|
| |
In theory it should no longer be needed, but PyPy hasn't
updated this part of their implementation yet, and not initing
threads will lead to crashes due to missing GIL init.
|
|
|
|
|
|
|
|
|
|
| |
If C code calls g_object_new() for a GInitiallyUnowned subclass
implemented in python, the expectation is to receive a floating
reference.
The solution is used is the same picked for
5efe2e5c8458d9f4d72329ea1209d96b5ebecfb4, this is simply a special
case that was omitted at the time.
|
| |
|
| |
|
|
|
|
|
|
| |
If gobject-introspection adds a new scope that we do not handle, we
should definitely not error out. Printing out a critical warning and
asking to file an issue should be enough.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Python 3.10, the code raised an ImportWarning:
ImportWarning: DynamicImporter.find_spec() not found; falling back to find_module()
See https://docs.python.org/3.10/whatsnew/3.10.html#deprecated
> Starting in this release, there will be a concerted effort to begin cleaning
> up old import semantics that were kept for Python 2.7 compatibility.
> Specifically, find_loader()/find_module() (superseded by find_spec()),
> load_module() (superseded by exec_module()), module_repr()
> (which the import system takes care of for you),
> the __package__ attribute (superseded by __spec__.parent),
> the __loader__ attribute (superseded by __spec__.loader),
> and the __cached__ attribute (superseded by __spec__.cached)
> will slowly be removed (as well as other classes and methods in importlib).
> ImportWarning and/or DeprecationWarning will be raised as appropriate to help
> identify code which needs updating during this transition.
Fixes https://gitlab.gnome.org/GNOME/pygobject/-/issues/473
|
|
|
|
|
|
|
|
| |
It got renamed in gtk 4.1.0, see https://gitlab.gnome.org/GNOME/gtk/-/commit/a1216599ff6b39bca3e936fbf
To avoid an API break and make porting easier provide both versions for
all users.
Fixes #467
|
|
|
|
|
|
| |
Found by Coverity.
https://bugzilla.redhat.com/show_bug.cgi?id=1938851
|
|
|
|
|
|
|
|
|
|
| |
Up until now this raised an exception "This method is currently unsupported.".
With Gtk.Widget.destroy() gone in gtk4 and that method often being used to remove
references to other objects and breaking cycles this is the next best thing
on a lower level and should make porting a bit easier.
Fixes #470
|
|
|
|
|
|
|
|
|
|
|
|
| |
In a4880dbc4575fadc0e3 a special case for partial() was added to handle gtk4 template
callbacks. This in turn broken normal usage of partial objects.
To work around that add a special marker in the gtk template code for now until
we find a better fix.
Also adds a test so this doesn't happen again.
Fixes #464
|
|
|
|
|
|
|
|
|
| |
This is a follow of the previous commit which fixes template support
in GTK4 by adding GtkBuilerScope. It is extended to support a scope
object (it can be a python object or a dictionnary). This scope object
is used to define the scope the builder should operate in. A new
GtkBuilder constructor is introduced to be able to define this scope
object.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Gtk.Widget.set_connect_func() does not exist anymore and signals are
automatically connected. Instead, a GtkBuilderScope needs to be used
to create GtkBuilder's closure functions.
pygobject closure support is extended to support
functools.partial. This is used to create a GtkBuilder closure
function with an object different from the current object.
See MR https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1204 and
https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1230
Closes: #380
|
|
|
|
|
|
|
|
|
|
| |
This function use CompareDataFunc which works with pointers and
doesn't know anything about GObjects.
The same logic as in Gio.List.sort and Gio.List.insert_sorted is
used.
An associated unit_test is also added.
|
|
|
|
|
|
|
|
|
|
| |
GTK4 removed the Gtk.Container interface, and added API on Gtk.Widget
to iterate over children instead.
Making Widgets iterable allows to easily loop over the children and
check is a widget is a child of an other one.
A new test is also added.
|
|
|
|
|
|
| |
Basically everything where we hav a transition path that works for
both gtk3 and 4. We'll need to add new deprecation warnings for gtk3
once things have settled down.
|
| |
|
|
|
|
| |
skip template/builder tests for now as they require larger changes
|
|
|
|
| |
pack1/2 are gone
|
| |
|
| |
|
|
|
|
|
| |
We don't need to override anything, once we drop the deprecated
compatibility layer for pygtk.
|
|
|
|
|
| |
Drop all the deprecated compatibility layer for pygtk, and the
inheritance from GtkContainer.
|
|
|
|
| |
The Container class does not exist any more.
|
|
|
|
| |
Similar to what the Gdk.py overrides do.
|
|
|
|
|
|
| |
Py_TYPE was changed to a function in Python 3.10. Suggested approach is
to use Py_SET_TYPE macro instead, see:
https://docs.python.org/3.10/whatsnew/3.10.html.
|
| |
|
|
|
|
|
|
|
| |
PyUnicode_GET_SIZE() is deprecated and actually wrong in case wchar_t
is not 4 bytes and high code points, use PyUnicode_GET_LENGTH() instead.
Fixes a deprecation warning with Python 3.9
|
|
|
|
|
|
| |
The GIL is now created by Python at initialization time no matter what.
PyEval_InitThreads() triggers a deprecation warning and will be removed in
3.10 so don't use it with 3.9+.
|
|
|
|
| |
So user have more control on whether to build it or not
|
|
|
|
|
|
|
| |
override is there
Also make it conditional on the Gtk.Widget method existing since that was only
added with gtk 3.20 and we support 3.18+.
|