Re: GtkColorButton.get_rgba



Hello Vadim:

Your issue caught my attention because I recently updated an
extension from 3.6 to 3.8.  I ran into the problem you described
of the need to change from:

[1]
let rgba = new Gdk.RGBA();
gtkColorButton.get_rgba(rgba);

to:

[2]
let rgba = gtkColorButton.get_rgba();


I have a Fedora 18 system on GS3.6.3.  It requires the code in
[1] above.  This is __different__ from what you described.

I have a Fedora 19 Alpha, openSuse 12.3 and a current Arch system
with GS3.8.  All three require the code in [2] above.

I looked at git.gnome.org.  It looks like there were changes
in the introspection annotations concerning gtk_color_button_get_rgba.

The following log entry caught my attention.

2012-09-17  Do not introspect gtk_color_button_get_rgba.

With all this said.  I don't think a change at the point level of
a Gnome Shell version should break an API.  I also find it
is very odd that the API was broken when the shell went to
3.6.3 for you and not for me with Fedora 18.

This seems like you have a typelib for gtk3 different from my
typelib or perhaps a different gjs.  I have gjs-1.34.0 on the
Fedora 18 system.  In the git tree 1.34 is for 3.6 and
1.36.1 is for 3.8 if I read the comments correctly.

Hopefully someone who knows more than me about introspection
black magic can give an answer.

Regards,
Norman


On Fri, 2013-05-17 at 10:23 -0500, Vadim wrote:
And just as a follow-up question related to the one below.

If, say, I want to see how the implementation of GtkColorButton in Gjs
in Gnome 3.6.3 changed compared to 3.6.0, is there any resource I can
easily browse the relevant source code for both versions?

Thank you.
Vadim.


On 05/17/2013 09:42 AM, Vadim wrote:

Hello everyone,

I use GtkColorButton in preference dialog of this submitted
extension:
https://extensions.gnome.org/extension/674/yawl-yet-another-window-list/

I just updated from Gnome 3.6.0 to Gnome 3.6.3 and realized that
GtkColorButton does not work as expected anymore.

After digging around I found that these lines of code that worked
fine in Gjs in Gnome 3.6.0 do not work in Gnome 3.6.3:

let rgba = new Gdk.RGBA();
gtkColorButton.get_rgba(rgba);

What works in 3.6.3 now is:

let rgba = gtkColorButton.get_rgba();

In the former we pass reference to an already existing variable for
the function to modify it, and in the latter the function returns
new value. According to DevHelp the first is what you would use in
C, and this is why I had that in the code, and it worked. On the
other hand, I understand (and saw that all over Gjs) that in Gjs it
is common to return a value instead of passing a reference to an
existing variable, even if there is already another value being
returned. For example, in C Gio::DataInputStream::read_line returns
a string and updates its length by reference, while in Gjs it
returns an array containing both the string and its length.

I cannot verify at the moment if the new second version of code (the
one I need for 3.6.3) will work in 3.6.0. If I knew that the second
version would work in all 3.6.*, I would just stick to it. But I
only know that the first worked in 3.6.0 but not in 3.6.3, and the
second works in 3.6.3.

So, my question is: is there any way to make the code consistent
with both versions? Or, maybe, someone could confirm that the second
version works in 3.6.0 (Ubuntu 12.10) as well?

Thanks in advance,
Vadim.


_______________________________________________
gnome-shell-list mailing list
gnome-shell-list gnome org
https://mail.gnome.org/mailman/listinfo/gnome-shell-list




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]