summaryrefslogtreecommitdiff
path: root/gi
Commit message (Collapse)AuthorAgeFilesLines
* Only create function _construct_target_list for GTK2/3Arjan Molenaar2022-03-271-14/+14
| | | | It's not used in GTK 4.
* Do not override Treeview.enable_model_drag_xx for GTK4Arjan Molenaar2022-03-271-10/+12
| | | | Those methods require a Gdk.ContentFormats object.
* info: Show which type/object callables are bound tobenzea/vfunc-bound-descrBenjamin Berg2022-03-271-0/+28
|
* Gtk.Template: Accept PathLike objects as a filenameAndrej Shadura2022-03-271-1/+2
| | | | | | | | | | | | | 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>
* Call PyEval_InitThreads() with PyPy for Python 3.9Christoph Reiter2022-03-271-1/+2
| | | | | | 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.
* gimodule: fix floating state of python objects created with g_object_newMathieu Duponchelle2021-12-061-3/+12
| | | | | | | | | | 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.
* Use quark variable for class on gtypeArjan Molenaar2021-09-191-1/+1
|
* replace gpointer by more specific typesArjan Molenaar2021-09-192-6/+4
|
* Do not error out for unknown scopesEmmanuele Bassi2021-09-191-2/+4
| | | | | | 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.
* Implement DynamicImporter.find_spec()Miro Hrončok2021-09-191-5/+10
| | | | | | | | | | | | | | | | | | | | | | 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
* gtk overrides: restore Gtk.ListStore.insert_with_valuesv with newer gtk4Christoph Reiter2021-09-191-1/+8
| | | | | | | | 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
* Fix some small memory leaksDavid King2021-08-232-1/+5
| | | | | | Found by Coverity. https://bugzilla.redhat.com/show_bug.cgi?id=1938851
* Expose GObject.Object.run_dispose()Christoph Reiter2021-04-271-1/+0
| | | | | | | | | | 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
* Fix regression in marshalling partial() objectsChristoph Reiter2021-03-302-3/+6
| | | | | | | | | | | | 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
* gtk overrides: Add support for builder scopeJean Felder2020-12-063-49/+69
| | | | | | | | | 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.Template: Fix template support for GTK4Jean Felder2020-12-062-4/+74
| | | | | | | | | | | | | | | 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
* gtk: Add override for Gtk.CustomSorter.set_sort_funcJean Felder2020-12-063-16/+39
| | | | | | | | | | 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.
* gtk overrides: Make GTK4 widgets iterableJean Felder2020-11-211-0/+10
| | | | | | | | | | 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.
* overrides: Remove various overrides for gtk4ebassi/gtk4-overridesChristoph Reiter2020-11-151-246/+172
| | | | | | 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.
* Clean up Widget overridesChristoph Reiter2020-11-151-10/+11
|
* tests: various fixes for gtk4Christoph Reiter2020-11-151-4/+7
| | | | skip template/builder tests for now as they require larger changes
* gtk4: Remove overrides for PanedChristoph Reiter2020-11-151-8/+8
| | | | pack1/2 are gone
* flake8 fixesChristoph Reiter2020-11-151-7/+0
|
* Clean up version checks some moreChristoph Reiter2020-11-152-10/+10
|
* Drop the GtkButton override for GTK4Emmanuele Bassi2020-11-151-35/+36
| | | | | We don't need to override anything, once we drop the deprecated compatibility layer for pygtk.
* Add GTK4 override for GtkDialogEmmanuele Bassi2020-11-151-73/+105
| | | | | Drop all the deprecated compatibility layer for pygtk, and the inheritance from GtkContainer.
* Remove Container from GTK4 overridesEmmanuele Bassi2020-11-151-49/+100
| | | | The Container class does not exist any more.
* Simplify the version check for GTK2, GTK3, and GTK4Emmanuele Bassi2020-11-151-9/+12
| | | | Similar to what the Gdk.py overrides do.
* Don't assume Py_TYPE being a macroTomas Hrnciar2020-11-1114-14/+18
| | | | | | 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.
* gtk overrides: Remove Container use for GTK4wip/mschraal/gtk4-container-removalMarinus Schraal2020-10-071-16/+17
|
* Replace PyUnicode_GET_SIZE() usage with PyUnicode_GET_LENGTH()Christoph Reiter2020-10-061-1/+1
| | | | | | | 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
* Don't call PyEval_InitThreads() with Python 3.9+Christoph Reiter2020-10-061-0/+4
| | | | | | 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+.
* meson: Make the `pycairo` option a featureThibault Saunier2020-06-031-1/+1
| | | | So user have more control on whether to build it or not
* get/set_focus_on_click: Fix return value, add a test and document why the ↵Christoph Reiter2020-04-171-9/+11
| | | | | | | 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+.
* Add overrides for Gtk.Button set/get_focus_on_clickDan Yeaw2020-04-171-0/+10
| | | | | | | | Fixes #371. Gtk.Button.set_focus_on_click and Gtk.Button.get_focus_on_click are deprecated since version 3.20. This override calls the Gtk.Widget methods so that users don't get a deprecation message. Signed-off-by: Dan Yeaw <dan@yeaw.me>
* gdk overrides: Fix wrapping of scroll eventsPovilas Kanapickas2020-04-171-0/+1
|
* gtktemplate: Do not crash on multiple init_template callsJean Felder2020-04-171-1/+1
| | | | | | | | | | | | | | | | | init_template method is automatically called when a widget is created and it is not supposed to be called multiple times. That is why this method is turned into a no-op after its first call via a lambda function. init_template can still be called after a widget creation (and it is supposed to do nothing). However, a second call will result in a crash because the lambda function has a parameter while init_template is not supposed to have any parameter. This issue is fixed by removing the parameter of the lambda function. A new test is also added to assert that a second init_template call does nothing.
* gtk overrides: Fix template hierarchy issueJean Felder2020-04-171-4/+9
| | | | | | | | | | | | | | | | | | | | When a widget is inside a template it is created through a g_object_new and does not have a python wrapper when pygobject__g_instance_init is called. In that case, a wrapper is created and the "__init__" method is called to instantiate it. Then, "init_template" is called to init its own template (if it exists). However, "init_template" needs to be called before the object constructor in order to create and instantiate all its children, signals and properties. This issue is fixed by calling init_template before the contructor if the python object has been created through g_object_new. A new test for the template hierarchy is added (based on an example from Marinus Schraal). Closes: #257, #386
* gimodule: Remove trailing whitespacesJean Felder2020-04-161-8/+8
|
* Rename PYGLIB_DEFINE_TYPE to PYGI_DEFINE_TYPEChristoph Reiter2020-04-1618-42/+42
| | | | This is a leftover from when things were split up
* Remove PYGOBJECT_REGISTER_GTYPEChristoph Reiter2020-04-166-31/+67
| | | | Less macro magic
* Remove PYGLIB_REGISTER_TYPEChristoph Reiter2020-04-166-16/+34
| | | | Less macro magic
* Remove all Python 2 C codeChristoph Reiter2020-04-1635-670/+346
|
* Remove all Python 2 Python codeChristoph Reiter2020-04-1515-144/+21
|
* Gtk overrides: make sure TreeModelSort.new_with_model and ↵Christoph Reiter2020-03-171-0/+12
| | | | | | | | | TreeModel.sort_new_with_model exist In https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1134 the method was changed to a constructor which means the API is different between older and newer gtk. Add fallbacks for both in our overrides so both ways work all the time.
* gtk overrides: Drop Gtk.main for Gtk4Jean Felder2020-03-161-13/+11
| | | | | | | It has been removed (gtk commit 4dd780a96b1d37903ab88a4ae4536329cd9e164e) The associated tests are updated or skipped for Gtk 4.
* gtk overrides: Drop ToolButton for Gtk4Jean Felder2020-03-161-7/+7
| | | | | | | It has been removed (gtk commit 44e153d8a8679633681dd3ae2029735255e4f839). The associated test is removed.
* gtk overrides: Drop Menu, MenuItem for Gtk 4Marinus Schraal2020-01-211-8/+8
| | | | These API's have been removed (gtk commit 7ee5779efcf5).
* pygobject-object: Avoid checking whether NULL is floatingAlexandru Băluț2020-01-201-1/+3
| | | | This issue was introduced in a102f046a178472278522e3e9d7c0b40ecd52ade.
* CI: Use gnome-master for testing with gtk4Christoph Reiter2019-10-191-13/+15
| | | | | | | | This makes it easier to track upstream changes without us having to rebuild docker images. Downside is that we don't control it and API is still changing, so allow the job to fail.