<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-1334</id>
	<title>Nabble - Gtk+ - General</title>
	<updated>2009-12-22T14:13:43Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Gtk+---General-f1334.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gtk%2B---General-f1334.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26895140</id>
	<title>pango_layout_set_width() versus measured widths</title>
	<published>2009-12-22T14:13:43Z</published>
	<updated>2009-12-22T14:13:43Z</updated>
	<author>
		<name>Ben Pfaff</name>
	</author>
	<content type="html">In working with Pango I found an oddity that I do not understand.
&lt;br&gt;It may be a bug, or it might just be my misunderstanding.
&lt;br&gt;&lt;br&gt;As part of a table layout procedure for printing, my code wishes
&lt;br&gt;to find out the width of the longest word in a Pango layout, so
&lt;br&gt;it sets the width of the layout to 1, turns on word wrapping, and
&lt;br&gt;measures the width of the layout, something like this:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pango_layout_set_width (layout, 1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pango_layout_get_size (layout, &amp;width, NULL);
&lt;br&gt;&lt;br&gt;Later on, the width of the table column might have been adjusted
&lt;br&gt;upward or downward for other reasons, so it renders it with
&lt;br&gt;PANGO_WRAP_WORD_CHAR to prevent overflowing the column
&lt;br&gt;boundary. &amp;nbsp;I was surprised to discover that, when the layout
&lt;br&gt;width is set to the same value returned by
&lt;br&gt;pango_layout_get_size(), this caused some words to wrap anyhow.
&lt;br&gt;&lt;br&gt;I'm enclosing a simple example program. &amp;nbsp;You can invoke it to
&lt;br&gt;measure the size of rendering &amp;quot;A string of text&amp;quot; with a width of
&lt;br&gt;1 and word-wrapping, as above, e.g. showing input, output, and
&lt;br&gt;an ASCII rendering of the produced foo.pdf:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # ./a.out &amp;quot;A string of text&amp;quot; 1 word
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size: width=47032
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; extents: ink width=45416, logical width=47032
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pixel extents: ink width=45, logical width=46
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +------+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |A &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |string|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |of &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |text &amp;nbsp;|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +------+
&lt;br&gt;&lt;br&gt;Then giving the exact width reported by this run, plus word-char,
&lt;br&gt;yields:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # ./a.out &amp;quot;A string of text&amp;quot; 47032 word-char
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size: width=36632
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; extents: ink width=35112, logical width=36632
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pixel extents: ink width=35, logical width=36
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +-----+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |A &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |strin|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |g of |
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |text |
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +-----+
&lt;br&gt;&lt;br&gt;To get word-char to produce the results that I expect, I have to
&lt;br&gt;add 5208, which is the reported width of &amp;quot; &amp;quot;:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # ./a.out &amp;quot;A string of text&amp;quot; 52240 word-char
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; size: width=47032
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; extents: ink width=45416, logical width=47032
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pixel extents: ink width=45, logical width=46
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +------+
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |A &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |string|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |of &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |text &amp;nbsp;|
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +------+
&lt;br&gt;&lt;br&gt;Any guidance would be appreciated. &amp;nbsp;I can always add the width of
&lt;br&gt;a space myself, but I don't understand why it is necessary.
&lt;br&gt;&lt;br&gt;Here is my test program:
&lt;br&gt;&lt;br&gt;#include &amp;lt;pango/pangocairo.h&amp;gt;
&lt;br&gt;#include &amp;lt;cairo/cairo-pdf.h&amp;gt;
&lt;br&gt;#include &amp;lt;cairo/cairo.h&amp;gt;
&lt;br&gt;#include &amp;lt;stdlib.h&amp;gt;
&lt;br&gt;#include &amp;lt;string.h&amp;gt;
&lt;br&gt;&lt;br&gt;int
&lt;br&gt;main (int argc, char **argv)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; cairo_t *cr;
&lt;br&gt;&amp;nbsp; char *filename;
&lt;br&gt;&amp;nbsp; cairo_status_t status;
&lt;br&gt;&amp;nbsp; cairo_surface_t *surface;
&lt;br&gt;&amp;nbsp; PangoLayout *layout;
&lt;br&gt;&amp;nbsp; PangoFontDescription *desc;
&lt;br&gt;&amp;nbsp; PangoRectangle ink, logical;
&lt;br&gt;&amp;nbsp; int width;
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (argc != 4)
&lt;br&gt;&amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; g_printerr (&amp;quot;Usage: pangocairo STRING WIDTH WRAP_MODE\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* Create surface and clear to all-white. */
&lt;br&gt;&amp;nbsp; surface = cairo_pdf_surface_create (&amp;quot;foo.pdf&amp;quot;, 200, 200);
&lt;br&gt;&amp;nbsp; cr = cairo_create (surface);
&lt;br&gt;&amp;nbsp; cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
&lt;br&gt;&amp;nbsp; cairo_paint (cr);
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* Create Pango layout. */
&lt;br&gt;&amp;nbsp; layout = pango_cairo_create_layout (cr);
&lt;br&gt;&amp;nbsp; desc = pango_font_description_from_string (&amp;quot;Sans 12&amp;quot;);
&lt;br&gt;&amp;nbsp; pango_layout_set_font_description (layout, desc);
&lt;br&gt;&amp;nbsp; pango_font_description_free (desc);
&lt;br&gt;&amp;nbsp; pango_layout_set_text (layout, argv[1], -1);
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* Set Pango options according to command line. */
&lt;br&gt;&amp;nbsp; pango_layout_set_width (layout, atoi (argv[2]));
&lt;br&gt;&amp;nbsp; if (!strcmp (argv[3], &amp;quot;word&amp;quot;))
&lt;br&gt;&amp;nbsp; &amp;nbsp; pango_layout_set_wrap (layout, PANGO_WRAP_WORD);
&lt;br&gt;&amp;nbsp; else if (!strcmp (argv[3], &amp;quot;char&amp;quot;))
&lt;br&gt;&amp;nbsp; &amp;nbsp; pango_layout_set_wrap (layout, PANGO_WRAP_CHAR);
&lt;br&gt;&amp;nbsp; else if (!strcmp (argv[3], &amp;quot;word-char&amp;quot;))
&lt;br&gt;&amp;nbsp; &amp;nbsp; pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR);
&lt;br&gt;&amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; g_printerr (&amp;quot;WRAP_MODE must be 'word' or 'char' or 'word-char'&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* Draw layout. */
&lt;br&gt;&amp;nbsp; cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
&lt;br&gt;&amp;nbsp; cairo_move_to (cr, 0, 0);
&lt;br&gt;&amp;nbsp; pango_cairo_show_layout (cr, layout);
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* Print various sizes. */
&lt;br&gt;&amp;nbsp; pango_layout_get_size (layout, &amp;width, NULL);
&lt;br&gt;&amp;nbsp; printf (&amp;quot;size: width=%d\n&amp;quot;, width);
&lt;br&gt;&lt;br&gt;&amp;nbsp; pango_layout_get_extents (layout, &amp;ink, &amp;logical);
&lt;br&gt;&amp;nbsp; printf (&amp;quot;extents: ink width=%d, logical width=%d\n&amp;quot;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ink.width, logical.width);
&lt;br&gt;&lt;br&gt;&amp;nbsp; pango_layout_get_pixel_extents (layout, &amp;ink, &amp;logical);
&lt;br&gt;&amp;nbsp; printf (&amp;quot;pixel extents: ink width=%d, logical width=%d\n&amp;quot;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ink.width, logical.width);
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* Clean up. */
&lt;br&gt;&amp;nbsp; g_object_unref (layout);
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_destroy (cr);
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_surface_finish (surface);
&lt;br&gt;&amp;nbsp; status = cairo_surface_status (surface);
&lt;br&gt;&amp;nbsp; cairo_surface_destroy (surface);
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (status != CAIRO_STATUS_SUCCESS)
&lt;br&gt;&amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; g_printerr (&amp;quot;Could not save pdf to '%s'\n&amp;quot;, filename);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;--
&lt;br&gt;Ben Pfaff
&lt;br&gt;&lt;a href=&quot;http://benpfaff.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://benpfaff.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26895140&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/pango_layout_set_width%28%29-versus-measured-widths-tp26895140p26895140.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26887598</id>
	<title>Re: gtk_editable_get_position</title>
	<published>2009-12-22T04:30:13Z</published>
	<updated>2009-12-22T04:30:13Z</updated>
	<author>
		<name>David Nečas (Yeti)-2</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 12:46:28PM +0100, Emmanuel Rodriguez wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Tue, Dec 22, 2009 at 11:47 AM, maxim maxim &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26887598&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;look2004il@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt; I have &amp;nbsp;a following &amp;nbsp;question, I try to receive a cursor position in
&lt;br&gt;&amp;gt; &amp;gt; GtkEntry by function gtk_editable_get_position (GTK_EDITABLE (entry)),
&lt;br&gt;&amp;gt; &amp;gt; but the &amp;nbsp;function returns a correct position only at expose-event, in
&lt;br&gt;&amp;gt; &amp;gt; all other cases it returns a zero, &amp;nbsp;how to solve this problem?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; You can try to access directly the property &amp;quot;cursor-position&amp;quot;:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; gint position = -1;
&lt;br&gt;&amp;gt; g_object_get(G_OBJECT(entry), &amp;quot;cursor-position&amp;quot;, &amp;position, NULL);
&lt;/div&gt;&lt;br&gt;If it made a difference it would be a bug in Gtk+.
&lt;br&gt;&lt;br&gt;By the way, working with properties is by no reasonable metric more
&lt;br&gt;direct. &amp;nbsp;It does some complicated GValue trickery and at the end it
&lt;br&gt;calls the same getter or setter.
&lt;br&gt;&lt;br&gt;Yeti
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26887598&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/gtk_editable_get_position-tp26886551p26887598.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26887568</id>
	<title>Re: gtk_editable_get_position</title>
	<published>2009-12-22T04:28:00Z</published>
	<updated>2009-12-22T04:28:00Z</updated>
	<author>
		<name>David Nečas (Yeti)-2</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 12:47:55PM +0200, maxim maxim wrote:
&lt;br&gt;&amp;gt; I have &amp;nbsp;a following &amp;nbsp;question, I try to receive a cursor position in
&lt;br&gt;&amp;gt; GtkEntry by function gtk_editable_get_position (GTK_EDITABLE (entry)),
&lt;br&gt;&amp;gt; but the &amp;nbsp;function returns a correct position only at expose-event, in
&lt;br&gt;&amp;gt; all other cases it returns a zero,
&lt;br&gt;&lt;br&gt;Demonstrate. &amp;nbsp;The attached program demonstrates it works as expected.
&lt;br&gt;&lt;br&gt;Yeti
&lt;br&gt;&lt;br&gt;=================================================================
&lt;br&gt;#include &amp;lt;gtk/gtk.h&amp;gt;
&lt;br&gt;&lt;br&gt;static void
&lt;br&gt;get_position(GtkEntry *entry)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_print(&amp;quot;pos: %d\n&amp;quot;, gtk_editable_get_position(GTK_EDITABLE(entry)));
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;int
&lt;br&gt;main(int argc, char *argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; GtkWidget *window, *box, *entry, *button;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_init(&amp;argc, &amp;argv);
&lt;br&gt;&amp;nbsp; &amp;nbsp; window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_signal_connect(window, &amp;quot;destroy&amp;quot;, G_CALLBACK(gtk_main_quit), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; box = gtk_vbox_new(FALSE, 4);
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_container_add(GTK_CONTAINER(window), box);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; entry = gtk_entry_new();
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_container_add(GTK_CONTAINER(box), entry);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; button = gtk_button_new_with_mnemonic(&amp;quot;_Get Position&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_container_add(GTK_CONTAINER(box), button);
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_signal_connect_swapped(button, &amp;quot;clicked&amp;quot;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_CALLBACK(get_position), entry);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_widget_show_all(window);
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_main();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;=================================================================
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26887568&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/gtk_editable_get_position-tp26886551p26887568.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26887148</id>
	<title>Re: gtk_editable_get_position</title>
	<published>2009-12-22T03:46:28Z</published>
	<updated>2009-12-22T03:46:28Z</updated>
	<author>
		<name>Emmanuel Rodriguez</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 11:47 AM, maxim maxim &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26887148&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;look2004il@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
Hi to all,&lt;br&gt;
&lt;br&gt;
I have  a following  question, I try to receive a cursor position in&lt;br&gt;
GtkEntry by function gtk_editable_get_position (GTK_EDITABLE (entry)),&lt;br&gt;
but the  function returns a correct position only at expose-event, in&lt;br&gt;
all other cases it returns a zero,  how to solve this problem?&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;You can try to access directly the property &amp;quot;cursor-position&amp;quot;:&lt;br&gt;&lt;br&gt;gint position = -1;&lt;br&gt;g_object_get(G_OBJECT(entry), &amp;quot;cursor-position&amp;quot;, &amp;amp;position, NULL);&lt;br&gt;
 &lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;-- &lt;br&gt;Emmanuel Rodriguez&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26887148&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/gtk_editable_get_position-tp26886551p26887148.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26886551</id>
	<title>gtk_editable_get_position</title>
	<published>2009-12-22T02:47:55Z</published>
	<updated>2009-12-22T02:47:55Z</updated>
	<author>
		<name>maxim maxim</name>
	</author>
	<content type="html">Hi to all,
&lt;br&gt;&lt;br&gt;I have &amp;nbsp;a following &amp;nbsp;question, I try to receive a cursor position in
&lt;br&gt;GtkEntry by function gtk_editable_get_position (GTK_EDITABLE (entry)),
&lt;br&gt;but the &amp;nbsp;function returns a correct position only at expose-event, in
&lt;br&gt;all other cases it returns a zero, &amp;nbsp;how to solve this problem?
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26886551&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/gtk_editable_get_position-tp26886551p26886551.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26885484</id>
	<title>Re: Gtk widget running in separate thread</title>
	<published>2009-12-22T01:02:15Z</published>
	<updated>2009-12-22T01:02:15Z</updated>
	<author>
		<name>zaheer ahmad</name>
	</author>
	<content type="html">&lt;div&gt;Thanks Tor. Is there an example that can demonstrate how this can be done on X?&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Regards,&lt;/div&gt;&lt;div&gt;Zaheer&lt;/div&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Dec 22, 2009 at 2:00 PM, Tor Lillqvist &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26885484&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tml@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;&lt;div class=&quot;im&quot;&gt;&amp;gt; Is it possible to run a GTK widget entirely in a separate thread i.e. all&lt;br&gt;
&amp;gt; the input events on that widget are handled in that thread.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;On X11, probably yes, with extreme care. Is it a good idea? NO!&lt;br&gt;
&lt;br&gt;
(And in GTK+ on Windows, it is not really possible, not even using the&lt;br&gt;
same extreme care as in GTK+ on X11. Note that this is not because the&lt;br&gt;
Windows OS and Win32 API as such would be less thread-aware than Linux&lt;br&gt;
or POSIX in general, but exactly because of the opposite: In Windows,&lt;br&gt;
a window is associated with the thread that created it and messages&lt;br&gt;
(&amp;quot;events&amp;quot;) for it go to the message queue for that thread, etc.&lt;br&gt;
Compare to X11 which at its heart is a network protocol and has no&lt;br&gt;
relation to threads (or processes, for that matter).)&lt;br&gt;
&lt;br&gt;
--tml&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26885484&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gtk-widget-running-in-separate-thread-tp26884692p26885484.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26885231</id>
	<title>Re: Gtk widget running in separate thread</title>
	<published>2009-12-22T00:30:32Z</published>
	<updated>2009-12-22T00:30:32Z</updated>
	<author>
		<name>Tor Lillqvist</name>
	</author>
	<content type="html">&amp;gt; Is it possible to run a GTK widget entirely in a separate thread i.e. all
&lt;br&gt;&amp;gt; the input events on that widget are handled in that thread.
&lt;br&gt;&lt;br&gt;On X11, probably yes, with extreme care. Is it a good idea? NO!
&lt;br&gt;&lt;br&gt;(And in GTK+ on Windows, it is not really possible, not even using the
&lt;br&gt;same extreme care as in GTK+ on X11. Note that this is not because the
&lt;br&gt;Windows OS and Win32 API as such would be less thread-aware than Linux
&lt;br&gt;or POSIX in general, but exactly because of the opposite: In Windows,
&lt;br&gt;a window is associated with the thread that created it and messages
&lt;br&gt;(&amp;quot;events&amp;quot;) for it go to the message queue for that thread, etc.
&lt;br&gt;Compare to X11 which at its heart is a network protocol and has no
&lt;br&gt;relation to threads (or processes, for that matter).)
&lt;br&gt;&lt;br&gt;--tml
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26885231&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gtk-widget-running-in-separate-thread-tp26884692p26885231.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26884692</id>
	<title>Gtk widget running in separate thread</title>
	<published>2009-12-21T23:07:26Z</published>
	<updated>2009-12-21T23:07:26Z</updated>
	<author>
		<name>zaheer ahmad</name>
	</author>
	<content type="html">&lt;div&gt;hi,&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Is it possible to run a GTK widget entirely in a separate thread i.e. all the input events on that widget are handled in that thread. The widget is used for zoom control on a canvas (e.g. webpage), and should independantly be responsive to updates on the canvas (which can be time consuming). so far in my search i havent found a post which answers this. The closest is &lt;a href=&quot;http://www.cairographics.org/threaded_animation_with_cairo/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.cairographics.org/threaded_animation_with_cairo/&lt;/a&gt; however in this case we are running a independant animation and no interaction with it.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;div&gt;Appreciate any inputs.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;thanks,&lt;/div&gt;&lt;div&gt;Zzaher&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26884692&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gtk-widget-running-in-separate-thread-tp26884692p26884692.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26884654</id>
	<title>Re: Memory leak in gtk label?</title>
	<published>2009-12-21T23:00:10Z</published>
	<updated>2009-12-21T23:00:10Z</updated>
	<author>
		<name>Emmanuel Rodriguez</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Dec 22, 2009 at 3:47 AM, Liu, Raymond &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26884654&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;raymond.liu@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div class=&quot;im&quot;&gt;&amp;gt;&lt;br&gt;
&amp;gt;you should read:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;  &lt;a href=&quot;http://live.gnome.org/Valgrind&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/Valgrind&lt;/a&gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;before using Valgrind with GLib or GTK+ based applications.&lt;br&gt;
&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;Thanks a lot ;)&lt;br&gt;
&lt;br&gt;
With the gtk.suppression file for 2.12, 30% of the fake memory leak issues are gone.&lt;br&gt;
&lt;br&gt;
While, still quite many of them remain. I can add more suppress rules, but I am not sure whether they are real of fake memory leak issues.&lt;br&gt;
&lt;br&gt;
So is there any latest suppression files for gtk / glib?&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;You can always build your own suppression file. Follow the instructions provided by libchamplain [1] in the section &amp;quot;Valgrind error suppression&amp;quot;.&lt;br&gt;
&lt;br&gt;The idea is to make a short hello world program that has no code leak (from the developer point of view) and to tell valgrind to build an error supression list. Then you can use that list with your programs.&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://live.gnome.org/libchamplain/contributor&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/libchamplain/contributor&lt;/a&gt; &lt;br&gt;
&lt;/div&gt;&lt;/div&gt;-- &lt;br&gt;Emmanuel Rodriguez&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26884654&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Memory-leak-in-gtk-label--tp26822744p26884654.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26883604</id>
	<title>GTK+ 2.19.2 released</title>
	<published>2009-12-21T19:51:28Z</published>
	<updated>2009-12-21T19:51:28Z</updated>
	<author>
		<name>Matthias Clasen</name>
	</author>
	<content type="html">GTK+ 2.19.2 is now available for download at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;ftp://ftp.gtk.org/pub/gtk/2.19/
&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://download.gnome.org/sources/gtk+/2.19/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://download.gnome.org/sources/gtk+/2.19/&lt;/a&gt;&lt;br&gt;&lt;br&gt;md5 sums:
&lt;br&gt;c7b4997a13f644a45349a6a22a21e577 &amp;nbsp;gtk+-2.19.2.tar.bz2
&lt;br&gt;c6a5c7431d610b820f8aefdb2055e178 &amp;nbsp;gtk+-2.19.2.tar.gz
&lt;br&gt;&lt;br&gt;sha1 sums:
&lt;br&gt;c4e04159f105215314933f6b9bebf4b987c51b28 &amp;nbsp;gtk+-2.19.2.tar.bz2
&lt;br&gt;809690522f0d6e7bb9d302ec4ff2a87c261e0be9 &amp;nbsp;gtk+-2.19.2.tar.gz
&lt;br&gt;&lt;br&gt;This is a development release leading up to GTK+ 2.20.
&lt;br&gt;&lt;br&gt;Notes:
&lt;br&gt;&lt;br&gt;&amp;nbsp;* This is an unstable development release.
&lt;br&gt;&amp;nbsp; &amp;nbsp;It has had only little testing and there are unfinished
&lt;br&gt;&amp;nbsp; &amp;nbsp;features and plenty of bugs in this release. It should
&lt;br&gt;&amp;nbsp; &amp;nbsp;definitively not be used in production.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* Installing this version will overwrite your existing
&lt;br&gt;&amp;nbsp; &amp;nbsp;copy of GTK+ 2.18. If you have problems, you'll need
&lt;br&gt;&amp;nbsp; &amp;nbsp;to reinstall GTK+ 2.18.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* GTK+ 2.20 will be source and binary compatible with
&lt;br&gt;&amp;nbsp; &amp;nbsp;the GTK+ 2.18 series; however, the new API additions
&lt;br&gt;&amp;nbsp; &amp;nbsp;are not yet finalized, so there may be incompatibilities
&lt;br&gt;&amp;nbsp; &amp;nbsp;between this release and the final 2.20 release.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* Bugs should be reported to &lt;a href=&quot;http://bugzilla.gnome.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;&lt;br&gt;What is GTK+
&lt;br&gt;============
&lt;br&gt;&lt;br&gt;GTK+ is a multi-platform toolkit for creating graphical user
&lt;br&gt;interfaces. Offering a complete set of widgets, GTK+ is suitable for
&lt;br&gt;projects ranging from small one-off tools to complete application
&lt;br&gt;suites.
&lt;br&gt;&lt;br&gt;GTK+ has been designed from the ground up to support a range of
&lt;br&gt;languages, not only C/C++. Using GTK+ from languages such as Perl and
&lt;br&gt;Python (especially in combination with the Glade GUI builder) provides
&lt;br&gt;an effective method of rapid application development.
&lt;br&gt;&lt;br&gt;GTK+ is free software and part of the GNU Project. However, the
&lt;br&gt;licensing terms for GTK+, the GNU LGPL, allow it to be used by all
&lt;br&gt;developers, including those developing proprietary software, without
&lt;br&gt;any license fees or royalties.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Where to get more information about GTK+
&lt;br&gt;========================================
&lt;br&gt;&lt;br&gt;Information about GTK+ including links to documentation can be
&lt;br&gt;found at:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.gtk.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;An installation guide for GTK+ 2.x is found at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Common questions:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-question-index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-question-index.html&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://www.gtk.org/faq/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/faq/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Contributing
&lt;br&gt;============
&lt;br&gt;&lt;br&gt;GTK+ is a large project and relies on voluntary contributions.
&lt;br&gt;We are actively searching for new contributors in various areas
&lt;br&gt;and invite everyone to help project development.
&lt;br&gt;If you are willing to participate, please subscribe to the project
&lt;br&gt;mailing lists to offer your help and read over our list of vacant
&lt;br&gt;project tasks:
&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://live.gnome.org/GtkTasks&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/GtkTasks&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Overview of Changes from GTK+ 2.19.1 to 2.19.2
&lt;br&gt;==============================================
&lt;br&gt;&lt;br&gt;* Introspection:
&lt;br&gt;&amp;nbsp;- Introspection data for gdk-pixbuf, gdk and gtk is now
&lt;br&gt;&amp;nbsp; &amp;nbsp;included in GTK+ itself. As a consequence, the atk dependency
&lt;br&gt;&amp;nbsp; &amp;nbsp;has been bumped to 2.29.2, and a gobject-introspection dependency
&lt;br&gt;&amp;nbsp; &amp;nbsp;has been added. configure with --disable-introspection in order
&lt;br&gt;&amp;nbsp; &amp;nbsp;to not build introspection data.
&lt;br&gt;&lt;br&gt;* Client-side windows:
&lt;br&gt;&amp;nbsp;- Fix some issues with handling of button and motion events
&lt;br&gt;&amp;nbsp;- Fix damage reporting for drawing on offscreen windows
&lt;br&gt;&amp;nbsp;- Fix problems with handling of input extension events
&lt;br&gt;&lt;br&gt;* Printing:
&lt;br&gt;&amp;nbsp;- Add api to handle printer hard margins
&lt;br&gt;&lt;br&gt;* Simple IM Context:
&lt;br&gt;&amp;nbsp;- Sync with Xorg compose file
&lt;br&gt;&amp;nbsp;- Make Compose-vowel-minus combinations consistent
&lt;br&gt;&lt;br&gt;* GDK:
&lt;br&gt;&amp;nbsp;- gdk_screen_get_primary_monitor: New function to get the
&lt;br&gt;&amp;nbsp; &amp;nbsp;'primary' monitor in a multi-monitor setup
&lt;br&gt;&lt;br&gt;* gdk-pixbuf has gained the ability to store and retrieve embedded
&lt;br&gt;&amp;nbsp; ICC color profiles in png and tiff images
&lt;br&gt;&lt;br&gt;* Keyboard handling:
&lt;br&gt;&amp;nbsp;- Mnemonic underlines can now optionally be hidden until the Alt key
&lt;br&gt;&amp;nbsp; &amp;nbsp;is pressed, this can be turned on with the gtk-auto-mnemonics setting
&lt;br&gt;&amp;nbsp;- Using the Super, Meta and Hyper modifiers in accelerators is working
&lt;br&gt;&amp;nbsp; &amp;nbsp;more reliably
&lt;br&gt;&lt;br&gt;* Bugs fixed:
&lt;br&gt;&amp;nbsp;603652 Sporadic crashes with GtkSocket
&lt;br&gt;&amp;nbsp;605008 the region of damage event doesn't be copied in gdk_event_copy
&lt;br&gt;&amp;nbsp;588554 only show the accelerator when pressing alt
&lt;br&gt;&amp;nbsp;601473 GDK_BUTTON?_MOTION_MASK appears to be broken
&lt;br&gt;&amp;nbsp;601712 Add API for determining primary monitor
&lt;br&gt;&amp;nbsp; 50942 selection/arrow key improvement
&lt;br&gt;&amp;nbsp;427409 editing shortcut always fails with super key
&lt;br&gt;&amp;nbsp;468989 need a way to get the printer's hard margins
&lt;br&gt;&amp;nbsp;502266 gtk_tree_selection_get_selected_rows free example produces...
&lt;br&gt;&amp;nbsp;592279 Introspection support
&lt;br&gt;&amp;nbsp;597386 Cannot click buttons more than once without moving the mouse...
&lt;br&gt;&amp;nbsp;599213 Use GtkCellEditable:editing_canceled property instead...
&lt;br&gt;&amp;nbsp;599397 Button stuck at pressed look after screen rotation
&lt;br&gt;&amp;nbsp;601383 gtk_icon_view_get_selected_items: example code gives...
&lt;br&gt;&amp;nbsp;602099 Actions can be activatable too
&lt;br&gt;&amp;nbsp;603619 the colormap of offscreen's pixmap doesn't inherit...
&lt;br&gt;&amp;nbsp;603904 gdk_draw_line doesn't have expose area.
&lt;br&gt;&amp;nbsp;604117 Add info about single includes when compiling GTK+ apps
&lt;br&gt;&amp;nbsp;604289 Please permit progress pages to be final in a dialog
&lt;br&gt;&amp;nbsp;604462 gtktoolitem.c: return-value is different type
&lt;br&gt;&amp;nbsp;604747 Using gdk_draw_line, the expose area of damage event is wrong
&lt;br&gt;&amp;nbsp;604787 property-notify-event is not delivered to a non-toplevel...
&lt;br&gt;&amp;nbsp;604881 GtkCellEditable::editing-cancelled should be writable
&lt;br&gt;&amp;nbsp;591085 GtkBuilder object ID bounded to GtkWidget &amp;quot;name&amp;quot; property
&lt;br&gt;&lt;br&gt;* Updated translations:
&lt;br&gt;&amp;nbsp;Arabic
&lt;br&gt;&amp;nbsp;Estonian
&lt;br&gt;&amp;nbsp;Hebrew
&lt;br&gt;&amp;nbsp;Low German
&lt;br&gt;&amp;nbsp;Norwegian bokmål
&lt;br&gt;&amp;nbsp;Slovenian
&lt;br&gt;&amp;nbsp;Spanish
&lt;br&gt;&amp;nbsp;Telugu
&lt;br&gt;&amp;nbsp;Vietnamese
&lt;br&gt;&lt;br&gt;Thanks to all contributors:
&lt;br&gt;Adrian Johnson
&lt;br&gt;Christian Persch
&lt;br&gt;Javier Jardón
&lt;br&gt;Alexander Larsson
&lt;br&gt;Carlos Garcia Campos
&lt;br&gt;Christian Dywan
&lt;br&gt;Cody Russell
&lt;br&gt;Danielle Madeley
&lt;br&gt;Johan Dahlin
&lt;br&gt;Sven Herzberg
&lt;br&gt;Matthew Barnes
&lt;br&gt;Tor Lillqvist
&lt;br&gt;Colin Walters
&lt;br&gt;Tomeu Vizoso
&lt;br&gt;Richard Hughes
&lt;br&gt;Torsten Schoenfeld
&lt;br&gt;Hiroyuki Ikezoe
&lt;br&gt;Dan Winship
&lt;br&gt;Benjamin Otte
&lt;br&gt;Thomas Wood
&lt;br&gt;Michael Natterer
&lt;br&gt;&lt;br&gt;&lt;br&gt;December 21, 2009
&lt;br&gt;Matthias Clasen
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26883604&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-2.19.2-released-tp26883604p26883604.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26883268</id>
	<title>RE: Memory leak in gtk label?</title>
	<published>2009-12-21T18:47:20Z</published>
	<updated>2009-12-21T18:47:20Z</updated>
	<author>
		<name>Liu, Raymond</name>
	</author>
	<content type="html">&amp;gt;
&lt;br&gt;&amp;gt;you should read:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;&lt;a href=&quot;http://live.gnome.org/Valgrind&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/Valgrind&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;before using Valgrind with GLib or GTK+ based applications.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;Thanks a lot ;)
&lt;br&gt;&lt;br&gt;With the gtk.suppression file for 2.12, 30% of the fake memory leak issues are gone. &amp;nbsp;
&lt;br&gt;&lt;br&gt;While, still quite many of them remain. I can add more suppress rules, but I am not sure whether they are real of fake memory leak issues.
&lt;br&gt;&lt;br&gt;So is there any latest suppression files for gtk / glib?
&lt;br&gt;&lt;br&gt;&amp;gt;ciao,
&lt;br&gt;&amp;gt; Emmanuele.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;Raymond
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26883268&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Memory-leak-in-gtk-label--tp26822744p26883268.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26880966</id>
	<title>Glowing Treeview Row</title>
	<published>2009-12-21T14:19:57Z</published>
	<updated>2009-12-21T14:19:57Z</updated>
	<author>
		<name>Vikram Noel Ambrose</name>
	</author>
	<content type="html">I'm trying to find a way of making an entire row &amp;quot;glow&amp;quot; to give feedback 
&lt;br&gt;to the user on which row has been &amp;quot;activated&amp;quot;. I good example of this 
&lt;br&gt;feature is used in Amarok. When a row is &amp;quot;activated&amp;quot;, it begins to glow 
&lt;br&gt;with a hazy highlight.
&lt;br&gt;&lt;br&gt;Is there any built in functionality like this in GTK? If not is there a 
&lt;br&gt;way I can use a GtkCellRendererPixbuf to engulf all text columns on a 
&lt;br&gt;particular row?
&lt;br&gt;&lt;br&gt;Or are there any better techniques to accomplishing this?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&lt;br&gt;&lt;br&gt;Vik.
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26880966&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Memory-leak-in-gtk-label--tp26822744p26880966.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26878219</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-21T10:34:28Z</published>
	<updated>2009-12-21T10:34:28Z</updated>
	<author>
		<name>Robert Miller-10</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;meta content=&quot;text/html;charset=ISO-8859-1&quot; http-equiv=&quot;Content-Type&quot;&gt;
  &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; text=&quot;#000000&quot;&gt;
Yes I agree 100%, very nice and succinct.&lt;br&gt;
&lt;br&gt;
One thing I would like to add; however, is that the choice to use an
OO-native language or not is not simply a choice of which compiler or
language constructs to use . The OO &quot;syntactic suger&quot; incurs a high
cost, which is fine if you are running on a powerful processer with
large memories. One job I did was to take a pile of C++ written on a PC
and port it to
a 50MHz ARM processor with only 32KB of RAM and 2MB of flash. This was
a very cost sensitive application and thus &quot;adding more menory or MHz&quot;
was
unacceptable. Just compiling the C++ code as is to an ARM target
produced over 512KB of binary. The memory remaing would be completely
unacceptable for the large database that also needed to be stored in
flash. Not to mention the processing overhead that would be untenable
on a 50MHz ARM in this application. After &quot;de-C++ifying&quot; it into
standard C, the resulting binary that resulted was about 124KB and ran
much faster. Fortunately the programmer I was working with who wrote
the original C++ code was very talented and made the job easier in that
his code was very clean and easy to work with.&lt;br&gt;
&lt;br&gt;
So as for the GTK code, I would say that it is with great thanks that
the programmers take on the task of coding with standard C rather than
the &quot;easy way out&quot; and using C++ which would likely make GTK untenable
in embedded appliations.&lt;br&gt;
&lt;br&gt;
Rob&lt;br&gt;
&lt;br&gt;
Michael Natterer wrote:
&lt;blockquote cite=&quot;mid:1261398384.4190.14.camel@localhost&quot; type=&quot;cite&quot;&gt;
  &lt;pre wrap=&quot;&quot;&gt;On Sun, 2009-12-20 at 16:16 -0200, frederico schardong wrote:

  &lt;/pre&gt;
  &lt;blockquote type=&quot;cite&quot;&gt;
    &lt;pre wrap=&quot;&quot;&gt;The difference is that not a really object-oriented, is a fake object-oriented.

I call it fake object-oriented environment, maybe not the most
correctly name, but i think is true.

What do you think?
    &lt;/pre&gt;
  &lt;/blockquote&gt;
  &lt;pre wrap=&quot;&quot;&gt;&lt;!----&gt;
Object oriented is a programming paradigm, not a computer
language. Just because C lacks the syntactic sugar to do OO
in a more compact way says *nothing* about the possibility
to use it for OO programming. It is after all turing complete.

There is nothing &quot;fake&quot; here.

The fact that a gas oven has a much nicer user interface
doesn't make an old wood-fired stone oven a &quot;fake&quot; oven.

ciao,
--mitch


_______________________________________________
gtk-list mailing list
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26878219&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;a class=&quot;moz-txt-link-freetext&quot; href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;

  &lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26878219&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26878219.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26876330</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-21T08:26:06Z</published>
	<updated>2009-12-21T08:26:06Z</updated>
	<author>
		<name>Michael Torrie</name>
	</author>
	<content type="html">frederico schardong wrote:
&lt;br&gt;&amp;gt; I like C sintax, but is it that create this confusion to me... Thanks
&lt;br&gt;&amp;gt; for clearly, and I agree that GTK is OO.
&lt;br&gt;&lt;br&gt;Take a look at Vala[1]. &amp;nbsp;I think you'd like it. &amp;nbsp;It compiles to C code,
&lt;br&gt;so there is zero overhead. &amp;nbsp;Vala syntax itself is basically C with
&lt;br&gt;object-oriented syntactical sugar. &amp;nbsp;Most distros have a reasonably
&lt;br&gt;updated version of Vala in their repositories.
&lt;br&gt;&lt;br&gt;Certainly if you want to make your own GTK widgets that derive from
&lt;br&gt;other widgets, or make your own object-oriented, GObject-based code,
&lt;br&gt;Vala is very handy. &amp;nbsp;As OO as GTK is, creating new classes in straight C
&lt;br&gt;is very ugly. &amp;nbsp;Vala-generated code can be used in straight C programs
&lt;br&gt;directly. &amp;nbsp;If you made a new Vala class called &amp;quot;foo,&amp;quot; for example, it
&lt;br&gt;automatically provides the C-style methods like:
&lt;br&gt;&lt;br&gt;foo_new()
&lt;br&gt;&lt;br&gt;Vala has an advantage over C++ in that any Vala classes you create can
&lt;br&gt;be used by any of the language bindings (in theory), whereas C++ classes
&lt;br&gt;cannot be used easily by C code.
&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://live.gnome.org/Vala&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/Vala&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26876330&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26876330.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26876023</id>
	<title>GLib 2.23.1 released</title>
	<published>2009-12-21T08:02:39Z</published>
	<updated>2009-12-21T08:02:39Z</updated>
	<author>
		<name>Matthias Clasen</name>
	</author>
	<content type="html">GLib 2.23.1 is now available for download at:
&lt;br&gt;&lt;br&gt;&amp;nbsp; ftp://ftp.gtk.org/pub/glib/2.23/
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://download.gnome.org/sources/glib/2.23/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://download.gnome.org/sources/glib/2.23/&lt;/a&gt;&lt;br&gt;&lt;br&gt;md5 sums:
&lt;br&gt;fb637f6122690254097d0b6d470f6ed3 &amp;nbsp;glib-2.23.1.tar.bz2
&lt;br&gt;ea32c834a8c7b166e05aeaaa41a021f4 &amp;nbsp;glib-2.23.1.tar.gz
&lt;br&gt;&lt;br&gt;sha1 sums:
&lt;br&gt;2cf7af4f0a4ac9b4f2b9e95661d94985e64c7c5e &amp;nbsp;glib-2.23.1.tar.bz2
&lt;br&gt;f2341b22cddef44824a1dcbcd053ceff632c10ad &amp;nbsp;glib-2.23.1.tar.gz
&lt;br&gt;&lt;br&gt;This is the a development release leading up to GLib 2.24.
&lt;br&gt;&lt;br&gt;Notes:
&lt;br&gt;&lt;br&gt;&amp;nbsp;* This is unstable development release. While it has had
&lt;br&gt;&amp;nbsp; a bit of testing, there are certainly plenty of bugs
&lt;br&gt;&amp;nbsp; remaining to be found. This release should not be used
&lt;br&gt;&amp;nbsp; in production.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* Installing this version will overwrite your existing
&lt;br&gt;&amp;nbsp; copy of GLib 2.22. If you have problems, you'll need
&lt;br&gt;&amp;nbsp; to reinstall GLib 2.22.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* GLib 2.24 will be source and binary compatible with
&lt;br&gt;&amp;nbsp; the GLib 2.22 series; however, the new API additions
&lt;br&gt;&amp;nbsp; in GLib 2.23 are not yet finalized, so there may be
&lt;br&gt;&amp;nbsp; incompatibilities between this release and the final
&lt;br&gt;&amp;nbsp; 2.24 release.
&lt;br&gt;&lt;br&gt;&amp;nbsp;* Bugs should be reported to &lt;a href=&quot;http://bugzilla.gnome.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;&lt;br&gt;About GLib
&lt;br&gt;==========
&lt;br&gt;&lt;br&gt;GLib is the low-level core library that forms the basis for projects
&lt;br&gt;such as GTK+ and GNOME. It provides data structure handling for C,
&lt;br&gt;portability wrappers, and interfaces for such runtime functionality as
&lt;br&gt;an event loop, threads, dynamic loading, and an object system.
&lt;br&gt;&lt;br&gt;More information about GLib is available at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://www.gtk.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtk.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;An installation guide for the GTK+ libraries, including GLib, can
&lt;br&gt;be found at:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.gnome.org/doc/API/2.0/gtk/gtk-building.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Overview of Changes from GLib 2.23.0 to GLib 2.23.1
&lt;br&gt;===================================================
&lt;br&gt;&lt;br&gt;* GObject performance work has landed:
&lt;br&gt;&amp;nbsp;- Construction of simple objects is much faster
&lt;br&gt;&amp;nbsp;- Interface lookup is lock-free and constant-time now
&lt;br&gt;&amp;nbsp;- Reduced locking overhead when dealing with types
&lt;br&gt;&lt;br&gt;* GType now has a G_DEFINE_INTERFACE convenience macro
&lt;br&gt;&lt;br&gt;* GIO gained GUtf8InputStream, an input stream that
&lt;br&gt;&amp;nbsp; performs utf-8 validation
&lt;br&gt;&lt;br&gt;* GLib now has byte-swap macros for gsize and gssize
&lt;br&gt;&lt;br&gt;* Bugs fixed:
&lt;br&gt;557151 Determining the newly_constructed boolean in gobject.c...
&lt;br&gt;557100 Performance improvements for GObjectClasses that don't...
&lt;br&gt;501166 Warning message says IA__g_type_init instead of g_type_init
&lt;br&gt;585375 Performance and Contention problems with g_type_class_ref...
&lt;br&gt;587892 Race in GType when instantiating the same class for the...
&lt;br&gt;603270 Input Stream validating utf8
&lt;br&gt;603476 gioenums.h:62: error: comma at end of enumerator list
&lt;br&gt;603540 g_time_val_from_iso8601 uses uninitialised variable
&lt;br&gt;603982 Stack overflow when reading file async with filter
&lt;br&gt;604645 G_DEFINE_INTERFACE_* documentation is not generated
&lt;br&gt;604875 Use of sa_len conflicts with system header
&lt;br&gt;320482 provide G_DEFINE_TYPE like macros for interfaces
&lt;br&gt;&lt;br&gt;* Updated translations:
&lt;br&gt;&amp;nbsp;Estonian
&lt;br&gt;&amp;nbsp;Hebrew
&lt;br&gt;&amp;nbsp;Norwegian bokmål
&lt;br&gt;&amp;nbsp;Vietnamese
&lt;br&gt;&amp;nbsp;Welsh
&lt;br&gt;&lt;br&gt;&lt;br&gt;December 20, 2009
&lt;br&gt;Matthias Clasen
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26876023&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GLib-2.23.1-released-tp26876023p26876023.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26874966</id>
	<title>Re: GTK+ is real object oriented?</title>
	<published>2009-12-21T06:47:39Z</published>
	<updated>2009-12-21T06:47:39Z</updated>
	<author>
		<name>Chris Vine</name>
	</author>
	<content type="html">On Mon, 21 Dec 2009 08:34:06 -0200
&lt;br&gt;frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26874966&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;nbsp;I like C sintax, but is it that create this confusion to me... Thanks
&lt;br&gt;&amp;gt; &amp;nbsp;for clearly, and I agree that GTK is OO.
&lt;br&gt;&lt;br&gt;It's OO with warts on, not because as you originally assumed you cannot
&lt;br&gt;write object oriented code in C, but because it hasn't always been
&lt;br&gt;implemented correctly. &amp;nbsp;Try for example calling gtk_tooltips_set_tip()
&lt;br&gt;on a GtkToolItem object. &amp;nbsp;It should work, because GtkToolItem is derived
&lt;br&gt;from GtkWidget, but in fact you need to call
&lt;br&gt;gtk_tool_item_set_tooltip().
&lt;br&gt;&lt;br&gt;The same disjunction still appears to arise with the new
&lt;br&gt;gtk_widget_set_tooltip_text() and gtk_tool_item_set_tooltip_text().
&lt;br&gt;&lt;br&gt;Yes I know why there are these separate functions for GtkToolItem
&lt;br&gt;objects: the GtkToolItem version operates on the tool item's child
&lt;br&gt;widget. &amp;nbsp;But the interface is broken from the OO perspective. &amp;nbsp;(It
&lt;br&gt;could have been solved with the new tooltip interface by specialising
&lt;br&gt;gtk_widget_set_tooltip_text() for tool item objects, but that does
&lt;br&gt;appear to have been done.)
&lt;br&gt;&lt;br&gt;Chris
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26874966&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26874966.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26874605</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-21T06:20:45Z</published>
	<updated>2009-12-21T06:20:45Z</updated>
	<author>
		<name>Gerald Britton-2</name>
	</author>
	<content type="html">Nicely put!
&lt;br&gt;&lt;br&gt;On Mon, Dec 21, 2009 at 7:26 AM, Michael Natterer &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26874605&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mitch@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sun, 2009-12-20 at 16:16 -0200, frederico schardong wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The difference is that not a really object-oriented, is a fake object-oriented.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I call it fake object-oriented environment, maybe not the most
&lt;br&gt;&amp;gt;&amp;gt; correctly name, but i think is true.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; What do you think?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Object oriented is a programming paradigm, not a computer
&lt;br&gt;&amp;gt; language. Just because C lacks the syntactic sugar to do OO
&lt;br&gt;&amp;gt; in a more compact way says *nothing* about the possibility
&lt;br&gt;&amp;gt; to use it for OO programming. It is after all turing complete.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There is nothing &amp;quot;fake&amp;quot; here.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The fact that a gas oven has a much nicer user interface
&lt;br&gt;&amp;gt; doesn't make an old wood-fired stone oven a &amp;quot;fake&amp;quot; oven.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ciao,
&lt;br&gt;&amp;gt; --mitch
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; gtk-list mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26874605&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Gerald Britton
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26874605&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26874605.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26873617</id>
	<title>RE: Memory leak in gtk label?</title>
	<published>2009-12-21T04:54:53Z</published>
	<updated>2009-12-21T04:54:53Z</updated>
	<author>
		<name>Emmanuele Bassi</name>
	</author>
	<content type="html">hi;
&lt;br&gt;&lt;br&gt;On Fri, 2009-12-18 at 09:34 +0800, Liu, Raymond wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; By the way, to make 100% sure, I destroy the top level window before exit. All the same ;)
&lt;br&gt;&lt;br&gt;you should read:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://live.gnome.org/Valgrind&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/Valgrind&lt;/a&gt;&lt;br&gt;&lt;br&gt;before using Valgrind with GLib or GTK+ based applications.
&lt;br&gt;&lt;br&gt;ciao,
&lt;br&gt;&amp;nbsp;Emmanuele.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26873617&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Memory-leak-in-gtk-label--tp26822744p26873617.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26873337</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-21T04:26:24Z</published>
	<updated>2009-12-21T04:26:24Z</updated>
	<author>
		<name>Michael Natterer</name>
	</author>
	<content type="html">On Sun, 2009-12-20 at 16:16 -0200, frederico schardong wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; The difference is that not a really object-oriented, is a fake object-oriented.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I call it fake object-oriented environment, maybe not the most
&lt;br&gt;&amp;gt; correctly name, but i think is true.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What do you think?
&lt;br&gt;&lt;br&gt;Object oriented is a programming paradigm, not a computer
&lt;br&gt;language. Just because C lacks the syntactic sugar to do OO
&lt;br&gt;in a more compact way says *nothing* about the possibility
&lt;br&gt;to use it for OO programming. It is after all turing complete.
&lt;br&gt;&lt;br&gt;There is nothing &amp;quot;fake&amp;quot; here.
&lt;br&gt;&lt;br&gt;The fact that a gas oven has a much nicer user interface
&lt;br&gt;doesn't make an old wood-fired stone oven a &amp;quot;fake&amp;quot; oven.
&lt;br&gt;&lt;br&gt;ciao,
&lt;br&gt;--mitch
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26873337&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26873337.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26872209</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-21T02:34:06Z</published>
	<updated>2009-12-21T02:34:06Z</updated>
	<author>
		<name>frederico schardong</name>
	</author>
	<content type="html">&amp;gt; The only difference is one of convention.  Don't get hung up on where
&lt;br&gt;&amp;gt; the &amp;quot;.&amp;quot; or &amp;quot;-&amp;gt;&amp;quot; is.  One might be preferred over the other by you, but
&lt;br&gt;&amp;gt; that does not mean that GTK is not object-oriented.  If you don't like
&lt;br&gt;&amp;gt; the C syntax used to constuct, destroy, and call methods on an object,
&lt;br&gt;&amp;gt; then I suggest you use GTKmm with C++, Vala, or PyGTK.  In each case the
&lt;br&gt;&amp;gt; Gobject system is accessed via the native object-oriented conventions.
&lt;br&gt;&amp;gt; Since GObject OO, the bindings are really just thin wrappers to thunk
&lt;br&gt;&amp;gt; from one object system to another.
&lt;br&gt;&lt;br&gt;&amp;nbsp;I like C sintax, but is it that create this confusion to me... Thanks
&lt;br&gt;&amp;nbsp;for clearly, and I agree that GTK is OO.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2009/12/21 Michael Torrie &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26872209&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;torriem@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt;&amp;gt; frederico schardong wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Yes, C don't provide sintax support for do my example of method.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Syntactical support is not required for an object-oriented system; it
&lt;br&gt;&amp;gt;&amp;gt; merely makes it easier for you, the programmer.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; In OOP such class must have self methods to set self attributes.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Yes, and gobject certainly has this.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; What happen is GObject (by the C limitation) just have attributes, the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; methods to set its attributes are functions out of the struct. Ok, is
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; this what happen, but for this facts don't broke the OOP?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; No, GObject has both attributes and methods.  Just like in C++, there is
&lt;br&gt;&amp;gt;&amp;gt; a struct to hold the data members (the attributes) and a call table to
&lt;br&gt;&amp;gt;&amp;gt; hold the methods.  This is why you can call a GtkWidget method on an
&lt;br&gt;&amp;gt;&amp;gt; instance that is a descendant of GtkWidget and it still works.  For
&lt;br&gt;&amp;gt;&amp;gt; example, a button:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; b=gtk_button_new()
&lt;br&gt;&amp;gt;&amp;gt; gtk_widget_show(b)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The &amp;quot;show&amp;quot; method of the GtkWidget class can be called on the instance b
&lt;br&gt;&amp;gt;&amp;gt; because it descends from GtkWidget, even though it is of the GtkButton
&lt;br&gt;&amp;gt;&amp;gt; class.  Even more convincingly, if I overrode the &amp;quot;show&amp;quot; method in my
&lt;br&gt;&amp;gt;&amp;gt; own GtkWidget-derived class, a call to gtk_widget_show(myinstance) would
&lt;br&gt;&amp;gt;&amp;gt; call my own classes show because show is a virtual method.  So the call
&lt;br&gt;&amp;gt;&amp;gt; table tells the compiler which method to actually call.  Pretty much
&lt;br&gt;&amp;gt;&amp;gt; like C++, except that it's not hidden as cleanly.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Note that there is absolutely no functional difference between using
&lt;br&gt;&amp;gt;&amp;gt; this class/method/instance combination for a method call from the
&lt;br&gt;&amp;gt;&amp;gt; instance/method idea.  In other words:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; gtk_widget_show(instance)
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; is identical to
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; instance.show()
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The only difference is one of convention.  Don't get hung up on where
&lt;br&gt;&amp;gt;&amp;gt; the &amp;quot;.&amp;quot; or &amp;quot;-&amp;gt;&amp;quot; is.  One might be preferred over the other by you, but
&lt;br&gt;&amp;gt;&amp;gt; that does not mean that GTK is not object-oriented.  If you don't like
&lt;br&gt;&amp;gt;&amp;gt; the C syntax used to constuct, destroy, and call methods on an object,
&lt;br&gt;&amp;gt;&amp;gt; then I suggest you use GTKmm with C++, Vala, or PyGTK.  In each case the
&lt;br&gt;&amp;gt;&amp;gt; Gobject system is accessed via the native object-oriented conventions.
&lt;br&gt;&amp;gt;&amp;gt; Since GObject OO, the bindings are really just thin wrappers to thunk
&lt;br&gt;&amp;gt;&amp;gt; from one object system to another.
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; gtk-list mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26872209&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Frederico Schardong,
&lt;br&gt;&amp;gt; SOLIS - Open source solutions
&lt;br&gt;&amp;gt; www.solis.coop.br
&lt;br&gt;&amp;gt; Linux registered user #500582
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Thanks,
&lt;br&gt;Frederico Schardong,
&lt;br&gt;SOLIS - Open source solutions
&lt;br&gt;www.solis.coop.br
&lt;br&gt;Linux registered user #500582
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26872209&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26872209.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26869257</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T18:11:12Z</published>
	<updated>2009-12-20T18:11:12Z</updated>
	<author>
		<name>Michael Torrie</name>
	</author>
	<content type="html">frederico schardong wrote:
&lt;br&gt;&amp;gt; Yes, C don't provide sintax support for do my example of method.
&lt;br&gt;&lt;br&gt;Syntactical support is not required for an object-oriented system; it
&lt;br&gt;merely makes it easier for you, the programmer.
&lt;br&gt;&lt;br&gt;&amp;gt; In OOP such class must have self methods to set self attributes.
&lt;br&gt;&lt;br&gt;Yes, and gobject certainly has this.
&lt;br&gt;&lt;br&gt;&amp;gt; What happen is GObject (by the C limitation) just have attributes, the
&lt;br&gt;&amp;gt; methods to set its attributes are functions out of the struct. Ok, is
&lt;br&gt;&amp;gt; this what happen, but for this facts don't broke the OOP?
&lt;br&gt;&lt;br&gt;No, GObject has both attributes and methods. &amp;nbsp;Just like in C++, there is
&lt;br&gt;a struct to hold the data members (the attributes) and a call table to
&lt;br&gt;hold the methods. &amp;nbsp;This is why you can call a GtkWidget method on an
&lt;br&gt;instance that is a descendant of GtkWidget and it still works. &amp;nbsp;For
&lt;br&gt;example, a button:
&lt;br&gt;&lt;br&gt;b=gtk_button_new()
&lt;br&gt;gtk_widget_show(b)
&lt;br&gt;&lt;br&gt;The &amp;quot;show&amp;quot; method of the GtkWidget class can be called on the instance b
&lt;br&gt;because it descends from GtkWidget, even though it is of the GtkButton
&lt;br&gt;class. &amp;nbsp;Even more convincingly, if I overrode the &amp;quot;show&amp;quot; method in my
&lt;br&gt;own GtkWidget-derived class, a call to gtk_widget_show(myinstance) would
&lt;br&gt;call my own classes show because show is a virtual method. &amp;nbsp;So the call
&lt;br&gt;table tells the compiler which method to actually call. &amp;nbsp;Pretty much
&lt;br&gt;like C++, except that it's not hidden as cleanly.
&lt;br&gt;&lt;br&gt;Note that there is absolutely no functional difference between using
&lt;br&gt;this class/method/instance combination for a method call from the
&lt;br&gt;instance/method idea. &amp;nbsp;In other words:
&lt;br&gt;&lt;br&gt;gtk_widget_show(instance)
&lt;br&gt;&lt;br&gt;is identical to
&lt;br&gt;&lt;br&gt;instance.show()
&lt;br&gt;&lt;br&gt;The only difference is one of convention. &amp;nbsp;Don't get hung up on where
&lt;br&gt;the &amp;quot;.&amp;quot; or &amp;quot;-&amp;gt;&amp;quot; is. &amp;nbsp;One might be preferred over the other by you, but
&lt;br&gt;that does not mean that GTK is not object-oriented. &amp;nbsp;If you don't like
&lt;br&gt;the C syntax used to constuct, destroy, and call methods on an object,
&lt;br&gt;then I suggest you use GTKmm with C++, Vala, or PyGTK. &amp;nbsp;In each case the
&lt;br&gt;Gobject system is accessed via the native object-oriented conventions.
&lt;br&gt;Since GObject OO, the bindings are really just thin wrappers to thunk
&lt;br&gt;from one object system to another.
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26869257&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26869257.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26869115</id>
	<title>Re: Custom container + Child type with interface</title>
	<published>2009-12-20T17:51:32Z</published>
	<updated>2009-12-20T17:51:32Z</updated>
	<author>
		<name>David Nečas (Yeti)-2</name>
	</author>
	<content type="html">On Sun, Dec 20, 2009 at 07:47:55PM +0000, Matthew Bucknall wrote:
&lt;br&gt;&amp;gt; Yes, it does. But as far as I can tell, implementers of the interface
&lt;br&gt;&amp;gt; cannot override the GParamFlags of an interface property with some
&lt;br&gt;&amp;gt; superset. Effectively, implementers can only override the property's
&lt;br&gt;&amp;gt; getter/setter. Please let me know if I've got that wrong.
&lt;br&gt;&lt;br&gt;You are probably right, only the getter and setter are overridable.
&lt;br&gt;&lt;br&gt;I've always considered property overrding a desperate measure because if
&lt;br&gt;the original getter and setter called a virtual method you could
&lt;br&gt;override that and it would be the preferred solution.
&lt;br&gt;&lt;br&gt;Unfortunately, it would not help in your case.
&lt;br&gt;&lt;br&gt;&amp;gt; This is why it seems I could only go with the lowest common denominator
&lt;br&gt;&amp;gt; of GParamFlag settings in the interface definition. Which I agree makes
&lt;br&gt;&amp;gt; a total mess of the 'is-a' paradigm - which is something I'm trying to
&lt;br&gt;&amp;gt; avoid.
&lt;br&gt;&lt;br&gt;Another possibility is to simply avoid the definition of properties and
&lt;br&gt;define getters (in the interface) and setters (in specific classes). &amp;nbsp;It
&lt;br&gt;is a logical way out because the primary purpose of properties is to
&lt;br&gt;enable generic manipulation. &amp;nbsp;But if you cannot satisfy the
&lt;br&gt;substitutability relation then you lose the generic manipulation ability
&lt;br&gt;anyway.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;&lt;br&gt;Yeti
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26869115&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Custom-container-%2B-Child-type-with-interface-tp26863728p26869115.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26869107</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T17:50:32Z</published>
	<updated>2009-12-20T17:50:32Z</updated>
	<author>
		<name>frederico schardong</name>
	</author>
	<content type="html">Thanks to everybody.
&lt;br&gt;&lt;br&gt;You helped me to clarify the concepts of OO.
&lt;br&gt;&lt;br&gt;&lt;br&gt;2009/12/20 David Nečas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26869107&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sun, Dec 20, 2009 at 05:26:20PM -0200, frederico schardong wrote:
&lt;br&gt;&amp;gt;&amp;gt; Yes, C don't provide sintax support for do my example of method.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; In OOP such class must have self methods to set self attributes.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; What happen is GObject (by the C limitation) just have attributes, the
&lt;br&gt;&amp;gt;&amp;gt; methods to set its attributes are functions out of the struct. Ok, is
&lt;br&gt;&amp;gt;&amp;gt; this what happen, but for this facts don't broke the OOP?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You have a weird definition of OO.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Smalltalk people could tell you that calling methods is fake OO because
&lt;br&gt;&amp;gt; to do real OO you must send messages to objects.  Now what?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; To the syntax issue.  In fact, virtual methods in Gtk+ are called
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; GTK_WIDGET_GET_CLASS(widget)-&amp;gt;show(widget)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; where GTK_WIDGET_GET_CLASS explicitly obtains the virtual table
&lt;br&gt;&amp;gt; (referenced from within the object struct) because the compiler won't do
&lt;br&gt;&amp;gt; it for you and then you can call the method.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But as everyone else prefers a sane syntax to a cozy objectishy feeling,
&lt;br&gt;&amp;gt; this is wrapped with something like gtk_widget_show() for virtual
&lt;br&gt;&amp;gt; methods and non-virtual methods look entirely like functions.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If it matters to you whether calling methods looks like
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;    object.method(arg1, arg2)
&lt;br&gt;&amp;gt;    object_method(arg1, arg2)
&lt;br&gt;&amp;gt;    (object method arg1 arg2)
&lt;br&gt;&amp;gt;    method { arg1 } { arg2 } : object
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; then Gtk+ is fake OO by your definition but hardly anyone cares.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If it matters to you in what bit of memory methods are physically
&lt;br&gt;&amp;gt; stored, then check if Smalltalk, Ocaml, Haskel, etc. are OO according to
&lt;br&gt;&amp;gt; your definition or not.  Hopefully you are aware the methods are seldom
&lt;br&gt;&amp;gt; actually stored in `the object struct' even though they are placed there
&lt;br&gt;&amp;gt; in the source code of e.g. C++ because that would be a collosal waste of
&lt;br&gt;&amp;gt; resources.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If you are troubled by the fact that one can write gtk_widget_frobnicate()
&lt;br&gt;&amp;gt; that will look exactly like a GtkWidget method but would not be, then
&lt;br&gt;&amp;gt; you simply noticed one of the things that cannot be enforced in C.  The
&lt;br&gt;&amp;gt; rule is that you must not name functions gtk_widget_frobnicate().
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The object file compiled from gtkwidget.c then lists all the GtkWidget
&lt;br&gt;&amp;gt; methods and is as good table of methods of the object as anything else.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yeti
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Thanks,
&lt;br&gt;Frederico Schardong,
&lt;br&gt;SOLIS - Open source solutions
&lt;br&gt;www.solis.coop.br
&lt;br&gt;Linux registered user #500582
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26869107&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26869107.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26868964</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T17:25:08Z</published>
	<updated>2009-12-20T17:25:08Z</updated>
	<author>
		<name>David Nečas (Yeti)-2</name>
	</author>
	<content type="html">On Sun, Dec 20, 2009 at 05:26:20PM -0200, frederico schardong wrote:
&lt;br&gt;&amp;gt; Yes, C don't provide sintax support for do my example of method.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In OOP such class must have self methods to set self attributes.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What happen is GObject (by the C limitation) just have attributes, the
&lt;br&gt;&amp;gt; methods to set its attributes are functions out of the struct. Ok, is
&lt;br&gt;&amp;gt; this what happen, but for this facts don't broke the OOP?
&lt;br&gt;&lt;br&gt;You have a weird definition of OO.
&lt;br&gt;&lt;br&gt;Smalltalk people could tell you that calling methods is fake OO because
&lt;br&gt;to do real OO you must send messages to objects. &amp;nbsp;Now what?
&lt;br&gt;&lt;br&gt;To the syntax issue. &amp;nbsp;In fact, virtual methods in Gtk+ are called
&lt;br&gt;&lt;br&gt;GTK_WIDGET_GET_CLASS(widget)-&amp;gt;show(widget)
&lt;br&gt;&lt;br&gt;where GTK_WIDGET_GET_CLASS explicitly obtains the virtual table
&lt;br&gt;(referenced from within the object struct) because the compiler won't do
&lt;br&gt;it for you and then you can call the method.
&lt;br&gt;&lt;br&gt;But as everyone else prefers a sane syntax to a cozy objectishy feeling,
&lt;br&gt;this is wrapped with something like gtk_widget_show() for virtual
&lt;br&gt;methods and non-virtual methods look entirely like functions.
&lt;br&gt;&lt;br&gt;If it matters to you whether calling methods looks like
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; object.method(arg1, arg2)
&lt;br&gt;&amp;nbsp; &amp;nbsp; object_method(arg1, arg2)
&lt;br&gt;&amp;nbsp; &amp;nbsp; (object method arg1 arg2)
&lt;br&gt;&amp;nbsp; &amp;nbsp; method { arg1 } { arg2 } : object
&lt;br&gt;&lt;br&gt;then Gtk+ is fake OO by your definition but hardly anyone cares.
&lt;br&gt;&lt;br&gt;If it matters to you in what bit of memory methods are physically
&lt;br&gt;stored, then check if Smalltalk, Ocaml, Haskel, etc. are OO according to
&lt;br&gt;your definition or not. &amp;nbsp;Hopefully you are aware the methods are seldom
&lt;br&gt;actually stored in `the object struct' even though they are placed there
&lt;br&gt;in the source code of e.g. C++ because that would be a collosal waste of
&lt;br&gt;resources.
&lt;br&gt;&lt;br&gt;If you are troubled by the fact that one can write gtk_widget_frobnicate()
&lt;br&gt;that will look exactly like a GtkWidget method but would not be, then
&lt;br&gt;you simply noticed one of the things that cannot be enforced in C. &amp;nbsp;The
&lt;br&gt;rule is that you must not name functions gtk_widget_frobnicate().
&lt;br&gt;&lt;br&gt;The object file compiled from gtkwidget.c then lists all the GtkWidget
&lt;br&gt;methods and is as good table of methods of the object as anything else.
&lt;br&gt;&lt;br&gt;Yeti
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26868964&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26868964.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866896</id>
	<title>Re: gtk-list Digest, Vol 68, Issue 27</title>
	<published>2009-12-20T12:14:12Z</published>
	<updated>2009-12-20T12:14:12Z</updated>
	<author>
		<name>MALLER</name>
	</author>
	<content type="html">&lt;div&gt;if u think GTK is not a oriented object programming, make it easy, modify the code until it turns OOP,  and with these you&amp;#39;ll be helping the comunity to debug the source code, simple. all the other points of view are only attacks and not constructive comments.&lt;/div&gt;


&lt;div&gt;&lt;br clear=&quot;all&quot;&gt;ESTE HA SIDO UN MENSAJE DE TU DIOS AMO Y SEÑOR MALLER.&lt;br&gt;MAS RESPETO HACIA TU DIOS, Y BORRA ESA ESTUPIDA SONRISA DE TU ROSTRO...&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;
&lt;div class=&quot;gmail_quote&quot;&gt;2009/12/20 &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list-request@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
&lt;blockquote style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=&quot;gmail_quote&quot;&gt;Send gtk-list mailing list submissions to&lt;br&gt;       &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;

&lt;br&gt;To subscribe or unsubscribe via the World Wide Web, visit&lt;br&gt;       &lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;or, via email, send a message with subject or body &amp;#39;help&amp;#39; to&lt;br&gt;

       &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list-request@...&lt;/a&gt;&lt;br&gt;&lt;br&gt;You can reach the person managing the list at&lt;br&gt;       &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list-owner@...&lt;/a&gt;&lt;br&gt;&lt;br&gt;

When replying, please edit your Subject line so it is more specific&lt;br&gt;than &amp;quot;Re: Contents of gtk-list digest...&amp;quot;&lt;br&gt;&lt;br&gt;&lt;br&gt;Today&amp;#39;s Topics:&lt;br&gt;&lt;br&gt;  1. Re: GTK+ is real object oriented? (David Ne?as)&lt;br&gt;  2. Re: GTK+ is real object oriented? (David Ne?as)&lt;br&gt;

  3. Fwd: GTK+ is real object oriented? (frederico schardong)&lt;br&gt;  4. Fwd: GTK+ is real object oriented? (frederico schardong)&lt;br&gt;  5. Fwd: GTK+ is real object oriented? (frederico schardong)&lt;br&gt;  6. Fwd: GTK+ is real object oriented? (frederico schardong)&lt;br&gt;

  7. Re: Custom container + Child type with interface (David Ne?as)&lt;br&gt;  8. Re: Fwd: GTK+ is real object oriented? (Matthew Bucknall)&lt;br&gt;&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------&lt;br&gt;&lt;br&gt;

Message: 1&lt;br&gt;Date: Sun, 20 Dec 2009 18:37:47 +0100&lt;br&gt;From: David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;&lt;br&gt;To: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;Subject: Re: GTK+ is real object oriented?&lt;br&gt;Message-ID: &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;20091220173746.GB8103@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Content-Type: text/plain; charset=us-ascii&lt;br&gt;&lt;br&gt;On Sun, Dec 20, 2009 at 03:07:01PM -0200, frederico schardong wrote:&lt;br&gt;&amp;gt; Is GTK+ really object oriented?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Or just provide a fake object oriented environment?&lt;br&gt;

&lt;br&gt;And what is the difference?&lt;br&gt;&lt;br&gt;If it walks like an object oriented environment and quacks like an&lt;br&gt;object oriented environment, how do you call it?&lt;br&gt;&lt;br&gt;Yeti&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;

Message: 2&lt;br&gt;Date: Sun, 20 Dec 2009 18:54:07 +0100&lt;br&gt;From: David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;&lt;br&gt;To: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;Subject: Re: GTK+ is real object oriented?&lt;br&gt;Message-ID: &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;20091220175407.GC8103@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Content-Type: text/plain; charset=us-ascii&lt;br&gt;&lt;br&gt;On Sun, Dec 20, 2009 at 03:40:34PM -0200, frederico schardong wrote:&lt;br&gt;&amp;gt; The difference is that not a really object-oriented, is a fake object-oriented.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; I call it fake object-oriented environment, maybe not the most&lt;br&gt;

&amp;gt; correctly name, but i think is true.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; What do you think?&lt;br&gt;&lt;br&gt;I think you still did not give any definition of what real and fake&lt;br&gt;means.  At least for you since others will likely disagree whatever the&lt;br&gt;

definition is.&lt;br&gt;&lt;br&gt;So again, it is built around OO concepts and behaves like an OO&lt;br&gt;environment.  How can you tell it is a fake?&lt;br&gt;&lt;br&gt;Yeti&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;Message: 3&lt;br&gt;Date: Sun, 20 Dec 2009 16:16:11 -0200&lt;br&gt;

From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;Subject: Fwd: GTK+ is real object oriented?&lt;br&gt;Message-ID:&lt;br&gt;

       &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;c8f238750912201016r15934a82s2169b68b920b6de4@...&lt;/a&gt;&amp;gt;&lt;br&gt;Content-Type: text/plain; charset=ISO-8859-1&lt;br&gt;&lt;br&gt;---------- Forwarded message ----------&lt;br&gt;

From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;Date: 2009/12/20&lt;br&gt;Subject: Re: GTK+ is real object oriented?&lt;br&gt;To: &amp;quot;Michael P. Soulier&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;msoulier@...&lt;/a&gt;&amp;gt;&lt;br&gt;

&lt;br&gt;&lt;br&gt;Real is when the language have the concepts of ?class, objects,&lt;br&gt;instance, method, inheritance, abstraction, encapsulation,&lt;br&gt;polymorphism...&lt;br&gt;&lt;br&gt;In GTK+ programmin we don&amp;#39;t have something like&lt;br&gt;widget-&amp;gt;setVisibility(TRUE). For me it&amp;#39;s broken the concept of object&lt;br&gt;

oriented, because a attribute(visibility) of the class widget is set&lt;br&gt;by a extern function, not a method of the class widget.&lt;br&gt;&lt;br&gt;2009/12/20 Michael P. Soulier &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;msoulier@...&lt;/a&gt;&amp;gt;:&lt;br&gt;

&amp;gt; On 20/12/09 frederico schardong said:&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; Hi,&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; Is GTK+ really object oriented?&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; Or just provide a fake object oriented environment?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Define real. Define fake.&lt;br&gt;

&amp;gt;&lt;br&gt;&amp;gt; Mike&lt;br&gt;&amp;gt; --&lt;br&gt;&amp;gt; Michael P. Soulier &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=18&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;msoulier@...&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;gt; &amp;quot;Any intelligent fool can make things bigger and more complex... It takes a&lt;br&gt;

&amp;gt; touch of genius - and a lot of courage to move in the opposite direction.&amp;quot;&lt;br&gt;&amp;gt; --Albert Einstein&lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;Frederico Schardong,&lt;br&gt;SOLIS - Open source solutions&lt;br&gt;&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;

Linux registered user #500582&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;Frederico Schardong,&lt;br&gt;SOLIS - Open source solutions&lt;br&gt;&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;Linux registered user #500582&lt;br&gt;

&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;Message: 4&lt;br&gt;Date: Sun, 20 Dec 2009 16:16:32 -0200&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=19&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=20&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;

Subject: Fwd: GTK+ is real object oriented?&lt;br&gt;Message-ID:&lt;br&gt;       &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=21&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;c8f238750912201016i5f2e1553w14e335d0e1f79380@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Content-Type: text/plain; charset=ISO-8859-1&lt;br&gt;&lt;br&gt;---------- Forwarded message ----------&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=22&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;Date: 2009/12/20&lt;br&gt;Subject: Re: GTK+ is real object oriented?&lt;br&gt;

To: &amp;quot;Michael P. Soulier&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=23&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;msoulier@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Fake is when change a attribute (visibility) of a class (gtkwidget)&lt;br&gt;only can be changed by a function (gtk_widget_hide() or&lt;br&gt;

(gtk_widget_show()) not by a method.&lt;br&gt;&lt;br&gt;2009/12/20 frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=24&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;:&lt;br&gt;&amp;gt; Real is when the language have the concepts of ?class, objects,&lt;br&gt;
&amp;gt; instance, method, inheritance, abstraction, encapsulation,&lt;br&gt;
&amp;gt; polymorphism...&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; In GTK+ programmin we don&amp;#39;t have something like&lt;br&gt;&amp;gt; widget-&amp;gt;setVisibility(TRUE). For me it&amp;#39;s broken the concept of object&lt;br&gt;&amp;gt; oriented, because a attribute(visibility) of the class widget is set&lt;br&gt;

&amp;gt; by a extern function, not a method of the class widget.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; 2009/12/20 Michael P. Soulier &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=25&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;msoulier@...&lt;/a&gt;&amp;gt;:&lt;br&gt;&amp;gt;&amp;gt; On 20/12/09 frederico schardong said:&lt;br&gt;

&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hi,&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Is GTK+ really object oriented?&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Or just provide a fake object oriented environment?&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; Define real. Define fake.&lt;br&gt;

&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; Mike&lt;br&gt;&amp;gt;&amp;gt; --&lt;br&gt;&amp;gt;&amp;gt; Michael P. Soulier &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=26&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;msoulier@...&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; &amp;quot;Any intelligent fool can make things bigger and more complex... It takes a&lt;br&gt;

&amp;gt;&amp;gt; touch of genius - and a lot of courage to move in the opposite direction.&amp;quot;&lt;br&gt;&amp;gt;&amp;gt; --Albert Einstein&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; --&lt;br&gt;&amp;gt; Thanks,&lt;br&gt;&amp;gt; Frederico Schardong,&lt;br&gt;&amp;gt; SOLIS - Open source solutions&lt;br&gt;

&amp;gt; &lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;&amp;gt; Linux registered user #500582&lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;Frederico Schardong,&lt;br&gt;SOLIS - Open source solutions&lt;br&gt;&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;

Linux registered user #500582&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;Frederico Schardong,&lt;br&gt;SOLIS - Open source solutions&lt;br&gt;&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;Linux registered user #500582&lt;br&gt;

&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;Message: 5&lt;br&gt;Date: Sun, 20 Dec 2009 16:16:51 -0200&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=27&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=28&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;

Subject: Fwd: GTK+ is real object oriented?&lt;br&gt;Message-ID:&lt;br&gt;       &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=29&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;c8f238750912201016y66918537i58121434875aefc4@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Content-Type: text/plain; charset=UTF-8&lt;br&gt;&lt;br&gt;---------- Forwarded message ----------&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=30&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;Date: 2009/12/20&lt;br&gt;Subject: Re: GTK+ is real object oriented?&lt;br&gt;

To: David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=31&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;The difference is that not a really object-oriented, is a fake object-oriented.&lt;br&gt;&lt;br&gt;I call it fake object-oriented environment, maybe not the most&lt;br&gt;

correctly name, but i think is true.&lt;br&gt;&lt;br&gt;What do you think?&lt;br&gt;&lt;br&gt;2009/12/20 David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=32&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;:&lt;br&gt;&amp;gt; On Sun, Dec 20, 2009 at 03:07:01PM -0200, frederico schardong wrote:&lt;br&gt;

&amp;gt;&amp;gt; Is GTK+ really object oriented?&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; Or just provide a fake object oriented environment?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; And what is the difference?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; If it walks like an object oriented environment and quacks like an&lt;br&gt;

&amp;gt; object oriented environment, how do you call it?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Yeti&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;Frederico Schardong,&lt;br&gt;SOLIS - Open source solutions&lt;br&gt;&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;

Linux registered user #500582&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;Frederico Schardong,&lt;br&gt;SOLIS - Open source solutions&lt;br&gt;&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;Linux registered user #500582&lt;br&gt;

&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;Message: 6&lt;br&gt;Date: Sun, 20 Dec 2009 16:17:12 -0200&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=33&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=34&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;

Subject: Fwd: GTK+ is real object oriented?&lt;br&gt;Message-ID:&lt;br&gt;       &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=35&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;c8f238750912201017y7c2b9040p10d55e7228e41154@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Content-Type: text/plain; charset=UTF-8&lt;br&gt;&lt;br&gt;---------- Forwarded message ----------&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=36&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;Date: 2009/12/20&lt;br&gt;Subject: Re: GTK+ is real object oriented?&lt;br&gt;

To: David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=37&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Maybe I had expressed wrong.&lt;br&gt;&lt;br&gt;I don&amp;#39;t wanna say that GTK+ NOT IS OO, I&amp;#39;m saying that the way that&lt;br&gt;GTK+ implements the concepts of OO is different. As I say before...&lt;br&gt;

&amp;quot;change a attribute (visibility) of a class (gtkwidget) only can be&lt;br&gt;changed by a function (gtk_widget_hide() or (gtk_widget_show()) not by&lt;br&gt;a method&amp;quot;.&lt;br&gt;&lt;br&gt;Yes, GTK+ has been construct around OO concepts, buts it have all&lt;br&gt;

those concepts that a say before (class, objects,&lt;br&gt;instance, method, inheritance, abstraction, encapsulation, polymorphism)?&lt;br&gt;&lt;br&gt;Because this things a say that&amp;#39;s fake (maybe not the correct word).&lt;br&gt;&lt;br&gt;2009/12/20 David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=38&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;:&lt;br&gt;

&amp;gt; On Sun, Dec 20, 2009 at 03:40:34PM -0200, frederico schardong wrote:&lt;br&gt;&amp;gt;&amp;gt; The difference is that not a really object-oriented, is a fake object-oriented.&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; I call it fake object-oriented environment, maybe not the most&lt;br&gt;

&amp;gt;&amp;gt; correctly name, but i think is true.&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt; What do you think?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; I think you still did not give any definition of what real and fake&lt;br&gt;&amp;gt; means. ?At least for you since others will likely disagree whatever the&lt;br&gt;

&amp;gt; definition is.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; So again, it is built around OO concepts and behaves like an OO&lt;br&gt;&amp;gt; environment. ?How can you tell it is a fake?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Yeti&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;

Frederico Schardong,&lt;br&gt;SOLIS - Open source solutions&lt;br&gt;&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;Linux registered user #500582&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--&lt;br&gt;Thanks,&lt;br&gt;Frederico Schardong,&lt;br&gt;
SOLIS - Open source solutions&lt;br&gt;
&lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;Linux registered user #500582&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;Message: 7&lt;br&gt;Date: Sun, 20 Dec 2009 19:22:20 +0100&lt;br&gt;From: David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=39&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;&lt;br&gt;

To: Matthew Bucknall &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=40&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matt@...&lt;/a&gt;&amp;gt;&lt;br&gt;Cc: &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=41&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=42&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Subject: Re: Custom container + Child type with interface&lt;br&gt;Message-ID: &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=43&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;20091220182220.GB17795@...&lt;/a&gt;&amp;gt;&lt;br&gt;Content-Type: text/plain; charset=us-ascii&lt;br&gt;

&lt;br&gt;On Sun, Dec 20, 2009 at 04:43:57PM +0000, Matthew Bucknall wrote:&lt;br&gt;&amp;gt; Next question - The interface I have defined basically just mandates a&lt;br&gt;&amp;gt; few properties. The container that requires children to implement this&lt;br&gt;

&amp;gt; interface only ever reads these properties.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Some implementers of the interface will determine the value of the&lt;br&gt;&amp;gt; interface properties based on various bits of internal state&lt;br&gt;&amp;gt; information. Other implementers will be passed the property values via&lt;br&gt;

&amp;gt; their constructors.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; So as far as the container and some implementers are concerned, the&lt;br&gt;&amp;gt; interface properties only need to be G_PARAM_READABLE. In other cases,&lt;br&gt;&amp;gt; the properties might need to be (G_PARAM_READWRITE |&lt;br&gt;

&amp;gt; G_PARAM_CONSTRUCT_ONLY).&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; I assume that the interface definition has to go with the lowest common&lt;br&gt;&amp;gt; denominator, which I think is G_PARAM_READWRITE. In that case, what&lt;br&gt;&amp;gt; should implementers do where the properties are not settable (because&lt;br&gt;

&amp;gt; they are derived from other state information)?&lt;br&gt;&lt;br&gt;I&amp;#39;ve never had to override properties (fortunately), so just some OO&lt;br&gt;theory...&lt;br&gt;&lt;br&gt;You do not go with `the least common denominator&amp;#39;.  The is-a relation&lt;br&gt;

between subclases and classes or implementations of interfaces means that&lt;br&gt;you can always say MyFoo is a GpanePanel if it implements the interface.&lt;br&gt;In other words, you must be always able to substitute the derived object&lt;br&gt;

for the parent.&lt;br&gt;&lt;br&gt;You can&amp;#39;t do this if the parent has writable properties but the child&lt;br&gt;has not.&lt;br&gt;&lt;br&gt;So to mandate the is-a relation in case of your properties, the parent&lt;br&gt;must have the most *restrictive* flags (typically G_PARAM_READABLE).&lt;br&gt;

Subclasses can then permit more operations.&lt;br&gt;&lt;br&gt;Regards,&lt;br&gt;&lt;br&gt;Yeti&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;Message: 8&lt;br&gt;Date: Sun, 20 Dec 2009 19:08:31 +0000&lt;br&gt;From: Matthew Bucknall &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=44&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;matt@...&lt;/a&gt;&amp;gt;&lt;br&gt;

To: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=45&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;Cc: &amp;quot;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=46&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=47&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&amp;gt;&lt;br&gt;

Subject: Re: Fwd: GTK+ is real object oriented?&lt;br&gt;Message-ID: &amp;lt;1261336111.28816.86.camel@newton&amp;gt;&lt;br&gt;Content-Type: text/plain; charset=&amp;quot;UTF-8&amp;quot;&lt;br&gt;&lt;br&gt;I think you&amp;#39;re making way to strong a connection between language syntax&lt;br&gt;

and programming paradigms. You&amp;#39;re confusing &amp;#39;what&amp;#39; with &amp;#39;how&amp;#39;.&lt;br&gt;&lt;br&gt;GObject, on which GTK+ is built provides all the key OOP properties and&lt;br&gt;GTK+ uses them to maximum effect:&lt;br&gt;&lt;br&gt;Abstraction&lt;br&gt;

Polymorphism&lt;br&gt;Inheritance&lt;br&gt;Encapsulation&lt;br&gt;&lt;br&gt;C was not designed with object-oriented programming in-mind, so of&lt;br&gt;course the way GObject goes about presenting the above characteristics&lt;br&gt;in a C API may be a little awkward compared to how they are realized in&lt;br&gt;

other languages. That does not detract from the fact that GObject/GTK+&lt;br&gt;provides a &amp;#39;real&amp;#39; object-oriented environment. It just means it does so&lt;br&gt;in a way with which you might not be comfortable.&lt;br&gt;&lt;br&gt;Seems to me, if you want to stick with a compiled language, you might be&lt;br&gt;

better off using C++ and programming GTK+ applications via the gtkmm C++&lt;br&gt;bindings (&lt;a href=&quot;http://www.gtkmm.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.gtkmm.org/&lt;/a&gt;).&lt;br&gt;&lt;br&gt;Matt.&lt;br&gt;&lt;br&gt;On Sun, 2009-12-20 at 16:17 -0200, frederico schardong wrote:&lt;br&gt;

&amp;gt; ---------- Forwarded message ----------&lt;br&gt;&amp;gt; From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=48&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;gt; Date: 2009/12/20&lt;br&gt;&amp;gt; Subject: Re: GTK+ is real object oriented?&lt;br&gt;

&amp;gt; To: David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=49&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Maybe I had expressed wrong.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; I don&amp;#39;t wanna say that GTK+ NOT IS OO, I&amp;#39;m saying that the way that&lt;br&gt;

&amp;gt; GTK+ implements the concepts of OO is different. As I say before...&lt;br&gt;&amp;gt; &amp;quot;change a attribute (visibility) of a class (gtkwidget) only can be&lt;br&gt;&amp;gt; changed by a function (gtk_widget_hide() or (gtk_widget_show()) not by&lt;br&gt;

&amp;gt; a method&amp;quot;.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Yes, GTK+ has been construct around OO concepts, buts it have all&lt;br&gt;&amp;gt; those concepts that a say before (class, objects,&lt;br&gt;&amp;gt; instance, method, inheritance, abstraction, encapsulation, polymorphism)?&lt;br&gt;

&amp;gt;&lt;br&gt;&amp;gt; Because this things a say that&amp;#39;s fake (maybe not the correct word).&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; 2009/12/20 David Ne?as &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=50&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;:&lt;br&gt;&amp;gt; &amp;gt; On Sun, Dec 20, 2009 at 03:40:34PM -0200, frederico schardong wrote:&lt;br&gt;

&amp;gt; &amp;gt;&amp;gt; The difference is that not a really object-oriented, is a fake object-oriented.&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I call it fake object-oriented environment, maybe not the most&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; correctly name, but i think is true.&lt;br&gt;

&amp;gt; &amp;gt;&amp;gt;&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; What do you think?&lt;br&gt;&amp;gt; &amp;gt;&lt;br&gt;&amp;gt; &amp;gt; I think you still did not give any definition of what real and fake&lt;br&gt;&amp;gt; &amp;gt; means.  At least for you since others will likely disagree whatever the&lt;br&gt;

&amp;gt; &amp;gt; definition is.&lt;br&gt;&amp;gt; &amp;gt;&lt;br&gt;&amp;gt; &amp;gt; So again, it is built around OO concepts and behaves like an OO&lt;br&gt;&amp;gt; &amp;gt; environment.  How can you tell it is a fake?&lt;br&gt;&amp;gt; &amp;gt;&lt;br&gt;&amp;gt; &amp;gt; Yeti&lt;br&gt;&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; --&lt;br&gt;&amp;gt; Thanks,&lt;br&gt;&amp;gt; Frederico Schardong,&lt;br&gt;&amp;gt; SOLIS - Open source solutions&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.solis.coop.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.solis.coop.br&lt;/a&gt;&lt;br&gt;&amp;gt; Linux registered user #500582&lt;br&gt;

&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------&lt;br&gt;&lt;br&gt;_______________________________________________&lt;br&gt;gtk-list mailing list&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=51&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;

&lt;br&gt;&lt;br&gt;End of gtk-list Digest, Vol 68, Issue 27&lt;br&gt;****************************************&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866896&amp;i=52&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-gtk-list-Digest%2C-Vol-68%2C-Issue-27-tp26866896p26866896.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866683</id>
	<title>Re: Custom container + Child type with interface</title>
	<published>2009-12-20T11:47:55Z</published>
	<updated>2009-12-20T11:47:55Z</updated>
	<author>
		<name>Matt Bucknall</name>
	</author>
	<content type="html">Yes, it does. But as far as I can tell, implementers of the interface
&lt;br&gt;cannot override the GParamFlags of an interface property with some
&lt;br&gt;superset. Effectively, implementers can only override the property's
&lt;br&gt;getter/setter. Please let me know if I've got that wrong.
&lt;br&gt;&lt;br&gt;This is why it seems I could only go with the lowest common denominator
&lt;br&gt;of GParamFlag settings in the interface definition. Which I agree makes
&lt;br&gt;a total mess of the 'is-a' paradigm - which is something I'm trying to
&lt;br&gt;avoid.
&lt;br&gt;&lt;br&gt;Matt.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Sun, 2009-12-20 at 20:35 +0100, David Nečas wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sun, Dec 20, 2009 at 07:30:42PM +0000, Matthew Bucknall wrote:
&lt;br&gt;&amp;gt; &amp;gt; Seems to me, it should be perfectly acceptable to define a property that
&lt;br&gt;&amp;gt; &amp;gt; can be set at construction, but then only read during the rest of the
&lt;br&gt;&amp;gt; &amp;gt; owning object's lifetime (i.e. something like G_PARAM_READABLE |
&lt;br&gt;&amp;gt; &amp;gt; PARAM_CONSTRUCT_ONLY), but GObject does not allow this - at least, it
&lt;br&gt;&amp;gt; &amp;gt; didn't work when I tried.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That's exactly what G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY does if I
&lt;br&gt;&amp;gt; am not mistaken. &amp;nbsp;The terminology is a bit confusing.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yeti
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866683&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Custom-container-%2B-Child-type-with-interface-tp26863728p26866683.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866564</id>
	<title>Re: Custom container + Child type with interface</title>
	<published>2009-12-20T11:35:28Z</published>
	<updated>2009-12-20T11:35:28Z</updated>
	<author>
		<name>David Nečas (Yeti)-2</name>
	</author>
	<content type="html">On Sun, Dec 20, 2009 at 07:30:42PM +0000, Matthew Bucknall wrote:
&lt;br&gt;&amp;gt; Seems to me, it should be perfectly acceptable to define a property that
&lt;br&gt;&amp;gt; can be set at construction, but then only read during the rest of the
&lt;br&gt;&amp;gt; owning object's lifetime (i.e. something like G_PARAM_READABLE |
&lt;br&gt;&amp;gt; PARAM_CONSTRUCT_ONLY), but GObject does not allow this - at least, it
&lt;br&gt;&amp;gt; didn't work when I tried.
&lt;br&gt;&lt;br&gt;That's exactly what G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY does if I
&lt;br&gt;am not mistaken. &amp;nbsp;The terminology is a bit confusing.
&lt;br&gt;&lt;br&gt;Yeti
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866564&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Custom-container-%2B-Child-type-with-interface-tp26863728p26866564.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866527</id>
	<title>Re: Custom container + Child type with interface</title>
	<published>2009-12-20T11:30:42Z</published>
	<updated>2009-12-20T11:30:42Z</updated>
	<author>
		<name>Matt Bucknall</name>
	</author>
	<content type="html">I agree entirely. The problem has arisen because of what I consider a
&lt;br&gt;flaw in the way GObject uses properties during construction (via
&lt;br&gt;g_object_new() etc).
&lt;br&gt;&lt;br&gt;Seems to me, it should be perfectly acceptable to define a property that
&lt;br&gt;can be set at construction, but then only read during the rest of the
&lt;br&gt;owning object's lifetime (i.e. something like G_PARAM_READABLE |
&lt;br&gt;PARAM_CONSTRUCT_ONLY), but GObject does not allow this - at least, it
&lt;br&gt;didn't work when I tried.
&lt;br&gt;&lt;br&gt;In my opinion, an object cannot be considered to fulfil 'is-a anything'
&lt;br&gt;until it has been fully constructed, so the 'is-a' pattern mandated by
&lt;br&gt;an interface during the construction phase is, for the most part,
&lt;br&gt;irrelevant.
&lt;br&gt;&lt;br&gt;I suspect, I'll have to change the interface in question to use methods
&lt;br&gt;rather than properties. But that does feel like a compromise I should
&lt;br&gt;not need to make - especially as I'll have to get around loosing
&lt;br&gt;property change signals I would have otherwise used.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Matt.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On Sun, 2009-12-20 at 19:22 +0100, David Nečas wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sun, Dec 20, 2009 at 04:43:57PM +0000, Matthew Bucknall wrote:
&lt;br&gt;&amp;gt; &amp;gt; Next question - The interface I have defined basically just mandates a
&lt;br&gt;&amp;gt; &amp;gt; few properties. The container that requires children to implement this
&lt;br&gt;&amp;gt; &amp;gt; interface only ever reads these properties.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Some implementers of the interface will determine the value of the
&lt;br&gt;&amp;gt; &amp;gt; interface properties based on various bits of internal state
&lt;br&gt;&amp;gt; &amp;gt; information. Other implementers will be passed the property values via
&lt;br&gt;&amp;gt; &amp;gt; their constructors.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; So as far as the container and some implementers are concerned, the
&lt;br&gt;&amp;gt; &amp;gt; interface properties only need to be G_PARAM_READABLE. In other cases,
&lt;br&gt;&amp;gt; &amp;gt; the properties might need to be (G_PARAM_READWRITE |
&lt;br&gt;&amp;gt; &amp;gt; G_PARAM_CONSTRUCT_ONLY).
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I assume that the interface definition has to go with the lowest common
&lt;br&gt;&amp;gt; &amp;gt; denominator, which I think is G_PARAM_READWRITE. In that case, what
&lt;br&gt;&amp;gt; &amp;gt; should implementers do where the properties are not settable (because
&lt;br&gt;&amp;gt; &amp;gt; they are derived from other state information)?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've never had to override properties (fortunately), so just some OO
&lt;br&gt;&amp;gt; theory...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; You do not go with `the least common denominator'. &amp;nbsp;The is-a relation
&lt;br&gt;&amp;gt; between subclases and classes or implementations of interfaces means that
&lt;br&gt;&amp;gt; you can always say MyFoo is a GpanePanel if it implements the interface.
&lt;br&gt;&amp;gt; In other words, you must be always able to substitute the derived object
&lt;br&gt;&amp;gt; for the parent.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; You can't do this if the parent has writable properties but the child
&lt;br&gt;&amp;gt; has not.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So to mandate the is-a relation in case of your properties, the parent
&lt;br&gt;&amp;gt; must have the most *restrictive* flags (typically G_PARAM_READABLE).
&lt;br&gt;&amp;gt; Subclasses can then permit more operations.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yeti
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866527&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Custom-container-%2B-Child-type-with-interface-tp26863728p26866527.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866494</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T11:26:20Z</published>
	<updated>2009-12-20T11:26:20Z</updated>
	<author>
		<name>frederico schardong</name>
	</author>
	<content type="html">Yes, C don't provide sintax support for do my example of method.
&lt;br&gt;&lt;br&gt;In OOP such class must have self methods to set self attributes.
&lt;br&gt;&lt;br&gt;What happen is GObject (by the C limitation) just have attributes, the
&lt;br&gt;methods to set its attributes are functions out of the struct. Ok, is
&lt;br&gt;this what happen, but for this facts don't broke the OOP?
&lt;br&gt;&lt;br&gt;&lt;br&gt;2009/12/20 Michael Torrie &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866494&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;torriem@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; frederico schardong wrote:
&lt;br&gt;&amp;gt;&amp;gt; Fake is when change a attribute (visibility) of a class (gtkwidget)
&lt;br&gt;&amp;gt;&amp;gt; only can be changed by a function (gtk_widget_hide() or
&lt;br&gt;&amp;gt;&amp;gt; (gtk_widget_show()) not by a method.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In most languages, methods are functions.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sounds to me like you are stuck on syntax rather than the real concept.
&lt;br&gt;&amp;gt;  You can do object-oriented programming in most any language, whether it
&lt;br&gt;&amp;gt; has syntactical support or not.  C++'s objects are really structs with a
&lt;br&gt;&amp;gt; function call table (vtable) tacked on.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You might consider the Vala language, which implements a syntax more
&lt;br&gt;&amp;gt; like what you are expecting.  Under the hood, Vala is straight gobject
&lt;br&gt;&amp;gt; (straight-C), so it's very light-weight.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; gtk-list mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866494&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Thanks,
&lt;br&gt;Frederico Schardong,
&lt;br&gt;SOLIS - Open source solutions
&lt;br&gt;www.solis.coop.br
&lt;br&gt;Linux registered user #500582
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866494&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26866494.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866403</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T11:16:13Z</published>
	<updated>2009-12-20T11:16:13Z</updated>
	<author>
		<name>Michael Torrie</name>
	</author>
	<content type="html">frederico schardong wrote:
&lt;br&gt;&amp;gt; Yes, GTK+ has been construct around OO concepts, buts it have all
&lt;br&gt;&amp;gt; those concepts that a say before (class, objects,
&lt;br&gt;&amp;gt; instance, method, inheritance, abstraction, encapsulation, polymorphism)?
&lt;br&gt;&lt;br&gt;Yes, it has all of those things. &amp;nbsp;Inheritance is single-inheritance,
&lt;br&gt;unlike C++. &amp;nbsp;The fact that I can call GtkWidget methods on any GTK
&lt;br&gt;object proves there is polymorphism. &amp;nbsp;Classes? check. &amp;nbsp;Objects and
&lt;br&gt;instances? check. &amp;nbsp;Abstraction? &amp;nbsp;yes.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866403&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26866403.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866368</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T11:13:08Z</published>
	<updated>2009-12-20T11:13:08Z</updated>
	<author>
		<name>Michael Torrie</name>
	</author>
	<content type="html">frederico schardong wrote:
&lt;br&gt;&amp;gt; Fake is when change a attribute (visibility) of a class (gtkwidget)
&lt;br&gt;&amp;gt; only can be changed by a function (gtk_widget_hide() or
&lt;br&gt;&amp;gt; (gtk_widget_show()) not by a method.
&lt;br&gt;&lt;br&gt;In most languages, methods are functions.
&lt;br&gt;&lt;br&gt;Sounds to me like you are stuck on syntax rather than the real concept.
&lt;br&gt;&amp;nbsp;You can do object-oriented programming in most any language, whether it
&lt;br&gt;has syntactical support or not. &amp;nbsp;C++'s objects are really structs with a
&lt;br&gt;function call table (vtable) tacked on.
&lt;br&gt;&lt;br&gt;You might consider the Vala language, which implements a syntax more
&lt;br&gt;like what you are expecting. &amp;nbsp;Under the hood, Vala is straight gobject
&lt;br&gt;(straight-C), so it's very light-weight.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866368&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26866368.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26866329</id>
	<title>Re: Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T11:08:31Z</published>
	<updated>2009-12-20T11:08:31Z</updated>
	<author>
		<name>Matt Bucknall</name>
	</author>
	<content type="html">I think you're making way to strong a connection between language syntax
&lt;br&gt;and programming paradigms. You're confusing 'what' with 'how'.
&lt;br&gt;&lt;br&gt;GObject, on which GTK+ is built provides all the key OOP properties and
&lt;br&gt;GTK+ uses them to maximum effect:
&lt;br&gt;&lt;br&gt;Abstraction
&lt;br&gt;Polymorphism
&lt;br&gt;Inheritance
&lt;br&gt;Encapsulation
&lt;br&gt;&lt;br&gt;C was not designed with object-oriented programming in-mind, so of
&lt;br&gt;course the way GObject goes about presenting the above characteristics
&lt;br&gt;in a C API may be a little awkward compared to how they are realized in
&lt;br&gt;other languages. That does not detract from the fact that GObject/GTK+
&lt;br&gt;provides a 'real' object-oriented environment. It just means it does so
&lt;br&gt;in a way with which you might not be comfortable.
&lt;br&gt;&lt;br&gt;Seems to me, if you want to stick with a compiled language, you might be
&lt;br&gt;better off using C++ and programming GTK+ applications via the gtkmm C++
&lt;br&gt;bindings (&lt;a href=&quot;http://www.gtkmm.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gtkmm.org/&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Matt.
&lt;br&gt;&lt;br&gt;On Sun, 2009-12-20 at 16:17 -0200, frederico schardong wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ---------- Forwarded message ----------
&lt;br&gt;&amp;gt; From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866329&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Date: 2009/12/20
&lt;br&gt;&amp;gt; Subject: Re: GTK+ is real object oriented?
&lt;br&gt;&amp;gt; To: David Nečas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866329&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Maybe I had expressed wrong.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I don't wanna say that GTK+ NOT IS OO, I'm saying that the way that
&lt;br&gt;&amp;gt; GTK+ implements the concepts of OO is different. As I say before...
&lt;br&gt;&amp;gt; &amp;quot;change a attribute (visibility) of a class (gtkwidget) only can be
&lt;br&gt;&amp;gt; changed by a function (gtk_widget_hide() or (gtk_widget_show()) not by
&lt;br&gt;&amp;gt; a method&amp;quot;.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yes, GTK+ has been construct around OO concepts, buts it have all
&lt;br&gt;&amp;gt; those concepts that a say before (class, objects,
&lt;br&gt;&amp;gt; instance, method, inheritance, abstraction, encapsulation, polymorphism)?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Because this things a say that's fake (maybe not the correct word).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 2009/12/20 David Nečas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866329&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;gt; On Sun, Dec 20, 2009 at 03:40:34PM -0200, frederico schardong wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; The difference is that not a really object-oriented, is a fake object-oriented.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I call it fake object-oriented environment, maybe not the most
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; correctly name, but i think is true.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; What do you think?
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; I think you still did not give any definition of what real and fake
&lt;br&gt;&amp;gt; &amp;gt; means. &amp;nbsp;At least for you since others will likely disagree whatever the
&lt;br&gt;&amp;gt; &amp;gt; definition is.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; So again, it is built around OO concepts and behaves like an OO
&lt;br&gt;&amp;gt; &amp;gt; environment. &amp;nbsp;How can you tell it is a fake?
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Yeti
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Thanks,
&lt;br&gt;&amp;gt; Frederico Schardong,
&lt;br&gt;&amp;gt; SOLIS - Open source solutions
&lt;br&gt;&amp;gt; www.solis.coop.br
&lt;br&gt;&amp;gt; Linux registered user #500582
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26866329&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26866329.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26865891</id>
	<title>Re: Custom container + Child type with interface</title>
	<published>2009-12-20T10:22:20Z</published>
	<updated>2009-12-20T10:22:20Z</updated>
	<author>
		<name>David Nečas (Yeti)-2</name>
	</author>
	<content type="html">On Sun, Dec 20, 2009 at 04:43:57PM +0000, Matthew Bucknall wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Next question - The interface I have defined basically just mandates a
&lt;br&gt;&amp;gt; few properties. The container that requires children to implement this
&lt;br&gt;&amp;gt; interface only ever reads these properties.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Some implementers of the interface will determine the value of the
&lt;br&gt;&amp;gt; interface properties based on various bits of internal state
&lt;br&gt;&amp;gt; information. Other implementers will be passed the property values via
&lt;br&gt;&amp;gt; their constructors.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So as far as the container and some implementers are concerned, the
&lt;br&gt;&amp;gt; interface properties only need to be G_PARAM_READABLE. In other cases,
&lt;br&gt;&amp;gt; the properties might need to be (G_PARAM_READWRITE |
&lt;br&gt;&amp;gt; G_PARAM_CONSTRUCT_ONLY).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I assume that the interface definition has to go with the lowest common
&lt;br&gt;&amp;gt; denominator, which I think is G_PARAM_READWRITE. In that case, what
&lt;br&gt;&amp;gt; should implementers do where the properties are not settable (because
&lt;br&gt;&amp;gt; they are derived from other state information)?
&lt;/div&gt;&lt;br&gt;I've never had to override properties (fortunately), so just some OO
&lt;br&gt;theory...
&lt;br&gt;&lt;br&gt;You do not go with `the least common denominator'. &amp;nbsp;The is-a relation
&lt;br&gt;between subclases and classes or implementations of interfaces means that
&lt;br&gt;you can always say MyFoo is a GpanePanel if it implements the interface.
&lt;br&gt;In other words, you must be always able to substitute the derived object
&lt;br&gt;for the parent.
&lt;br&gt;&lt;br&gt;You can't do this if the parent has writable properties but the child
&lt;br&gt;has not.
&lt;br&gt;&lt;br&gt;So to mandate the is-a relation in case of your properties, the parent
&lt;br&gt;must have the most *restrictive* flags (typically G_PARAM_READABLE).
&lt;br&gt;Subclasses can then permit more operations.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;&lt;br&gt;Yeti
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865891&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Custom-container-%2B-Child-type-with-interface-tp26863728p26865891.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26865855</id>
	<title>Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T10:17:12Z</published>
	<updated>2009-12-20T10:17:12Z</updated>
	<author>
		<name>frederico schardong</name>
	</author>
	<content type="html">---------- Forwarded message ----------
&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865855&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: 2009/12/20
&lt;br&gt;Subject: Re: GTK+ is real object oriented?
&lt;br&gt;To: David Nečas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865855&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;Maybe I had expressed wrong.
&lt;br&gt;&lt;br&gt;I don't wanna say that GTK+ NOT IS OO, I'm saying that the way that
&lt;br&gt;GTK+ implements the concepts of OO is different. As I say before...
&lt;br&gt;&amp;quot;change a attribute (visibility) of a class (gtkwidget) only can be
&lt;br&gt;changed by a function (gtk_widget_hide() or (gtk_widget_show()) not by
&lt;br&gt;a method&amp;quot;.
&lt;br&gt;&lt;br&gt;Yes, GTK+ has been construct around OO concepts, buts it have all
&lt;br&gt;those concepts that a say before (class, objects,
&lt;br&gt;instance, method, inheritance, abstraction, encapsulation, polymorphism)?
&lt;br&gt;&lt;br&gt;Because this things a say that's fake (maybe not the correct word).
&lt;br&gt;&lt;br&gt;2009/12/20 David Nečas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865855&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sun, Dec 20, 2009 at 03:40:34PM -0200, frederico schardong wrote:
&lt;br&gt;&amp;gt;&amp;gt; The difference is that not a really object-oriented, is a fake object-oriented.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I call it fake object-oriented environment, maybe not the most
&lt;br&gt;&amp;gt;&amp;gt; correctly name, but i think is true.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; What do you think?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think you still did not give any definition of what real and fake
&lt;br&gt;&amp;gt; means.  At least for you since others will likely disagree whatever the
&lt;br&gt;&amp;gt; definition is.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So again, it is built around OO concepts and behaves like an OO
&lt;br&gt;&amp;gt; environment.  How can you tell it is a fake?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yeti
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Thanks,
&lt;br&gt;Frederico Schardong,
&lt;br&gt;SOLIS - Open source solutions
&lt;br&gt;www.solis.coop.br
&lt;br&gt;Linux registered user #500582
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Thanks,
&lt;br&gt;Frederico Schardong,
&lt;br&gt;SOLIS - Open source solutions
&lt;br&gt;www.solis.coop.br
&lt;br&gt;Linux registered user #500582
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865855&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26865855.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26865849</id>
	<title>Fwd: GTK+ is real object oriented?</title>
	<published>2009-12-20T10:16:51Z</published>
	<updated>2009-12-20T10:16:51Z</updated>
	<author>
		<name>frederico schardong</name>
	</author>
	<content type="html">---------- Forwarded message ----------
&lt;br&gt;From: frederico schardong &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865849&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;frede.sch@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: 2009/12/20
&lt;br&gt;Subject: Re: GTK+ is real object oriented?
&lt;br&gt;To: David Nečas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865849&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;The difference is that not a really object-oriented, is a fake object-oriented.
&lt;br&gt;&lt;br&gt;I call it fake object-oriented environment, maybe not the most
&lt;br&gt;correctly name, but i think is true.
&lt;br&gt;&lt;br&gt;What do you think?
&lt;br&gt;&lt;br&gt;2009/12/20 David Nečas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865849&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;yeti@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sun, Dec 20, 2009 at 03:07:01PM -0200, frederico schardong wrote:
&lt;br&gt;&amp;gt;&amp;gt; Is GTK+ really object oriented?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Or just provide a fake object oriented environment?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; And what is the difference?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If it walks like an object oriented environment and quacks like an
&lt;br&gt;&amp;gt; object oriented environment, how do you call it?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Yeti
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Thanks,
&lt;br&gt;Frederico Schardong,
&lt;br&gt;SOLIS - Open source solutions
&lt;br&gt;www.solis.coop.br
&lt;br&gt;Linux registered user #500582
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Thanks,
&lt;br&gt;Frederico Schardong,
&lt;br&gt;SOLIS - Open source solutions
&lt;br&gt;www.solis.coop.br
&lt;br&gt;Linux registered user #500582
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26865849&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GTK%2B-is-real-object-oriented--tp26865225p26865849.html" />
</entry>

</feed>
