<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-1329</id>
	<title>Nabble - Gtk+</title>
	<updated>2008-07-23T12:12:03Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Gtk+-f1329.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Gtk%2B-f1329.html" />
	<subtitle type="html">GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. Gtk+ home is &lt;a href=&quot;http://www.gtk.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-18618598</id>
	<title>Re: working version of GTK for win64</title>
	<published>2008-07-23T12:12:03Z</published>
	<updated>2008-07-23T12:12:03Z</updated>
	<author>
		<name>Richard Hult</name>
	</author>
	<content type="html">Oleg Tchij wrote:
&lt;br&gt;&amp;gt; &amp;nbsp;I've tried to build and run gtk for 64-bit Windows. At last I can upload 
&lt;br&gt;&amp;gt; working version for usage:
&lt;br&gt;&lt;br&gt;Nice, good to see!
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp;2) use the following main types definitions:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #define GLIB_SIZEOF_LONG &amp;nbsp; 4
&lt;br&gt;&amp;gt; #define GLIB_SIZEOF_SIZE_T 8
&lt;br&gt;&lt;br&gt;I have been doing some 64-bit building as well, and used the attached 
&lt;br&gt;patch for the sizes/types.
&lt;br&gt;&lt;br&gt;/Richard
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Imendio AB - Expert solutions in GTK+
&lt;br&gt;&lt;a href=&quot;http://www.imendio.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.imendio.com&lt;/a&gt;&lt;br&gt;&lt;br /&gt;diff --git a/glib-2.14.6/glibconfig.h.win32 b/glib-2.14.6/glibconfig.h.win32
&lt;br&gt;index 62eda5f..093eaed 100644
&lt;br&gt;--- a/glib-2.14.6/glibconfig.h.win32
&lt;br&gt;+++ b/glib-2.14.6/glibconfig.h.win32
&lt;br&gt;@@ -64,6 +64,24 @@ typedef unsigned __int64 guint64;
&lt;br&gt;&amp;nbsp;#define G_GINT64_FORMAT &amp;quot;I64i&amp;quot;
&lt;br&gt;&amp;nbsp;#define G_GUINT64_FORMAT &amp;quot;I64u&amp;quot;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+#if defined(_M_X64) || defined(_M_AMD64)
&lt;br&gt;+
&lt;br&gt;+#define GLIB_SIZEOF_VOID_P 8
&lt;br&gt;+#define GLIB_SIZEOF_LONG &amp;nbsp; 4
&lt;br&gt;+#define GLIB_SIZEOF_SIZE_T 8
&lt;br&gt;+
&lt;br&gt;+typedef signed long long gssize;
&lt;br&gt;+typedef unsigned long long gsize;
&lt;br&gt;+#define G_GSIZE_MODIFIER &amp;quot;I64&amp;quot;
&lt;br&gt;+#define G_GSSIZE_FORMAT &amp;quot;I64d&amp;quot;
&lt;br&gt;+#define G_GSIZE_FORMAT &amp;quot;I64u&amp;quot;
&lt;br&gt;+
&lt;br&gt;+#define G_MAXSIZE	G_MAXUINT64
&lt;br&gt;+#define G_MINSSIZE	G_MININT64
&lt;br&gt;+#define G_MAXSSIZE	G_MAXINT64
&lt;br&gt;+
&lt;br&gt;+#else
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;#define GLIB_SIZEOF_VOID_P 4
&lt;br&gt;&amp;nbsp;#define GLIB_SIZEOF_LONG &amp;nbsp; 4
&lt;br&gt;&amp;nbsp;#define GLIB_SIZEOF_SIZE_T 4
&lt;br&gt;@@ -78,6 +96,8 @@ typedef unsigned int gsize;
&lt;br&gt;&amp;nbsp;#define G_MINSSIZE	G_MININT
&lt;br&gt;&amp;nbsp;#define G_MAXSSIZE	G_MAXINT
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+#endif
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;typedef gint64 goffset;
&lt;br&gt;&amp;nbsp;#define G_MINOFFSET	G_MININT64
&lt;br&gt;&amp;nbsp;#define G_MAXOFFSET	G_MAXINT64
&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18618598&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Dev---General-f1332.html&quot; embed=&quot;fixTarget[1332]&quot; target=&quot;_top&quot; &gt;Gtk+ - Dev - General&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/working-version-of-GTK-for-win64-tp18494625p18618598.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18617955</id>
	<title>Re: developing postgresql app using gtk</title>
	<published>2008-07-23T11:15:06Z</published>
	<updated>2008-07-23T11:15:06Z</updated>
	<author>
		<name>Daniel Espinosa</name>
	</author>
	<content type="html">Hi, I just want to know why libgnomedb is not suitable for you? This could
&lt;br&gt;help gnome-db project to improve.
&lt;br&gt;&lt;br&gt;2008/7/23 paragasu &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18617955&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;paragasu@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 7/22/08, Germán Póo-Caamaño &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18617955&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gpoo@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt; On Tue, 2008-07-22 at 21:44 +0800, paragasu wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; i am very new to gtk programming. still struggling to learn how to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; develop program using gtk.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; i am using debian linux workstation. but i have to develop gtk program
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; that run in windows.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; is it possible to develop gtk in linux and later on run on windows
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; without any code modification?
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; i search all over the internet for tutorial about developing gtk
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; application that connect to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; postgresql database. To my disappointment, i found none. can somebody
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; point me any information about this?
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Take a lot at &lt;a href=&quot;http://www.gnome-db.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnome-db.org/&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; --
&lt;br&gt;&amp;gt; &amp;gt; Germán Póo-Caamaño
&lt;br&gt;&amp;gt; &amp;gt; Concepción - Chile
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://www.gnome.org/~gpoo/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnome.org/~gpoo/&lt;/a&gt;&amp;nbsp;&amp;lt;&lt;a href=&quot;http://www.gnome.org/%7Egpoo/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnome.org/%7Egpoo/&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; i just find out.. libgnomedb might not suitable for me. i found
&lt;br&gt;&amp;gt; libpgeasy is quite interesting.
&lt;br&gt;&amp;gt; anyone out there ever develop gtk application using this lib? can i
&lt;br&gt;&amp;gt; use libpgeasy to develop
&lt;br&gt;&amp;gt; gtk application on windows?
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; gtk-app-devel-list mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18617955&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-app-devel-list@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Trabajar, la mejor arma para tu superación
&lt;br&gt;&amp;quot;de grano en grano, se hace la arena&amp;quot; (R) (en trámite, pero para los cuates:
&lt;br&gt;LIBRE)
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-app-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18617955&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-app-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&lt;/a&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Apps-Dev-f1331.html&quot; embed=&quot;fixTarget[1331]&quot; target=&quot;_top&quot; &gt;Gtk+ - Apps Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/developing-postgresql-app-using-gtk-tp18589925p18617955.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615774</id>
	<title>Re: postgresql &amp; gtk</title>
	<published>2008-07-23T09:33:02Z</published>
	<updated>2008-07-23T09:33:02Z</updated>
	<author>
		<name>Thomas Stover</name>
	</author>
	<content type="html">Well I don't have an example, because I have never done it. I have used 
&lt;br&gt;io channels for other things though, and they do work. See if these 
&lt;br&gt;links help:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://library.gnome.org/devel/gtk-tutorial/stable/x1772.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://library.gnome.org/devel/gtk-tutorial/stable/x1772.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/libpq-notify.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.postgresql.org/docs/8.3/static/libpq-notify.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Gerardo Di Iorio wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, 23 Jul 2008 09:31:33 -0500, Thomas Stover
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615774&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;thomas@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; -I would recommend using the native postgresql library, libpq.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -The next thing to think about is what programming model to use -
&lt;br&gt;&amp;gt;&amp;gt; synchronous, threaded, or asynchronous for the database side. If you go
&lt;br&gt;&amp;gt;&amp;gt; with libpq then you can pick asynchronous, which fits in with gtk
&lt;br&gt;&amp;gt;&amp;gt; paradigms nicely. Also that might be the only way to go for cross
&lt;br&gt;&amp;gt;&amp;gt; platform unless you don't mind UI freezes that wait for network
&lt;br&gt;&amp;gt;&amp;gt; operations. What you will end up with is a g_io_channel that feeds
&lt;br&gt;&amp;gt;&amp;gt; PQconsumeInput().
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; you can send me an example code why use g_io_channel and PQconsumeInput()
&lt;br&gt;&amp;gt; i write an front end in gtk to postgresql in c 
&lt;br&gt;&amp;gt; ciao
&lt;br&gt;&amp;gt; gerardo
&lt;br&gt;&amp;gt; ----------------------------------------------------
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.gerardodiiorio.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gerardodiiorio.com&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-app-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615774&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-app-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Apps-Dev-f1331.html&quot; embed=&quot;fixTarget[1331]&quot; target=&quot;_top&quot; &gt;Gtk+ - Apps Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Re%3A-gtk-app-devel-list-Digest%2C-Vol-51%2C-Issue-31-tp18613065p18615774.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18616747</id>
	<title>Re: Gtk::Notebook memory management quirks</title>
	<published>2008-07-23T09:20:00Z</published>
	<updated>2008-07-23T09:20:00Z</updated>
	<author>
		<name>Julien Langer-2</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2008/7/23 Julien Langer &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616747&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;julien.langer@...&lt;/a&gt;&amp;gt;:&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 dir=&quot;ltr&quot;&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;div class=&quot;Ih2E3d&quot;&gt;2008/7/23 Murray Cumming &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616747&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;&amp;gt;:&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&gt;On Wed, 2008-07-23 at 12:12 +0200, Julien Langer wrote:&lt;br&gt;
&amp;gt; 2008/7/23 Murray Cumming &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616747&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;&amp;gt;:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I don&amp;#39;t think that the builder should delete widgets. Do you&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; have a&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; simple-as-possible compileable test case that shows this? If&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; so, could&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; you please add it to bugzilla?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I load the widgets that are displayed on the notebook tab from a&lt;br&gt;
&amp;gt; GtkBuilder file.&lt;br&gt;
&amp;gt; Multiple tabs can be opened, so I need to create a new GtkBuilder for&lt;br&gt;
&amp;gt; each tab. (I didn&amp;#39;t find another way to replicate the widgets created&lt;br&gt;
&amp;gt; by the GtkBuilder).&lt;br&gt;
&amp;gt; Each of these GtkBuilder files has a VBox with the notebook contents&lt;br&gt;
&amp;gt; which is then added to the notebook as the child widget.&lt;br&gt;
&amp;gt; Once the tab is closed I release the last reference to the&lt;br&gt;
&amp;gt; RefPtr&amp;lt;GtkBuilder&amp;gt; (Of course I need to make sure that no one else&lt;br&gt;
&amp;gt; also holds a reference to the same GtkBuilder). The GtkBuilder will&lt;br&gt;
&amp;gt; then release the VBox.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;Again, I don&amp;#39;t think that&amp;#39;s true, or that it should be true. Do you have&lt;br&gt;
&lt;div&gt;a simple-as-possible compileable test case that shows this?&lt;br&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;I&amp;#39;m currently not at home so I can&amp;#39;t prepare an example but the documentation of the GtkBuilder says:&lt;br&gt;&amp;quot;A GtkBuilder holds a reference to all objects that it has constructed
and drops these references when it is finalized. This finalization can 
cause the destruction of non-widget objects or widgets which are not 
contained in a toplevel window. For toplevel windows constructed by a 
builder, it is the responsibility of the user to call &lt;a href=&quot;http://library.gnome.org/devel/gtk/stable/GtkWidget.html#gtk-widget-destroy&quot; title=&quot;gtk_widget_destroy ()&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;code&gt;gtk_widget_destroy()&lt;/code&gt;&lt;/a&gt; 
to get rid of them and all the widgets they contain.
&amp;quot;&lt;br&gt;&lt;a href=&quot;http://library.gnome.org/devel/gtk/stable/GtkBuilder.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://library.gnome.org/devel/gtk/stable/GtkBuilder.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;That&amp;#39;s for plain Gtk though, the Gtkmm documentation doesn&amp;#39;t say anything about GtkBuilder&amp;#39;s memory management.&lt;br&gt;

&lt;br&gt;But that&amp;#39;s exactly what&amp;#39;s happening in my case since my GtkBuilder files do not contain a toplevel window.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;Ok here&amp;#39;s a minimal example:&lt;br&gt;&lt;br&gt;main.cpp:&lt;br&gt;&lt;br&gt;struct MyHBox : public Gtk::HBox&lt;br&gt;
{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyHBox(BaseObjectType* cobject, const Glib::RefPtr&amp;lt;Gtk::Builder&amp;gt;&amp;amp; builder)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;: Gtk::HBox(cobject) {}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~MyHBox()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;std::cout &amp;lt;&amp;lt; &amp;quot;deleted&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;};&lt;br&gt;&lt;br&gt;int main(int argc, char* argv[])&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gtk::Main kit(argc, argv);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Glib::RefPtr&amp;lt;Gtk::Builder&amp;gt; builder = Gtk::Builder::create_from_file( &amp;quot;test.ui&amp;quot; );&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyHBox *box;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; builder-&amp;gt;get_widget_derived( &amp;quot;hbox&amp;quot;, box );&lt;br&gt;} &lt;br&gt;&lt;br&gt;test.ui:&lt;br&gt;&amp;lt;interface&amp;gt;&lt;br&gt;&amp;lt;object class=&amp;quot;GtkHBox&amp;quot; id=&amp;quot;hbox&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;property name=&amp;quot;visible&amp;quot;&amp;gt;True&amp;lt;/property&amp;gt;&lt;br&gt;
&amp;lt;child&amp;gt;&lt;br&gt;&amp;lt;placeholder/&amp;gt;&lt;br&gt;&amp;lt;/child&amp;gt;&lt;br&gt;&amp;lt;/object&amp;gt;&lt;br&gt;&amp;lt;/interface&amp;gt;&lt;br&gt;&lt;br&gt;&lt;/div&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 dir=&quot;ltr&quot;&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;div&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;Ih2E3d&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;
&lt;div&gt;&lt;br&gt;
&lt;/div&gt;&lt;div&gt;&amp;gt; I first thought that the VBox is released by the notebook but then I&lt;br&gt;
&amp;gt; realized that it&amp;#39;s the GtkBuilder of course.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; It&amp;#39;s all a big hack of course but as I said earlier I didn&amp;#39;t find&lt;br&gt;
&amp;gt; another clever way to replicate widgets that come from a GtkBuilder&lt;br&gt;
&amp;gt; (I&amp;#39;d need something like a clone factory with the GtkBuilder providing&lt;br&gt;
&amp;gt; the examplar objects but as far as I know widgets can&amp;#39;t be copied or&lt;br&gt;
&amp;gt; cloned)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;--&lt;br&gt;
&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616747&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://www.murrayc.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.murrayc.com&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://www.openismus.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.openismus.com&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtkmm-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616747&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtkmm-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtkmm-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtkmm-f1344.html&quot; embed=&quot;fixTarget[1344]&quot; target=&quot;_top&quot; &gt;Gtkmm&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Gtk%3A%3ANotebook-memory-management-quirks-tp18548877p18616747.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615199</id>
	<title>GUADEC 2008 GTK+ Meeting Minutes</title>
	<published>2008-07-23T08:55:25Z</published>
	<updated>2008-07-23T08:55:25Z</updated>
	<author>
		<name>Tim Janik</name>
	</author>
	<content type="html">&lt;br&gt;Hey All.
&lt;br&gt;&lt;br&gt;Kris took meetings during the GTK+ developers meeting at this
&lt;br&gt;years GUADEC. It took some time to transform them into a proper
&lt;br&gt;writeup, and Kris had to leave for a vacation flight before
&lt;br&gt;he could finish them off.
&lt;br&gt;&lt;br&gt;So here are the minutes from Kris with a few finishing touchups
&lt;br&gt;from me. Please keep in mind that these minutes are from our
&lt;br&gt;meeting 2 weeks ago, and thus don't reflect on recent community
&lt;br&gt;discussions and new tweaks to the 3.0 plans.
&lt;br&gt;&lt;br&gt;For an update on our latest plans, please have a look at the
&lt;br&gt;summary of yesterdays IRC meeting:
&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://mail.gnome.org/archives/gtk-devel-list/2008-July/msg00187.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/archives/gtk-devel-list/2008-July/msg00187.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;GTK+ Meeting, 8 July 2008, GUADEC 2008
&lt;br&gt;--------------------------------------
&lt;br&gt;&lt;br&gt;Final agenda:
&lt;br&gt;&lt;br&gt;1. Opening
&lt;br&gt;2. 2.14 release overview
&lt;br&gt;3. Planning GTK+ 2.16
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Features
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Schedule
&lt;br&gt;4. 3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Current status
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Schedule
&lt;br&gt;5. Technical discussions
&lt;br&gt;&amp;nbsp; &amp;nbsp; - 3.0 policy
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Sealing GtkRcStyle
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Offscreen rendering event processing
&lt;br&gt;&amp;nbsp; &amp;nbsp; - New GDK backend that renders into image buffers
&lt;br&gt;6. Closing
&lt;br&gt;&lt;br&gt;&lt;br&gt;Notes:
&lt;br&gt;&lt;br&gt;1. The meeting was opened at 12:10.
&lt;br&gt;&lt;br&gt;2. Last year we have promised to get GTK+ 2.14 out of the door around GUADEC
&lt;br&gt;2008. &amp;nbsp;We are closely approaching this date and we seem to be mostly
&lt;br&gt;feature complete. &amp;nbsp;The testing framework bits have landed in GTK+, as well
&lt;br&gt;has the first part of the offscreen rendering work. &amp;nbsp;Furthermore, a lot of
&lt;br&gt;small API improvements, bug fixes and clean ups have been done. &amp;nbsp;The
&lt;br&gt;remainder of the offscreen rendering work deals with event processing and
&lt;br&gt;is hard to get right (more on this later in the meeting). &amp;nbsp;If we wait for
&lt;br&gt;this to land we will most definitely not make the GUADEC 2008 release date.
&lt;br&gt;Therefore the current plan amongst the core developers is to delay the
&lt;br&gt;second part of the offscreen rendering work to the next release and get
&lt;br&gt;GTK+ 2.14 released in its current shape.
&lt;br&gt;&lt;br&gt;After asking whether people have more pending features that could make it
&lt;br&gt;into 2.14, nobody has something ready that could go in at this point.
&lt;br&gt;Mitch still wants to get new adjustment API (accessors for it) in 2.14 if
&lt;br&gt;possible.
&lt;br&gt;&lt;br&gt;During the next IRC meeting the team would like to propose to API freeze
&lt;br&gt;the next development release and release the stable 2.14 after a few weeks
&lt;br&gt;of stabilization.
&lt;br&gt;&lt;br&gt;&lt;br&gt;3. It was mentioned that Behdad has requested us to consider renaming to
&lt;br&gt;&amp;quot;GTK+ toolkit&amp;quot; and change the license to GPL3. &amp;nbsp;The renaming to &amp;quot;GTK+
&lt;br&gt;toolkit&amp;quot; issue has already been handled in bug #540529 and will not be
&lt;br&gt;done. &amp;nbsp;Changing the license to GPL3 (in GTK+'s case LGPL3) is a long
&lt;br&gt;process and is not planned to be carried out immediately. &amp;nbsp;In any case
&lt;br&gt;we do not want to block a possible GTK+ 3.0 on a license change. A
&lt;br&gt;recent discussion on the mailing list left the impression that some
&lt;br&gt;implications in mixing LGPL3 code with LGPL2 code still have to be
&lt;br&gt;figured out.
&lt;br&gt;&lt;br&gt;Apart from offscreen rendering part 2, the following items are on the
&lt;br&gt;agenda for GTK+ 2.16:
&lt;br&gt;&amp;nbsp; * Mathias Hasselmann's extended layout work. &amp;nbsp;Plans are to start API
&lt;br&gt;&amp;nbsp; &amp;nbsp; review soon.
&lt;br&gt;&amp;nbsp; * Mathias Hasselmann's tool palette. &amp;nbsp;The tool palette is a &amp;quot;tool box&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; as found in for example the Glade UI builder and GIMP. &amp;nbsp;It will undergo
&lt;br&gt;&amp;nbsp; &amp;nbsp; some more real world testing as it will be tried to replace Glade's
&lt;br&gt;&amp;nbsp; &amp;nbsp; toolbox with the tool palette. &amp;nbsp;After that remaining kinks in the API
&lt;br&gt;&amp;nbsp; &amp;nbsp; will be ironed out and a proposal send to the mailing list for
&lt;br&gt;&amp;nbsp; &amp;nbsp; discussion.
&lt;br&gt;&amp;nbsp; * Libsexy integration. &amp;nbsp;This is something that has been on the list for
&lt;br&gt;&amp;nbsp; &amp;nbsp; a couple of years now. &amp;nbsp;Libsexy certainly contains some nice features
&lt;br&gt;&amp;nbsp; &amp;nbsp; and there are no objections if these get merged at some point. &amp;nbsp;The
&lt;br&gt;&amp;nbsp; &amp;nbsp; problem is that so far nobody has stepped up to actually cherry pick
&lt;br&gt;&amp;nbsp; &amp;nbsp; features from libsexy and get them in such a form so that inclusion in
&lt;br&gt;&amp;nbsp; &amp;nbsp; GTK+ can be considered. &amp;nbsp;Lately Cody Russell has been working on getting
&lt;br&gt;&amp;nbsp; &amp;nbsp; an &amp;quot;icon entry&amp;quot; going for GTK+. &amp;nbsp;If his work continues we hope to get
&lt;br&gt;&amp;nbsp; &amp;nbsp; a few libsexy improvements in GTK+ 2.16.
&lt;br&gt;&amp;nbsp; * Simpler API to create a simple ListView, a wrapper around GtkTreeView
&lt;br&gt;&amp;nbsp; &amp;nbsp; to make simple list creation without MVC split easy. &amp;nbsp;Kris has been
&lt;br&gt;&amp;nbsp; &amp;nbsp; discussing such an API with Johan Dahlin and Emmanuele Bassi as they are
&lt;br&gt;&amp;nbsp; &amp;nbsp; familiar with the Python and Perl variants of simple lists APIs
&lt;br&gt;&amp;nbsp; &amp;nbsp; respectively. &amp;nbsp;The Python and Perl APIs seem nice and similar, we want
&lt;br&gt;&amp;nbsp; &amp;nbsp; to attempt to come up with something similar for C.
&lt;br&gt;&lt;br&gt;Further ideas that were raised:
&lt;br&gt;&amp;nbsp; * Add a new signal to GtkTreeModel that inserts a given number of rows
&lt;br&gt;&amp;nbsp; &amp;nbsp; in one go. &amp;nbsp;Kris argues that this is only part of a bigger problem: we
&lt;br&gt;&amp;nbsp; &amp;nbsp; want to have a proper batch/transaction API in GtkTreeModel. &amp;nbsp;We
&lt;br&gt;&amp;nbsp; &amp;nbsp; shouldn't just add this single signal for now, but sit down and properly
&lt;br&gt;&amp;nbsp; &amp;nbsp; design this transaction based API and try to get it right for most
&lt;br&gt;&amp;nbsp; &amp;nbsp; use cases.
&lt;br&gt;&amp;nbsp; * How to do extend the print dialog? &amp;nbsp;Tim advises to file patches
&lt;br&gt;&amp;nbsp; &amp;nbsp; implementing these extensions in bugzilla.
&lt;br&gt;&amp;nbsp; * What is happening on the &amp;quot;GLib foundation library&amp;quot; front? &amp;nbsp;This
&lt;br&gt;&amp;nbsp; &amp;nbsp; foundation library is supposed to become a general desktop support
&lt;br&gt;&amp;nbsp; &amp;nbsp; abstraction library. &amp;nbsp;It would support things like screen saver/power
&lt;br&gt;&amp;nbsp; &amp;nbsp; management/configuration API. &amp;nbsp;As with all larger projects; if somebody
&lt;br&gt;&amp;nbsp; &amp;nbsp; steps up with an API and implementation, we can consider this. &amp;nbsp;Ryan
&lt;br&gt;&amp;nbsp; &amp;nbsp; Lortie says he is working on the configuration API part using GVariant.
&lt;br&gt;&amp;nbsp; * GVariant status. &amp;nbsp;All of the GVariant code is currently in git and it
&lt;br&gt;&amp;nbsp; &amp;nbsp; is working well. &amp;nbsp;An application is needed to try this code out. &amp;nbsp;In
&lt;br&gt;&amp;nbsp; &amp;nbsp; general, it seems to be ready for API review.
&lt;br&gt;&amp;nbsp; * Introspection in 2.16? &amp;nbsp;For introspection it will take at least a few
&lt;br&gt;&amp;nbsp; &amp;nbsp; more months before it is usable. &amp;nbsp;One of the issues is source code
&lt;br&gt;&amp;nbsp; &amp;nbsp; annotation; there is a format for such annotation already, but no
&lt;br&gt;&amp;nbsp; &amp;nbsp; consensus has been reached on the final format for this.
&lt;br&gt;&lt;br&gt;Schedule. &amp;nbsp;The GTK+ team feels that the last few release cycles to try to
&lt;br&gt;aim for a release around GUADEC have been working out well. &amp;nbsp;Therefore, and
&lt;br&gt;also seeing the list of suggested features, we want to try to aim to
&lt;br&gt;release GTK+ 2.16 around GUADEC 2009. &amp;nbsp;This is probably also good for
&lt;br&gt;GNOME; they need a stable release a few months before theirs to be sure
&lt;br&gt;that GTK+ will actually be released on time.
&lt;br&gt;&lt;br&gt;GtkTasks. &amp;nbsp;Tim briefly describes the GtkTasks[1] page and goes over all
&lt;br&gt;slots. &amp;nbsp;It appears that two slots are already filled by some of the
&lt;br&gt;attendees of the meeting, but not marked as such in the wiki. &amp;nbsp;[As far as
&lt;br&gt;I know, the wiki has been updated now. ed.]. &amp;nbsp;Of course we will continue
&lt;br&gt;adding items to the GtkTasks page as new, isolated tasks show up. &amp;nbsp;One of
&lt;br&gt;the transient tasks was moderating the canvas evaluation thread on
&lt;br&gt;gtk-devel-list. &amp;nbsp;This has been done by Carlos Garnacho; briefly summarized
&lt;br&gt;there is no clear consensus on where to go with the canvas. &amp;nbsp;A new
&lt;br&gt;transient task is the migration of the remaining parts of the API
&lt;br&gt;documentation from the SGML templates to the source code. &amp;nbsp;This is being
&lt;br&gt;done by Stefan Kost and has been very well received.
&lt;br&gt;&lt;br&gt;&lt;br&gt;4. The basic plan that was proposed for 3.0:
&lt;br&gt;&amp;nbsp; &amp;nbsp;- Add features in 3.2 and 3.4, ship 3.0 without new features and without
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;new deprecation so porting from 2.x is easy.
&lt;br&gt;&amp;nbsp; &amp;nbsp;- Put a new development policy into place for 3.x which allows clearly
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;defined future removal of deprecated API (ABI break), to enable
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;incremental and more community driven development of the toolkit.
&lt;br&gt;&amp;nbsp; &amp;nbsp;- Seal all public structure fields and provide accessor functions.
&lt;br&gt;&lt;br&gt;The sealing work that started in an independent Git branch after the
&lt;br&gt;Hackfest has already been merged into SVN trunk 2 weeks before GUADEC.
&lt;br&gt;Mitch mentions that GDK has not been sealed yet; this is something that
&lt;br&gt;can be done in 2.16. &amp;nbsp;He also wonders if we can deprecate and remove the
&lt;br&gt;non-multihead API in 3.0. &amp;nbsp;These functions are already marked as
&lt;br&gt;non-multihead-safe. &amp;nbsp;This could be looked into for 2.16.
&lt;br&gt;&lt;br&gt;People wonder whether a GLib 3 is planned and whether the entire library
&lt;br&gt;stack must be parallel installable. &amp;nbsp;A GLib 3 is most probably planned, as
&lt;br&gt;there are things in GLib that might make sense to seal as well. &amp;nbsp;This more
&lt;br&gt;or less implies that the entire library stack will have to be parallel
&lt;br&gt;installable. &amp;nbsp;Alternatives are:
&lt;br&gt;&amp;nbsp; - Another toolkit: this gives you even more port trouble than between
&lt;br&gt;&amp;nbsp; &amp;nbsp; major GTK+ revisions.
&lt;br&gt;&amp;nbsp; - Change the prefix (for example to gt3) and link against both: this won't
&lt;br&gt;&amp;nbsp; &amp;nbsp; really work, you end up with 2 main loops, 2 thread systems,
&lt;br&gt;&amp;nbsp; &amp;nbsp; 2 X11 connections, etc, etc.
&lt;br&gt;&lt;br&gt;Another question is how people plan to fix API in GTK+. &amp;nbsp;Two examples are
&lt;br&gt;raised:
&lt;br&gt;&amp;nbsp; - Scrolling should be handled in an interface.
&lt;br&gt;&amp;nbsp; - Tree model columns should be indicated by a string instead of a number.
&lt;br&gt;The basics of fixing API is by introducing a new function and deprecating
&lt;br&gt;the old. &amp;nbsp;This could lead to &amp;quot;API fragmentation&amp;quot;, as it becomes hard to
&lt;br&gt;find a good function name (though this is already so in 2.x). &amp;nbsp;Though
&lt;br&gt;eventually deprecated functions will now be removed.
&lt;br&gt;&lt;br&gt;GTK+ 2.16 is planned to be released in roughly a year. &amp;nbsp;When do we expect a
&lt;br&gt;release of 3.0? &amp;nbsp;Tim walks through the 3.0 tasks page[2] where things that
&lt;br&gt;need to be accomplished for the release are described. &amp;nbsp;Tim also walks
&lt;br&gt;through the steps that have to be done for releasing 3.0, which are
&lt;br&gt;basically removing all deprecated code and move public structure fields to
&lt;br&gt;private headers. &amp;nbsp;In addition to that also change compiler flags to
&lt;br&gt;disabled deprecated functions by default and enforcing single header
&lt;br&gt;includes. &amp;nbsp;We settled on expecting 3.0 1-2 months after 2.16.
&lt;br&gt;&lt;br&gt;More discussion is held:
&lt;br&gt;&amp;nbsp; - Can we make GDK backends dynamically loadable? &amp;nbsp;A possible use case for
&lt;br&gt;&amp;nbsp; &amp;nbsp; this is to be able to have a GTK+ with both the X11 and Quartz backends
&lt;br&gt;&amp;nbsp; &amp;nbsp; on OS X. &amp;nbsp;This is probably technically possible, but will take several
&lt;br&gt;&amp;nbsp; &amp;nbsp; months of work to achieve. &amp;nbsp;Also, you'll also hit several pieces of
&lt;br&gt;&amp;nbsp; &amp;nbsp; backend specific code in GTK+ instead of GDK.
&lt;br&gt;&amp;nbsp; - What happens with applications that dynamically load two versions of
&lt;br&gt;&amp;nbsp; &amp;nbsp; GTK+ due to ELF dependencies, in particular 2.x and 3.x?
&lt;br&gt;&amp;nbsp; &amp;nbsp; As an example, XMMS is brought up which uses GTK+ 1.2 and could dynamically
&lt;br&gt;&amp;nbsp; &amp;nbsp; load a plugin that pulls in GTK+ 2.x and bad things happen.
&lt;br&gt;&amp;nbsp; &amp;nbsp; People argue that if the plugin would load Qt or something else you
&lt;br&gt;&amp;nbsp; &amp;nbsp; end up with the same problem.
&lt;br&gt;&amp;nbsp; &amp;nbsp; For distributors these are issue that are very hard to debug. &amp;nbsp;There
&lt;br&gt;&amp;nbsp; &amp;nbsp; are several ideas to improve this situation. &amp;nbsp;One is looking into the
&lt;br&gt;&amp;nbsp; &amp;nbsp; linker-mechanism to catch such problems. &amp;nbsp;Eventually we can try to
&lt;br&gt;&amp;nbsp; &amp;nbsp; have GModule to walk the ELF dependency chain of the module to load to
&lt;br&gt;&amp;nbsp; &amp;nbsp; catch any issues before actually loading the module.
&lt;br&gt;&amp;nbsp; &amp;nbsp; It might also be possible to check for conflicting ELF symbols and
&lt;br&gt;&amp;nbsp; &amp;nbsp; provide explanatory error messages in functions like gtk_init.
&lt;br&gt;&amp;nbsp; - How do other projects handle breaking ABI?
&lt;br&gt;&amp;nbsp; &amp;nbsp; Deprecation schemes only scale well if deprecated APIs are really removed
&lt;br&gt;&amp;nbsp; &amp;nbsp; from a code base at some point. Technically, this is an ABI break which is
&lt;br&gt;&amp;nbsp; &amp;nbsp; why GLib/Gtk+ have not been doing this since 2.0. &amp;nbsp;However, lots of other
&lt;br&gt;&amp;nbsp; &amp;nbsp; vendors do this, e.g. Qt does break ABI between major releases, Python 3.0
&lt;br&gt;&amp;nbsp; &amp;nbsp; will be incompatible with 2.5, Apple does remove long deprecated APIs in
&lt;br&gt;&amp;nbsp; &amp;nbsp; newer releases of Mac OS X, Symbian, Microsoft, and the list goes on...
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- A break is held from 13:50 to 14:20.
&lt;br&gt;&lt;br&gt;5. For the remaining hour, a couple of technical discussions were planned.
&lt;br&gt;&lt;br&gt;- 3.0 policy. &amp;nbsp;Most of the 3.0 policy ideas have already been raised in the
&lt;br&gt;meeting. &amp;nbsp;This involves breaking ABI/ABI with a mostly fixed interval,
&lt;br&gt;removing deprecated functions after a defined period of time, etc. &amp;nbsp;The
&lt;br&gt;plan is to start a writeup and review phase of the policy on gtk-devel-list
&lt;br&gt;at some point to reach general agreement amongst the core developers.
&lt;br&gt;Another item that'll be useful to discuss is integrating the commit policy
&lt;br&gt;to the development policy document. &amp;nbsp;The commit policy probably doesn't
&lt;br&gt;need to be much different than it is now, but writing it down will help
&lt;br&gt;current and future contributors:
&lt;br&gt;&amp;nbsp; - Code must compile before you can commit.
&lt;br&gt;&amp;nbsp; - Test suite must be run before commit.
&lt;br&gt;&amp;nbsp; - Revert if a commit breaks the build.
&lt;br&gt;&lt;br&gt;The idea of also using svn hooks for this is raised. &amp;nbsp;We do not know off
&lt;br&gt;head, this would have to be checked with Olav Vitters. &amp;nbsp;Also getting up
&lt;br&gt;dedicated build machines will help here if they run the full test suite
&lt;br&gt;after completing the build and provide notifications or reports.
&lt;br&gt;&lt;br&gt;- GtkRcStyle sealing. &amp;nbsp;We have been wondering whether or not to seal
&lt;br&gt;GtkRcStyle as we are not fully sure yet where we want to go with theming in
&lt;br&gt;3.x. &amp;nbsp;It is a hard object to seal, because a lot of fields are exposed
&lt;br&gt;here. &amp;nbsp;There are voices to actually replace this object with a Cairo-based
&lt;br&gt;variant. &amp;nbsp;Also, last year's theming BoF didn't really go anywhere [this
&lt;br&gt;years was much better, see the notes on gtk-devel-list. ed.]. &amp;nbsp;However,
&lt;br&gt;according to Carlos sealing this and using accessors might be quite
&lt;br&gt;straightforward; he has not tried how hard it is to port an application to
&lt;br&gt;this and whether there is a possibility this could be done automatically.
&lt;br&gt;&lt;br&gt;Are there plans to replace theming in 3.2? &amp;nbsp;This is not clear yet, as there
&lt;br&gt;are no concrete ideas for its replacement at this point. &amp;nbsp;We do know that
&lt;br&gt;during all of 3.x GtkStyle should continue to work, whether or not it is
&lt;br&gt;replaced. &amp;nbsp;Basically this means that we have to seal it; the accessors can
&lt;br&gt;later be reworked to provide compatibility code.
&lt;br&gt;&lt;br&gt;- Offscreen rendering event processing. &amp;nbsp;For the second part of the
&lt;br&gt;offscreen rendering work, a lot of the event processing code in Gdk is
&lt;br&gt;duplicated in non-X11 backends and partly the offscreen code.
&lt;br&gt;We are looking at ways to constrain the events that are sent, some are
&lt;br&gt;very X11 specific. &amp;nbsp;The suggestions are to:
&lt;br&gt;&amp;nbsp; &amp;nbsp;- drop the detail from GdkEventCrossing (it is only theoretically useful
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;in the presence of subwindows, and cannot be relied on for non-X11
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;backends or offscreen windows anyway);
&lt;br&gt;&amp;nbsp; &amp;nbsp;- Confine motions to motion events, synthesize Enter/Leave events.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Deliver new pointer motion information in motion events only. This may
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;result in occasional reports of 0-distance motions, but is easy to
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;program with, since motion logic does not need to be replicated across
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;handlers of multiple event types.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;All other event types just repeat the last motion event coordinates.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Synthesize 0-distance motions upon widget state changes to generate
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Enter/Leave events as needed (e.g. when a widget becomes insensitive
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;or is hidden).
&lt;br&gt;&lt;br&gt;We are wondering if anybody is using the X11 specific aspects of the events
&lt;br&gt;and has problems with the proposed suggestions.
&lt;br&gt;&lt;br&gt;Other things that were brought up and still need polishing in the patch:
&lt;br&gt;&amp;nbsp; - Implicit grabs; which are a separate issue from the event handling
&lt;br&gt;&amp;nbsp; &amp;nbsp; problems listed above.
&lt;br&gt;&amp;nbsp; - Event coordinates transformation does not work for everybody. &amp;nbsp;It looks
&lt;br&gt;&amp;nbsp; &amp;nbsp; like this depends on the version of cairo that is used.
&lt;br&gt;&lt;br&gt;The plan is to get this second part of offscreen rendering finished during
&lt;br&gt;the Fall. &amp;nbsp;Hopefully it will land in GTK+ around November.
&lt;br&gt;&lt;br&gt;Another suggestion was to look into abstracting out the code that handles
&lt;br&gt;event processing. &amp;nbsp;Then the same code engine could be re-used in GDK,
&lt;br&gt;several back-ends and for offscreen rendering.
&lt;br&gt;&lt;br&gt;- New GDK backend. &amp;nbsp;Hans Petter Jansson has recently been working on a new
&lt;br&gt;GDK backend that is not tied to any display system and is fully offscreen.
&lt;br&gt;Each window gets an image surface in which its contents are rendered. &amp;nbsp;Then
&lt;br&gt;an application can do with that image surface what it wants. &amp;nbsp;This is meant
&lt;br&gt;to be used in for example games, where you render the UI in a surface and
&lt;br&gt;then reuse this surface in for example an SDL application. &amp;nbsp;It has event
&lt;br&gt;synthesis for mouse and keyboard events. &amp;nbsp;This backend has been based on
&lt;br&gt;the linux-fb code.
&lt;br&gt;&lt;br&gt;Hans would like to have this in a branch in subversion to continue
&lt;br&gt;development and eventually get this included in GTK+. &amp;nbsp;As a conclusion, he
&lt;br&gt;showed an impressive demo of his work so far.
&lt;br&gt;&lt;br&gt;&lt;br&gt;6. Closing. &amp;nbsp;The meeting was closed around 15:30 as we have to leave the
&lt;br&gt;room to make space for another meeting.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;[1] &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;[2] &lt;a href=&quot;http://live.gnome.org/GTK+/3.0/Tasks&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://live.gnome.org/GTK+/3.0/Tasks&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---
&lt;br&gt;ciaoTJ
&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615199&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Dev---General-f1332.html&quot; embed=&quot;fixTarget[1332]&quot; target=&quot;_top&quot; &gt;Gtk+ - Dev - General&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/GUADEC-2008-GTK%2B-Meeting-Minutes-tp18615199p18615199.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615147</id>
	<title>Re: gtk-app-devel-list Digest, Vol 51, Issue 31</title>
	<published>2008-07-23T08:52:22Z</published>
	<updated>2008-07-23T08:52:22Z</updated>
	<author>
		<name>Gerardo Di Iorio</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;On Wed, 23 Jul 2008 09:31:33 -0500, Thomas Stover
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615147&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;thomas@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -I would recommend using the native postgresql library, libpq.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -The next thing to think about is what programming model to use -
&lt;br&gt;&amp;gt; synchronous, threaded, or asynchronous for the database side. If you go
&lt;br&gt;&amp;gt; with libpq then you can pick asynchronous, which fits in with gtk
&lt;br&gt;&amp;gt; paradigms nicely. Also that might be the only way to go for cross
&lt;br&gt;&amp;gt; platform unless you don't mind UI freezes that wait for network
&lt;br&gt;&amp;gt; operations. What you will end up with is a g_io_channel that feeds
&lt;br&gt;&amp;gt; PQconsumeInput().
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;you can send me an example code why use g_io_channel and PQconsumeInput()
&lt;br&gt;i write an front end in gtk to postgresql in c 
&lt;br&gt;ciao
&lt;br&gt;gerardo
&lt;br&gt;----------------------------------------------------
&lt;br&gt;&lt;a href=&quot;http://www.gerardodiiorio.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gerardodiiorio.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-app-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615147&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-app-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Apps-Dev-f1331.html&quot; embed=&quot;fixTarget[1331]&quot; target=&quot;_top&quot; &gt;Gtk+ - Apps Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Re%3A-gtk-app-devel-list-Digest%2C-Vol-51%2C-Issue-31-tp18613065p18615147.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615100</id>
	<title>Re: Problem displaying image with alpha channel in a transparent window</title>
	<published>2008-07-23T08:47:01Z</published>
	<updated>2008-07-23T08:47:01Z</updated>
	<author>
		<name>Yann Droneaud</name>
	</author>
	<content type="html">Le mercredi 23 juillet 2008 à 17:42 +0200, Yann Droneaud a écrit :
&lt;br&gt;&lt;br&gt;&amp;gt; Fixed program is test-gdkpixbuf-cairo.c
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Error: Missing cairo_t *cr declaration.
&lt;br&gt;&lt;br&gt;Here is the definitive source code.
&lt;br&gt;&lt;br&gt;Sorry.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Yann Droneaud &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615100&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ydroneaud@...&lt;/a&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-app-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615100&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-app-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&lt;/a&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Apps-Dev-f1331.html&quot; embed=&quot;fixTarget[1331]&quot; target=&quot;_top&quot; &gt;Gtk+ - Apps Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Problem-displaying-image-with-alpha-channel-in-a-transparent-window-tp18606974p18615100.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615082</id>
	<title>Re: Problem displaying image with alpha channel in a transparent window</title>
	<published>2008-07-23T08:47:01Z</published>
	<updated>2008-07-23T08:47:01Z</updated>
	<author>
		<name>Yann Droneaud</name>
	</author>
	<content type="html">Le mercredi 23 juillet 2008 à 17:42 +0200, Yann Droneaud a écrit :
&lt;br&gt;&lt;br&gt;&amp;gt; Fixed program is test-gdkpixbuf-cairo.c
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Error: Missing cairo_t *cr declaration.
&lt;br&gt;&lt;br&gt;Here is the definitive source code.
&lt;br&gt;&lt;br&gt;Sorry.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Yann Droneaud &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615082&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ydroneaud@...&lt;/a&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[test-gdkpixbuf-cairo.c]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;/* test-gdkpixbuf-cairo.c - draw a RGBA image in a window using Cairo
&lt;br&gt;&amp;nbsp;*
&lt;br&gt;&amp;nbsp;* Yann Droneaud &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615082&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ydroneaud@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;* 
&lt;br&gt;&amp;nbsp;*/
&lt;br&gt;&lt;br&gt;#include &amp;lt;gtk/gtk.h&amp;gt;
&lt;br&gt;#include &amp;lt;gdk/gdk.h&amp;gt;
&lt;br&gt;#include &amp;lt;gdk/gdkkeysyms.h&amp;gt;
&lt;br&gt;&lt;br&gt;#include &amp;lt;gdk-pixbuf/gdk-pixbuf.h&amp;gt;
&lt;br&gt;&lt;br&gt;static void
&lt;br&gt;realize_signal(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer &amp;nbsp; data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; gdk_window_set_back_pixmap(widget-&amp;gt;window, NULL, FALSE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; return;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static void
&lt;br&gt;destroy_signal(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer &amp;nbsp; data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; gtk_main_quit();
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; return;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static gboolean
&lt;br&gt;button_press_event(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GdkEventButton *event,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; if (event-&amp;gt;button == 1 &amp;&amp; (event-&amp;gt;state &amp; GDK_CONTROL_MASK)) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_window_begin_move_drag(GTK_WINDOW(widget),
&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; &amp;nbsp;(gint) event-&amp;gt;button,
&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; &amp;nbsp;(gint) event-&amp;gt;x_root, 
&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; &amp;nbsp;(gint) event-&amp;gt;y_root,
&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; &amp;nbsp;event-&amp;gt;time);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return TRUE;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; return FALSE;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static gboolean
&lt;br&gt;key_press_event(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GdkEventKey *event,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; gpointer data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; /* handle move if mouse button is pressed and later ctrl is hit */
&lt;br&gt;&amp;nbsp; if ((event-&amp;gt;keyval == GDK_Control_L ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;event-&amp;gt;keyval == GDK_Control_R) &amp;&amp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (event-&amp;gt;state &amp; GDK_BUTTON1_MASK)) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gint x;
&lt;br&gt;&amp;nbsp; &amp;nbsp; gint y;
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_display_get_pointer(gdk_display_get_default(), 
&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; NULL, /* screen */
&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;x,
&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;y, 
&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; NULL); /* state */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_window_begin_move_drag(GTK_WINDOW(widget),
&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; &amp;nbsp;(gint) 1, /* first button, see mask */
&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; &amp;nbsp;x, 
&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; &amp;nbsp;y,
&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; &amp;nbsp;event-&amp;gt;time);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return TRUE;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (event-&amp;gt;keyval == GDK_Escape) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_main_quit();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return TRUE;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; return FALSE; /* event not handled */
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static gboolean
&lt;br&gt;expose_event(GtkWidget *widget, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GdkEventExpose *event,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; GdkPixbuf *pixbuf = (GdkPixbuf *) data;
&lt;br&gt;&amp;nbsp; cairo_t *cr;
&lt;br&gt;&lt;br&gt;&amp;nbsp; cr = gdk_cairo_create(widget-&amp;gt;window);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gdk_cairo_region(cr, event-&amp;gt;region); &amp;nbsp; &amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gdk_cairo_set_source_pixbuf(cr, pixbuf, 0.0, 0.0);
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_paint(cr);
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_destroy(cr);
&lt;br&gt;&lt;br&gt;&amp;nbsp; return TRUE;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;int 
&lt;br&gt;main(int &amp;nbsp; argc,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;char *argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; GdkScreen *screen;
&lt;br&gt;&lt;br&gt;&amp;nbsp; GtkWidget *window;
&lt;br&gt;&lt;br&gt;&amp;nbsp; GdkColormap *colormap; 
&lt;br&gt;&lt;br&gt;&amp;nbsp; const char *color_name = NULL;
&lt;br&gt;&amp;nbsp; GdkColor color;
&lt;br&gt;&lt;br&gt;&amp;nbsp; const char *pixbuf_name = NULL;
&lt;br&gt;&amp;nbsp; GdkPixbuf *pixbuf;
&lt;br&gt;&lt;br&gt;&amp;nbsp; GError *error = NULL;
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_init (&amp;argc, &amp;argv);
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (argc &amp;gt; 1 &amp;&amp; argv[1] != NULL &amp;&amp; *argv[1] != '\0') {
&lt;br&gt;&amp;nbsp; &amp;nbsp; pixbuf_name = argv[1];
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (argc &amp;gt; 2 &amp;&amp; argv[2] != NULL &amp;&amp; *argv[2] != '\0') {
&lt;br&gt;&amp;nbsp; &amp;nbsp; color_name = argv[2];
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (pixbuf_name == NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;missing parameter\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* get RGBA colormap */
&lt;br&gt;&amp;nbsp; screen = gdk_screen_get_default();
&lt;br&gt;&amp;nbsp; colormap = gdk_screen_get_rgba_colormap(screen);
&lt;br&gt;&amp;nbsp; if (colormap == NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;no RGBA colormap\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* use the RGBA colormap */
&lt;br&gt;&amp;nbsp; gtk_widget_set_default_colormap(colormap);
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; /* load the pixbuf */
&lt;br&gt;&amp;nbsp; pixbuf = gdk_pixbuf_new_from_file(argv[1], &amp;error);
&lt;br&gt;&amp;nbsp; if (pixbuf == NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;can't load pixbuf\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; /* check pixbuf format */
&lt;br&gt;&amp;nbsp; if (gdk_pixbuf_get_has_alpha(pixbuf) != TRUE ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; gdk_pixbuf_get_n_channels(pixbuf) != 4 ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; gdk_pixbuf_get_bits_per_sample(pixbuf) != 8) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;incorrect pixbuf format !\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_set_app_paintable(window, TRUE);
&lt;br&gt;&amp;nbsp; gtk_widget_set_double_buffered(window, FALSE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* unneeded, see gtk_widget_set_default_colormap() */ &amp;nbsp;
&lt;br&gt;&amp;nbsp; gtk_widget_set_colormap(window, colormap);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
&lt;br&gt;&amp;nbsp; gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_window_set_title(GTK_WINDOW(window), &amp;quot;simple&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_set_size_request(window,
&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; gdk_pixbuf_get_width(pixbuf),
&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; gdk_pixbuf_get_height(pixbuf));
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (color_name != NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_color_parse(color_name, &amp;color);
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &amp;color);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect_after(G_OBJECT(window), &amp;quot;realize&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;G_CALLBACK(realize_signal), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;destroy&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;G_CALLBACK(destroy_signal), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;key_press_event&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;G_CALLBACK(key_press_event), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;button_press_event&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;G_CALLBACK(button_press_event), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;expose_event&amp;quot;, &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_CALLBACK(expose_event), pixbuf);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_add_events(window,
&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; GDK_EXPOSURE_MASK
&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; | GDK_BUTTON_PRESS_MASK
&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; | GDK_KEY_PRESS_MASK);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_show(window);
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; gtk_main ();
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615082&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;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---General-f1334.html&quot; embed=&quot;fixTarget[1334]&quot; target=&quot;_top&quot; &gt;Gtk+ - General&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Problem-displaying-image-with-alpha-channel-in-a-transparent-window-tp18606960p18615082.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615009</id>
	<title>Re: Problem displaying image with alpha channel in a transparent window</title>
	<published>2008-07-23T08:42:27Z</published>
	<updated>2008-07-23T08:42:27Z</updated>
	<author>
		<name>Yann Droneaud</name>
	</author>
	<content type="html">Le mercredi 23 juillet 2008 à 10:38 +0200, Yann Droneaud a écrit :
&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm trying to write a program to display a picture with full
&lt;br&gt;&amp;gt; transparency in its own window (without border), using Composite
&lt;br&gt;&amp;gt; extension (ARGB colormap and visual).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Using Cairo correctly (e.g. using operator CAIRO_OPERATOR_SOURCE) fixes
&lt;br&gt;my problems, see below.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; So here are my little demonstration programs
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - test-gdkpixbuf.c : 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; This program does the following:
&lt;br&gt;&amp;gt; &amp;nbsp; - looks up the RGBA colormap with gdk_screen_get_rgba_colormap()
&lt;br&gt;&amp;gt; &amp;nbsp; - installs the colormap with gtk_widget_set_default_colormap()
&lt;br&gt;&amp;gt; &amp;nbsp; - creates a GdkPixbuf with gdk_pixbuf_new_from_file()
&lt;br&gt;&amp;gt; &amp;nbsp; - creates a GtkWindow
&lt;br&gt;&amp;gt; &amp;nbsp; - sets the widget as GTK_APP_PAINTABLE with &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; gtk_widget_set_app_paintable()
&lt;br&gt;&amp;gt; &amp;nbsp; - disables double buffering with gtk_widget_set_double_buffered()
&lt;br&gt;&amp;gt; &amp;nbsp; - in the realize signal handler, it removes any background pixmap 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; using gdk_window_set_back_pixmap()
&lt;br&gt;&amp;gt; &amp;nbsp; - in the expose event handler, it draws the GdkPixBuf using
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; gdk_draw_pixbuf()
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;/div&gt;Problem:
&lt;br&gt;&lt;br&gt;- gdk_draw_pixbuf() seems to use Cairo with operator CAIRO_OPERATOR_OVER
&lt;br&gt;&amp;nbsp; so it composes the GdkPixbuf with the background of the window (or 
&lt;br&gt;&amp;nbsp; the content of the root window, if it has no background).
&lt;br&gt;&lt;br&gt;Two way to fix:
&lt;br&gt;&lt;br&gt;Fill the window with a black, full transparency content before 
&lt;br&gt;calling gdk_draw_pixbuf(): in expose_event():
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; ... &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_t *cr = gdk_cairo_create(widget-&amp;gt;window);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 0.0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_paint(cr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_destroy(cr);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_draw_pixbuf(widget-&amp;gt;window,
&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&lt;br&gt;Or, better, use gdk_cairo_set_source_pixbuf() instead of 
&lt;br&gt;gdk_draw_pixbuf():
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_t *cr = gdk_cairo_create(widget-&amp;gt;window);
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_cairo_region(cr, event-&amp;gt;region); &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_cairo_set_source_pixbuf(cr, pixbuf, 0.0, 0.0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_paint(cr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_destroy(cr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&lt;br&gt;Here, I was using CAIRO_OPERATOR_OVER in my first tests, so the 
&lt;br&gt;results were the same than with gdk_draw_pixbuf(). My mistake.
&lt;br&gt;&lt;br&gt;Fixed program is test-gdkpixbuf-cairo.c
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; - test-gdkpixbuf-bg.patch:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; Apply the patch on top of test-gdkpixbuf.c to create 
&lt;br&gt;&amp;gt; &amp;nbsp; test-gdkpixbuf-background.c
&lt;br&gt;&amp;gt; &amp;nbsp; This patch set a pixmap as a background, and draw nothing on the 
&lt;br&gt;&amp;gt; &amp;nbsp; window. Only the realize signal and expose event handlers are 
&lt;br&gt;&amp;gt; &amp;nbsp; modified:
&lt;br&gt;&amp;gt; &amp;nbsp; - realize signal handler creates a new pixmap with gdk_pixmap_new(),
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; writes the content of the GdkPixBuf with gdk_draw_pixbuf() and then
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; install the background with gdk_window_set_back_pixmap().
&lt;br&gt;&amp;gt; &amp;nbsp; - expose event handler only call to gdk_window_clear()
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;/div&gt;Problems:
&lt;br&gt;- gdk_create_pixmap() returns a GdkPixmap with undefined content
&lt;br&gt;- gdk_draw_pixbuf() composes the GdkPixbuf's content with the 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;undefined content of the GdkPixmap
&lt;br&gt;&lt;br&gt;&amp;nbsp; See my post[1] titled &amp;quot;There's something in my pixmap&amp;quot;.
&lt;br&gt;&lt;br&gt;Same fixes two can be applied here: either initialize the content of the
&lt;br&gt;drawable before calling gdk_draw_pixbuf(), either use only cairo to 
&lt;br&gt;draw the GdkPixbuf with the correct operator: CAIRO_OPERATOR_SOURCE.
&lt;br&gt;&lt;br&gt;Remark: I'm still interested in a version using only GDK drawing
&lt;br&gt;functions and no Cairo functions.
&lt;br&gt;&lt;br&gt;Regards.
&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://mail.gnome.org/archives/gtk-list/2008-July/msg00107.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/archives/gtk-list/2008-July/msg00107.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Yann Droneaud &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615009&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ydroneaud@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-app-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615009&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-app-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&lt;/a&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Apps-Dev-f1331.html&quot; embed=&quot;fixTarget[1331]&quot; target=&quot;_top&quot; &gt;Gtk+ - Apps Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Problem-displaying-image-with-alpha-channel-in-a-transparent-window-tp18606974p18615009.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18615035</id>
	<title>Re: Problem displaying image with alpha channel in a transparent window</title>
	<published>2008-07-23T08:42:27Z</published>
	<updated>2008-07-23T08:42:27Z</updated>
	<author>
		<name>Yann Droneaud</name>
	</author>
	<content type="html">Le mercredi 23 juillet 2008 à 10:38 +0200, Yann Droneaud a écrit :
&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm trying to write a program to display a picture with full
&lt;br&gt;&amp;gt; transparency in its own window (without border), using Composite
&lt;br&gt;&amp;gt; extension (ARGB colormap and visual).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Using Cairo correctly (e.g. using operator CAIRO_OPERATOR_SOURCE) fixes
&lt;br&gt;my problems, see below.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; So here are my little demonstration programs
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - test-gdkpixbuf.c : 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; This program does the following:
&lt;br&gt;&amp;gt; &amp;nbsp; - looks up the RGBA colormap with gdk_screen_get_rgba_colormap()
&lt;br&gt;&amp;gt; &amp;nbsp; - installs the colormap with gtk_widget_set_default_colormap()
&lt;br&gt;&amp;gt; &amp;nbsp; - creates a GdkPixbuf with gdk_pixbuf_new_from_file()
&lt;br&gt;&amp;gt; &amp;nbsp; - creates a GtkWindow
&lt;br&gt;&amp;gt; &amp;nbsp; - sets the widget as GTK_APP_PAINTABLE with &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; gtk_widget_set_app_paintable()
&lt;br&gt;&amp;gt; &amp;nbsp; - disables double buffering with gtk_widget_set_double_buffered()
&lt;br&gt;&amp;gt; &amp;nbsp; - in the realize signal handler, it removes any background pixmap 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; using gdk_window_set_back_pixmap()
&lt;br&gt;&amp;gt; &amp;nbsp; - in the expose event handler, it draws the GdkPixBuf using
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; gdk_draw_pixbuf()
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;/div&gt;Problem:
&lt;br&gt;&lt;br&gt;- gdk_draw_pixbuf() seems to use Cairo with operator CAIRO_OPERATOR_OVER
&lt;br&gt;&amp;nbsp; so it composes the GdkPixbuf with the background of the window (or 
&lt;br&gt;&amp;nbsp; the content of the root window, if it has no background).
&lt;br&gt;&lt;br&gt;Two way to fix:
&lt;br&gt;&lt;br&gt;Fill the window with a black, full transparency content before 
&lt;br&gt;calling gdk_draw_pixbuf(): in expose_event():
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; ... &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_t *cr = gdk_cairo_create(widget-&amp;gt;window);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_set_source_rgba(cr, 0.0, 0.0, 0.0, 0.0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_paint(cr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_destroy(cr);
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_draw_pixbuf(widget-&amp;gt;window,
&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&lt;br&gt;Or, better, use gdk_cairo_set_source_pixbuf() instead of 
&lt;br&gt;gdk_draw_pixbuf():
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_t *cr = gdk_cairo_create(widget-&amp;gt;window);
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_cairo_region(cr, event-&amp;gt;region); &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_cairo_set_source_pixbuf(cr, pixbuf, 0.0, 0.0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_paint(cr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; cairo_destroy(cr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&lt;br&gt;Here, I was using CAIRO_OPERATOR_OVER in my first tests, so the 
&lt;br&gt;results were the same than with gdk_draw_pixbuf(). My mistake.
&lt;br&gt;&lt;br&gt;Fixed program is test-gdkpixbuf-cairo.c
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; - test-gdkpixbuf-bg.patch:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; Apply the patch on top of test-gdkpixbuf.c to create 
&lt;br&gt;&amp;gt; &amp;nbsp; test-gdkpixbuf-background.c
&lt;br&gt;&amp;gt; &amp;nbsp; This patch set a pixmap as a background, and draw nothing on the 
&lt;br&gt;&amp;gt; &amp;nbsp; window. Only the realize signal and expose event handlers are 
&lt;br&gt;&amp;gt; &amp;nbsp; modified:
&lt;br&gt;&amp;gt; &amp;nbsp; - realize signal handler creates a new pixmap with gdk_pixmap_new(),
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; writes the content of the GdkPixBuf with gdk_draw_pixbuf() and then
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; install the background with gdk_window_set_back_pixmap().
&lt;br&gt;&amp;gt; &amp;nbsp; - expose event handler only call to gdk_window_clear()
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;/div&gt;Problems:
&lt;br&gt;- gdk_create_pixmap() returns a GdkPixmap with undefined content
&lt;br&gt;- gdk_draw_pixbuf() composes the GdkPixbuf's content with the 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;undefined content of the GdkPixmap
&lt;br&gt;&lt;br&gt;&amp;nbsp; See my post[1] titled &amp;quot;There's something in my pixmap&amp;quot;.
&lt;br&gt;&lt;br&gt;Same fixes two can be applied here: either initialize the content of the
&lt;br&gt;drawable before calling gdk_draw_pixbuf(), either use only cairo to 
&lt;br&gt;draw the GdkPixbuf with the correct operator: CAIRO_OPERATOR_SOURCE.
&lt;br&gt;&lt;br&gt;Remark: I'm still interested in a version using only GDK drawing
&lt;br&gt;functions and no Cairo functions.
&lt;br&gt;&lt;br&gt;Regards.
&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://mail.gnome.org/archives/gtk-list/2008-July/msg00107.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/archives/gtk-list/2008-July/msg00107.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Yann Droneaud &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615035&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ydroneaud@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[test-gdkpixbuf-cairo.c]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;/* test-gdkpixbuf-cairo.c - draw a RGBA image in a window using Cairo
&lt;br&gt;&amp;nbsp;*
&lt;br&gt;&amp;nbsp;* Yann Droneaud &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615035&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ydroneaud@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;* 
&lt;br&gt;&amp;nbsp;*/
&lt;br&gt;&lt;br&gt;#include &amp;lt;gtk/gtk.h&amp;gt;
&lt;br&gt;#include &amp;lt;gdk/gdk.h&amp;gt;
&lt;br&gt;#include &amp;lt;gdk/gdkkeysyms.h&amp;gt;
&lt;br&gt;&lt;br&gt;#include &amp;lt;gdk-pixbuf/gdk-pixbuf.h&amp;gt;
&lt;br&gt;&lt;br&gt;static void
&lt;br&gt;realize_signal(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer &amp;nbsp; data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; gdk_window_set_back_pixmap(widget-&amp;gt;window, NULL, FALSE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; return;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static void
&lt;br&gt;destroy_signal(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer &amp;nbsp; data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; gtk_main_quit();
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; return;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static gboolean
&lt;br&gt;button_press_event(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GdkEventButton *event,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; if (event-&amp;gt;button == 1 &amp;&amp; (event-&amp;gt;state &amp; GDK_CONTROL_MASK)) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_window_begin_move_drag(GTK_WINDOW(widget),
&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; &amp;nbsp;(gint) event-&amp;gt;button,
&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; &amp;nbsp;(gint) event-&amp;gt;x_root, 
&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; &amp;nbsp;(gint) event-&amp;gt;y_root,
&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; &amp;nbsp;event-&amp;gt;time);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return TRUE;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; return FALSE;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static gboolean
&lt;br&gt;key_press_event(GtkWidget *widget,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GdkEventKey *event,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; gpointer data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; /* handle move if mouse button is pressed and later ctrl is hit */
&lt;br&gt;&amp;nbsp; if ((event-&amp;gt;keyval == GDK_Control_L ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;event-&amp;gt;keyval == GDK_Control_R) &amp;&amp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (event-&amp;gt;state &amp; GDK_BUTTON1_MASK)) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gint x;
&lt;br&gt;&amp;nbsp; &amp;nbsp; gint y;
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_display_get_pointer(gdk_display_get_default(), 
&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; NULL, /* screen */
&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;x,
&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;y, 
&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; NULL); /* state */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_window_begin_move_drag(GTK_WINDOW(widget),
&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; &amp;nbsp;(gint) 1, /* first button, see mask */
&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; &amp;nbsp;x, 
&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; &amp;nbsp;y,
&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; &amp;nbsp;event-&amp;gt;time);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return TRUE;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (event-&amp;gt;keyval == GDK_Escape) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_main_quit();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return TRUE;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; return FALSE; /* event not handled */
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;static gboolean
&lt;br&gt;expose_event(GtkWidget *widget, 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GdkEventExpose *event,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpointer data)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; GdkPixbuf *pixbuf = (GdkPixbuf *) data;
&lt;br&gt;&lt;br&gt;&amp;nbsp; cr = gdk_cairo_create(widget-&amp;gt;window);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gdk_cairo_region(cr, event-&amp;gt;region); &amp;nbsp; &amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gdk_cairo_set_source_pixbuf(cr, pixbuf, 0.0, 0.0);
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_paint(cr);
&lt;br&gt;&lt;br&gt;&amp;nbsp; cairo_destroy(cr);
&lt;br&gt;&lt;br&gt;&amp;nbsp; return TRUE;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;int 
&lt;br&gt;main(int &amp;nbsp; argc,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;char *argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; GdkScreen *screen;
&lt;br&gt;&lt;br&gt;&amp;nbsp; GtkWidget *window;
&lt;br&gt;&lt;br&gt;&amp;nbsp; GdkColormap *colormap; 
&lt;br&gt;&lt;br&gt;&amp;nbsp; const char *color_name = NULL;
&lt;br&gt;&amp;nbsp; GdkColor color;
&lt;br&gt;&lt;br&gt;&amp;nbsp; const char *pixbuf_name = NULL;
&lt;br&gt;&amp;nbsp; GdkPixbuf *pixbuf;
&lt;br&gt;&lt;br&gt;&amp;nbsp; GError *error = NULL;
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_init (&amp;argc, &amp;argv);
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (argc &amp;gt; 1 &amp;&amp; argv[1] != NULL &amp;&amp; *argv[1] != '\0') {
&lt;br&gt;&amp;nbsp; &amp;nbsp; pixbuf_name = argv[1];
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (argc &amp;gt; 2 &amp;&amp; argv[2] != NULL &amp;&amp; *argv[2] != '\0') {
&lt;br&gt;&amp;nbsp; &amp;nbsp; color_name = argv[2];
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (pixbuf_name == NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;missing parameter\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* get RGBA colormap */
&lt;br&gt;&amp;nbsp; screen = gdk_screen_get_default();
&lt;br&gt;&amp;nbsp; colormap = gdk_screen_get_rgba_colormap(screen);
&lt;br&gt;&amp;nbsp; if (colormap == NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;no RGBA colormap\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* use the RGBA colormap */
&lt;br&gt;&amp;nbsp; gtk_widget_set_default_colormap(colormap);
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; /* load the pixbuf */
&lt;br&gt;&amp;nbsp; pixbuf = gdk_pixbuf_new_from_file(argv[1], &amp;error);
&lt;br&gt;&amp;nbsp; if (pixbuf == NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;can't load pixbuf\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; /* check pixbuf format */
&lt;br&gt;&amp;nbsp; if (gdk_pixbuf_get_has_alpha(pixbuf) != TRUE ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; gdk_pixbuf_get_n_channels(pixbuf) != 4 ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; gdk_pixbuf_get_bits_per_sample(pixbuf) != 8) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;incorrect pixbuf format !\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_set_app_paintable(window, TRUE);
&lt;br&gt;&amp;nbsp; gtk_widget_set_double_buffered(window, FALSE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; /* unneeded, see gtk_widget_set_default_colormap() */ &amp;nbsp;
&lt;br&gt;&amp;nbsp; gtk_widget_set_colormap(window, colormap);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
&lt;br&gt;&amp;nbsp; gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_window_set_title(GTK_WINDOW(window), &amp;quot;simple&amp;quot;);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_set_size_request(window,
&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; gdk_pixbuf_get_width(pixbuf),
&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; gdk_pixbuf_get_height(pixbuf));
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (color_name != NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; gdk_color_parse(color_name, &amp;color);
&lt;br&gt;&amp;nbsp; &amp;nbsp; gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &amp;color);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect_after(G_OBJECT(window), &amp;quot;realize&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;G_CALLBACK(realize_signal), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;destroy&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;G_CALLBACK(destroy_signal), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;key_press_event&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;G_CALLBACK(key_press_event), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;button_press_event&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;G_CALLBACK(button_press_event), NULL);
&lt;br&gt;&lt;br&gt;&amp;nbsp; g_signal_connect(G_OBJECT(window), &amp;quot;expose_event&amp;quot;, &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;G_CALLBACK(expose_event), pixbuf);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_add_events(window,
&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; GDK_EXPOSURE_MASK
&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; | GDK_BUTTON_PRESS_MASK
&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; | GDK_KEY_PRESS_MASK);
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_show(window);
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; gtk_main ();
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;gtk-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18615035&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;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---General-f1334.html&quot; embed=&quot;fixTarget[1334]&quot; target=&quot;_top&quot; &gt;Gtk+ - General&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Problem-displaying-image-with-alpha-channel-in-a-transparent-window-tp18606960p18615035.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18616736</id>
	<title>Re: Gtk::Notebook memory management quirks</title>
	<published>2008-07-23T07:41:27Z</published>
	<updated>2008-07-23T07:41:27Z</updated>
	<author>
		<name>Julien Langer-2</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2008/7/23 Murray Cumming &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616736&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;&amp;gt;:&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;Ih2E3d&quot;&gt;On Wed, 2008-07-23 at 12:12 +0200, Julien Langer wrote:&lt;br&gt;
&amp;gt; 2008/7/23 Murray Cumming &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616736&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;&amp;gt;:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I don&amp;#39;t think that the builder should delete widgets. Do you&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; have a&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; simple-as-possible compileable test case that shows this? If&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; so, could&lt;br&gt;
&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; you please add it to bugzilla?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I load the widgets that are displayed on the notebook tab from a&lt;br&gt;
&amp;gt; GtkBuilder file.&lt;br&gt;
&amp;gt; Multiple tabs can be opened, so I need to create a new GtkBuilder for&lt;br&gt;
&amp;gt; each tab. (I didn&amp;#39;t find another way to replicate the widgets created&lt;br&gt;
&amp;gt; by the GtkBuilder).&lt;br&gt;
&amp;gt; Each of these GtkBuilder files has a VBox with the notebook contents&lt;br&gt;
&amp;gt; which is then added to the notebook as the child widget.&lt;br&gt;
&amp;gt; Once the tab is closed I release the last reference to the&lt;br&gt;
&amp;gt; RefPtr&amp;lt;GtkBuilder&amp;gt; (Of course I need to make sure that no one else&lt;br&gt;
&amp;gt; also holds a reference to the same GtkBuilder). The GtkBuilder will&lt;br&gt;
&amp;gt; then release the VBox.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;Again, I don&amp;#39;t think that&amp;#39;s true, or that it should be true. Do you have&lt;br&gt;
&lt;div class=&quot;Ih2E3d&quot;&gt;a simple-as-possible compileable test case that shows this?&lt;br&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;I&amp;#39;m currently not at home so I can&amp;#39;t prepare an example but the documentation of the GtkBuilder says:&lt;br&gt;&amp;quot;A GtkBuilder holds a reference to all objects that it has constructed
and drops these references when it is finalized. This finalization can 
cause the destruction of non-widget objects or widgets which are not 
contained in a toplevel window. For toplevel windows constructed by a 
builder, it is the responsibility of the user to call &lt;a href=&quot;http://library.gnome.org/devel/gtk/stable/GtkWidget.html#gtk-widget-destroy&quot; class=&quot;link&quot; title=&quot;gtk_widget_destroy ()&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;&lt;code class=&quot;function&quot;&gt;gtk_widget_destroy()&lt;/code&gt;&lt;/a&gt; 
to get rid of them and all the widgets they contain.
&amp;quot;&lt;br&gt;&lt;a href=&quot;http://library.gnome.org/devel/gtk/stable/GtkBuilder.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://library.gnome.org/devel/gtk/stable/GtkBuilder.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;That&amp;#39;s for plain Gtk though, the Gtkmm documentation doesn&amp;#39;t say anything about GtkBuilder&amp;#39;s memory management.&lt;br&gt;
&lt;br&gt;But that&amp;#39;s exactly what&amp;#39;s happening in my case since my GtkBuilder files do not contain a toplevel window.&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;/div&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;Ih2E3d&quot;&gt;&lt;br&gt;
&lt;/div&gt;&lt;div class=&quot;Ih2E3d&quot;&gt;&amp;gt; I first thought that the VBox is released by the notebook but then I&lt;br&gt;
&amp;gt; realized that it&amp;#39;s the GtkBuilder of course.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; It&amp;#39;s all a big hack of course but as I said earlier I didn&amp;#39;t find&lt;br&gt;
&amp;gt; another clever way to replicate widgets that come from a GtkBuilder&lt;br&gt;
&amp;gt; (I&amp;#39;d need something like a clone factory with the GtkBuilder providing&lt;br&gt;
&amp;gt; the examplar objects but as far as I know widgets can&amp;#39;t be copied or&lt;br&gt;
&amp;gt; cloned)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;Wj3C7c&quot;&gt;--&lt;br&gt;
&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616736&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://www.murrayc.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.murrayc.com&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://www.openismus.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;www.openismus.com&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;gtkmm-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18616736&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtkmm-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtkmm-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtkmm-f1344.html&quot; embed=&quot;fixTarget[1344]&quot; target=&quot;_top&quot; &gt;Gtkmm&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Gtk%3A%3ANotebook-memory-management-quirks-tp18548877p18616736.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18613396</id>
	<title>Re: About GTK+ 3.0 and deprecated things</title>
	<published>2008-07-23T07:41:24Z</published>
	<updated>2008-07-23T07:41:24Z</updated>
	<author>
		<name>Allin Cottrell</name>
	</author>
	<content type="html">On Wed, 23 Jul 2008, Guillaume Cottenceau wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; The 1.x -&amp;gt; 2.0 change was painful for everyone who had an app that
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; needed porting, however I find it pretty irrelevant in comparison to
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; 2.x -&amp;gt; 3.0.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Well, if no libgtk-compat is planned, it will be about as painful
&lt;br&gt;&amp;gt; &amp;gt; for users of the deprecated and removed widgets/functions.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Isn't it a little bit exaggerated?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The GTK+ team wants to remove official support for deprecated 
&lt;br&gt;&amp;gt; things; the larger part of it (from probably a lot of 
&lt;br&gt;&amp;gt; application porting perspectives, and apparently yours) is 
&lt;br&gt;&amp;gt; probably GtkCList and GtkCTree: they were marked deprecated more 
&lt;br&gt;&amp;gt; than 6 years, when GTK+ 2.0 was released (and GtkItemFactory is 
&lt;br&gt;&amp;gt; deprecated in GTK+ 2.4, released more than 4 years ago)...
&lt;/div&gt;&lt;br&gt;I think that finally removing code that was deprecated from the 
&lt;br&gt;get-go with GTK+ 2.0 is quite reasonable. &amp;nbsp;I'm less sure about 
&lt;br&gt;things like GtkItemFactory which were OK till 2.4, and which were 
&lt;br&gt;therefore not part of the (major) porting effort from 1.2 to 2.0.
&lt;br&gt;&lt;br&gt;With GtkItemFactory and GtkAction an additional difficulty is that 
&lt;br&gt;the APIs are apparently quite similar, yet very different in 
&lt;br&gt;important ways. &amp;nbsp;(The menu-construction code can be modified 
&lt;br&gt;fairly easily, but all callbacks have to be re-written very 
&lt;br&gt;carefully.) &amp;nbsp;I recently updated my app from GtkItemFactory to 
&lt;br&gt;GtkAction, and not only was it very time-consuming but it 
&lt;br&gt;introduced a large number of subtle bugs which I'm still working 
&lt;br&gt;through. &amp;nbsp;This is _not_ an easy transition for an app with a 
&lt;br&gt;complex GUI, and that should count for something.
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Allin Cottrell
&lt;br&gt;Department of Economics
&lt;br&gt;Wake Forest University, NC
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613396&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-devel-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Dev---General-f1332.html&quot; embed=&quot;fixTarget[1332]&quot; target=&quot;_top&quot; &gt;Gtk+ - Dev - General&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/About-GTK%2B-3.0-and-deprecated-things-tp18481585p18613396.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18613374</id>
	<title>There's something in my pixmap</title>
	<published>2008-07-23T07:41:16Z</published>
	<updated>2008-07-23T07:41:16Z</updated>
	<author>
		<name>Yann Droneaud</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;When a GdkPixmap is created with gdk_pixmap_new(), its content seems to
&lt;br&gt;be undefined, but GDK's documention [1] says nothing about it.
&lt;br&gt;&lt;br&gt;According to Xlib − C Language X Interface [2], in 5.1. Creating and
&lt;br&gt;Freeing Pixmaps, &amp;quot;The initial contents of the pixmap are undefined.&amp;quot;
&lt;br&gt;&lt;br&gt;GDK's documentation should specify this.
&lt;br&gt;&lt;br&gt;Now questions: 
&lt;br&gt;&lt;br&gt;- how to draw a RGBA GdkPixbuf in this GdkPixmap, discarding the
&lt;br&gt;previous content of the GdkPixmap, e.g. gdk_draw_pixbuf() seems to
&lt;br&gt;compose the GdkPixbuf's content with the GdkPixmap's content, creating
&lt;br&gt;some image corruption.
&lt;br&gt;&lt;br&gt;- if not possible, how to clear GdkPixmap's content with a black, fully
&lt;br&gt;transparent content ?
&lt;br&gt;&lt;br&gt;- without using cairo, if possible, would be better.
&lt;br&gt;&lt;br&gt;Thanks.
&lt;br&gt;&lt;br&gt;[1]
&lt;br&gt;&lt;a href=&quot;http://library.gnome.org/devel/gdk/stable/gdk-Bitmaps-and-Pixmaps.html#gdk-pixmap-new&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://library.gnome.org/devel/gdk/stable/gdk-Bitmaps-and-Pixmaps.html#gdk-pixmap-new&lt;/a&gt;&lt;br&gt;[2] &lt;a href=&quot;http://www.x.org/docs/X11/xlib.pdf&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.x.org/docs/X11/xlib.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;Here is a little program which create a pixmap, convert it in GdkPixbuf
&lt;br&gt;and dump its content to the terminal.
&lt;br&gt;&lt;br&gt;--------------8&amp;lt;-----------------
&lt;br&gt;&lt;br&gt;#include &amp;lt;gtk/gtk.h&amp;gt;
&lt;br&gt;#include &amp;lt;gdk/gdk.h&amp;gt;
&lt;br&gt;#include &amp;lt;gdk/gdkx.h&amp;gt;
&lt;br&gt;&lt;br&gt;#include &amp;lt;gdk-pixbuf/gdk-pixbuf.h&amp;gt;
&lt;br&gt;&lt;br&gt;int
&lt;br&gt;main(int &amp;nbsp; argc,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;char *argv[])
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; GdkColormap *colormap;
&lt;br&gt;&amp;nbsp; GdkPixmap *pixmap;
&lt;br&gt;&amp;nbsp; GdkPixbuf *pixbuf;
&lt;br&gt;&lt;br&gt;&amp;nbsp; unsigned char &amp;nbsp;*p;
&lt;br&gt;&amp;nbsp; guint x;
&lt;br&gt;&amp;nbsp; guint y;
&lt;br&gt;&amp;nbsp; guint n;
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_init (&amp;argc, &amp;argv);
&lt;br&gt;&lt;br&gt;&amp;nbsp; colormap = gdk_screen_get_rgba_colormap(gdk_screen_get_default());
&lt;br&gt;&amp;nbsp; if (colormap == NULL) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;no ARGB colormap\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; gtk_widget_set_default_colormap(colormap);
&lt;br&gt;&lt;br&gt;&amp;nbsp; pixmap = gdk_pixmap_new(NULL, 16, 16, 32);
&lt;br&gt;&lt;br&gt;&amp;nbsp; pixbuf = gdk_pixbuf_get_from_drawable(NULL,
&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pixmap,
&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; colormap,
&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0, 0,
&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0, 0,
&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 16, 16);
&lt;br&gt;&lt;br&gt;&amp;nbsp; n = gdk_pixbuf_get_n_channels(pixbuf);
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (n &amp;lt; 3 || n &amp;gt; 4) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;Invalid pixbuf format\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (gdk_pixbuf_get_bits_per_sample(pixbuf) != 8) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_printerr(&amp;quot;not 8bits per component\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return 1;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (gdk_pixbuf_get_has_alpha(pixbuf) == TRUE) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; g_print(&amp;quot;pixbuf has alpha !\n&amp;quot;);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; p = gdk_pixbuf_get_pixels(pixbuf);
&lt;br&gt;&amp;nbsp; for(y = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; y &amp;lt; gdk_pixbuf_get_height(pixbuf);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; y ++) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; for(x = 0; x &amp;lt; gdk_pixbuf_get_width(pixbuf); x++) {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&amp;quot;(%d,%d) &amp;quot;, x,y);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; switch(n) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case 4:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g_print(&amp;quot;%02x %02x %02x %02x\n&amp;quot;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p[x * 4],
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p[x * 4 + 1],
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p[x * 4 + 2],
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p[x * 4 + 3]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; case 3:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; g_print(&amp;quot;%02x %02x %02x\n&amp;quot;,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p[x * 3],
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p[x * 3 + 1],
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p[x * 3 + 2]);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; g_print(&amp;quot;\n&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; p += gdk_pixbuf_get_rowstride(pixbuf);
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Yann Droneaud &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613374&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ydroneaud@...&lt;/a&gt;&amp;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://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613374&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;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---General-f1334.html&quot; embed=&quot;fixTarget[1334]&quot; target=&quot;_top&quot; &gt;Gtk+ - General&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/There%27s-something-in-my-pixmap-tp18613374p18613374.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18613065</id>
	<title>Re: gtk-app-devel-list Digest, Vol 51, Issue 31</title>
	<published>2008-07-23T07:31:33Z</published>
	<updated>2008-07-23T07:31:33Z</updated>
	<author>
		<name>Thomas Stover</name>
	</author>
	<content type="html">Although I haven't written a postgresql app myself, it is something that 
&lt;br&gt;I have almost had to do several times. Here are some thoughts to help 
&lt;br&gt;you get started:
&lt;br&gt;&lt;br&gt;-Since you didn't specify what language you are using, I'll start by 
&lt;br&gt;saying use C, because you then get to work with gtk and postgresql the 
&lt;br&gt;&amp;quot;right&amp;quot; way. That being said, if you want something easier I would go 
&lt;br&gt;with Python.
&lt;br&gt;&lt;br&gt;-The only way to truly have the exact same code on both linux and 
&lt;br&gt;windows would be to use an interpreted language like python. (which is 
&lt;br&gt;great for cross platform and junior programmer use - depending on were 
&lt;br&gt;you are coming from). That being said, you can certainly do it in C with 
&lt;br&gt;gtk and postgres. The issue is that you end up using #ifdef macros to 
&lt;br&gt;have some different code for different platforms. By and large you can 
&lt;br&gt;do what you want by having different Make files for the different 
&lt;br&gt;platforms, or using a dynamic build system.
&lt;br&gt;&lt;br&gt;-I would recommend using the native postgresql library, libpq.
&lt;br&gt;&lt;br&gt;-The next thing to think about is what programming model to use - 
&lt;br&gt;synchronous, threaded, or asynchronous for the database side. If you go 
&lt;br&gt;with libpq then you can pick asynchronous, which fits in with gtk 
&lt;br&gt;paradigms nicely. Also that might be the only way to go for cross 
&lt;br&gt;platform unless you don't mind UI freezes that wait for network 
&lt;br&gt;operations. What you will end up with is a g_io_channel that feeds 
&lt;br&gt;PQconsumeInput().
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Date: Tue, 22 Jul 2008 21:44:27 +0800
&lt;br&gt;&amp;gt; From: paragasu &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613065&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;paragasu@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: developing postgresql app using gtk
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; i am very new to gtk programming. still struggling to learn how to
&lt;br&gt;&amp;gt; develop program using gtk.
&lt;br&gt;&amp;gt; i am using debian linux workstation. but i have to develop gtk program
&lt;br&gt;&amp;gt; that run in windows.
&lt;br&gt;&amp;gt; is it possible to develop gtk in linux and later on run on windows
&lt;br&gt;&amp;gt; without any code modification?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; i search all over the internet for tutorial about developing gtk
&lt;br&gt;&amp;gt; application that connect to
&lt;br&gt;&amp;gt; postgresql database. To my disappointment, i found none. can somebody
&lt;br&gt;&amp;gt; point me any information about this?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; thank you..
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtk-app-devel-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613065&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtk-app-devel-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtk%2B---Apps-Dev-f1331.html&quot; embed=&quot;fixTarget[1331]&quot; target=&quot;_top&quot; &gt;Gtk+ - Apps Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Re%3A-gtk-app-devel-list-Digest%2C-Vol-51%2C-Issue-31-tp18613065p18613065.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18613054</id>
	<title>Re: Gtk::Notebook memory management quirks</title>
	<published>2008-07-23T07:24:13Z</published>
	<updated>2008-07-23T07:24:13Z</updated>
	<author>
		<name>Murray Cumming</name>
	</author>
	<content type="html">On Wed, 2008-07-23 at 12:12 +0200, Julien Langer wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2008/7/23 Murray Cumming &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613054&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I don't think that the builder should delete widgets. Do you
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; have a
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; simple-as-possible compileable test case that shows this? If
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; so, could
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; you please add it to bugzilla?
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I load the widgets that are displayed on the notebook tab from a
&lt;br&gt;&amp;gt; GtkBuilder file.
&lt;br&gt;&amp;gt; Multiple tabs can be opened, so I need to create a new GtkBuilder for
&lt;br&gt;&amp;gt; each tab. (I didn't find another way to replicate the widgets created
&lt;br&gt;&amp;gt; by the GtkBuilder).
&lt;br&gt;&amp;gt; Each of these GtkBuilder files has a VBox with the notebook contents
&lt;br&gt;&amp;gt; which is then added to the notebook as the child widget.
&lt;br&gt;&amp;gt; Once the tab is closed I release the last reference to the
&lt;br&gt;&amp;gt; RefPtr&amp;lt;GtkBuilder&amp;gt; (Of course I need to make sure that no one else
&lt;br&gt;&amp;gt; also holds a reference to the same GtkBuilder). The GtkBuilder will
&lt;br&gt;&amp;gt; then release the VBox.
&lt;/div&gt;&lt;br&gt;Again, I don't think that's true, or that it should be true. Do you have
&lt;br&gt;a simple-as-possible compileable test case that shows this?
&lt;br&gt;&lt;br&gt;&amp;gt; I first thought that the VBox is released by the notebook but then I
&lt;br&gt;&amp;gt; realized that it's the GtkBuilder of course.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; It's all a big hack of course but as I said earlier I didn't find
&lt;br&gt;&amp;gt; another clever way to replicate widgets that come from a GtkBuilder
&lt;br&gt;&amp;gt; (I'd need something like a clone factory with the GtkBuilder providing
&lt;br&gt;&amp;gt; the examplar objects but as far as I know widgets can't be copied or
&lt;br&gt;&amp;gt; cloned)
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613054&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;
&lt;br&gt;www.murrayc.com
&lt;br&gt;www.openismus.com
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtkmm-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18613054&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtkmm-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtkmm-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtkmm-f1344.html&quot; embed=&quot;fixTarget[1344]&quot; target=&quot;_top&quot; &gt;Gtkmm&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Gtk%3A%3ANotebook-memory-management-quirks-tp18548877p18613054.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18612799</id>
	<title>Re: New API in GTK+ 2.13/14</title>
	<published>2008-07-23T07:12:40Z</published>
	<updated>2008-07-23T07:12:40Z</updated>
	<author>
		<name>Murray Cumming</name>
	</author>
	<content type="html">On Tue, 2008-07-08 at 11:18 +0200, Murray Cumming wrote:
&lt;br&gt;&amp;gt; It looks like GTK+ 2.14 will be released quite soon. I have not been
&lt;br&gt;&amp;gt; paying enough attention to it, so it would be great if people could take
&lt;br&gt;&amp;gt; a look and try to wrap the new API for gtkmm so we can release gtkmm
&lt;br&gt;&amp;gt; 2.14 soon afer GTK+ 2.14 is released.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://library.gnome.org/devel/gtk/unstable/ix09.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://library.gnome.org/devel/gtk/unstable/ix09.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;I think I have wrapped most of the new API, but it would be great if
&lt;br&gt;people could double-check. See the NEWS files for lists of new API for
&lt;br&gt;now.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612799&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;murrayc@...&lt;/a&gt;
&lt;br&gt;www.murrayc.com
&lt;br&gt;www.openismus.com
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;gtkmm-list mailing list
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612799&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/gtkmm-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/gtkmm-list&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Gtkmm-f1344.html&quot; embed=&quot;fixTarget[1344]&quot; target=&quot;_top&quot; &gt;Gtkmm&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/New-API-in-GTK%2B-2.13-14-tp18342531p18612799.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-18612813</id>
	<title>Gtkmm-forge Digest, Vol 26, Issue 7</title>
	<published>2008-07-23T07:12:19Z</published>
	<updated>2008-07-23T07:12:19Z</updated>
	<author>
		<name>gtkmm-forge-request</name>
	</author>
	<content type="html">Send Gtkmm-forge mailing list submissions to
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-forge@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;To subscribe or unsubscribe via the World Wide Web, visit
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/gtkmm-forge&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/gtkmm-forge&lt;/a&gt;&lt;br&gt;or, via email, send a message with subject or body 'help' to
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-forge-request@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;You can reach the person managing the list at
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-forge-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 Gtkmm-forge digest...&amp;quot;
&lt;br&gt;&lt;br&gt;&lt;br&gt;gtkmm-forge is the mailing list that receives gtkmm bug reports from bugzilla. &amp;nbsp;A daily digest is sent to gtkmm-main, to encourage people to help fixing the bugs. Do not try to unsubscribe gtkmm-forge from gtkmm-list.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Today's Topics:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;1. [Bug 544135] [PATCH] Include depreated flags in
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; gtkmmconfig.in (backport from trunk) (gtkmm (bugzilla.gnome.org))
&lt;br&gt;&amp;nbsp; &amp;nbsp;2. [Bug 520778] [PATCH] GNode wrapper implementation
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (glibmm (bugzilla.gnome.org))
&lt;br&gt;&amp;nbsp; &amp;nbsp;3. [Bug 520778] [PATCH] GNode wrapper implementation
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (glibmm (bugzilla.gnome.org))
&lt;br&gt;&amp;nbsp; &amp;nbsp;4. [Bug 520778] [PATCH] GNode wrapper implementation
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (glibmm (bugzilla.gnome.org))
&lt;br&gt;&amp;nbsp; &amp;nbsp;5. [Bug 423990] glibmm et al don't recognize new GNU	m4
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (glibmm (bugzilla.gnome.org))
&lt;br&gt;&amp;nbsp; &amp;nbsp;6. [Bug 423990] glibmm et al don't recognize new GNU	m4
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (glibmm (bugzilla.gnome.org))
&lt;br&gt;&amp;nbsp; &amp;nbsp;7. [Bug 520778] [PATCH] GNode wrapper implementation
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (glibmm (bugzilla.gnome.org))
&lt;br&gt;&amp;nbsp; &amp;nbsp;8. [Bug 423990] glibmm et al don't recognize new GNU	m4
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; (glibmm (bugzilla.gnome.org))
&lt;br&gt;&lt;br&gt;&lt;br&gt;----------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;Message: 1
&lt;br&gt;Date: Tue, 22 Jul 2008 10:05:58 +0000 (UTC)
&lt;br&gt;From: &amp;quot;gtkmm (bugzilla.gnome.org)&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bugzilla-daemon@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Subject: [gtkmm bugzilla] [Bug 544135] [PATCH] Include depreated flags
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in	gtkmmconfig.in (backport from trunk)
&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-forge@...&lt;/a&gt;
&lt;br&gt;Message-ID: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;20080722100558.92CD023F52F@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Content-Type: text/plain; charset=utf-8
&lt;br&gt;&lt;br&gt;If you have any questions why you received this email, please see the text at
&lt;br&gt;the end of this email. Replies to this email are NOT read, please see the text
&lt;br&gt;at the end of this email. You can add comments to this bug at:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=544135&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/show_bug.cgi?id=544135&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; gtkmm | general | Ver: 2.10.x
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------- Comment #1 from Johannes Schmid &amp;nbsp;2008-07-22 10:05 UTC -------
&lt;br&gt;Created an attachment (id=114993)
&lt;br&gt;&amp;nbsp;--&amp;gt; (&lt;a href=&quot;http://bugzilla.gnome.org/attachment.cgi?id=114993&amp;action=view&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/attachment.cgi?id=114993&amp;action=view&lt;/a&gt;)
&lt;br&gt;Patch to backport the change
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;See &lt;a href=&quot;http://bugzilla.gnome.org/page.cgi?id=email.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/page.cgi?id=email.html&lt;/a&gt;&amp;nbsp;for more info about why you received
&lt;br&gt;this email, why you can't respond via email, how to stop receiving
&lt;br&gt;emails (or reduce the number you receive), and how to contact someone
&lt;br&gt;if you are having problems with the system.
&lt;br&gt;&lt;br&gt;You can add comments to this bug at &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=544135&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/show_bug.cgi?id=544135&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------
&lt;br&gt;&lt;br&gt;Message: 2
&lt;br&gt;Date: Tue, 22 Jul 2008 21:32:52 +0000 (UTC)
&lt;br&gt;From: &amp;quot;glibmm (bugzilla.gnome.org)&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bugzilla-daemon@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Subject: [gtkmm bugzilla] [Bug 520778] [PATCH] GNode wrapper
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; implementation
&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-forge@...&lt;/a&gt;
&lt;br&gt;Message-ID: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;20080722213252.552A523F518@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Content-Type: text/plain; charset=utf-8
&lt;br&gt;&lt;br&gt;If you have any questions why you received this email, please see the text at
&lt;br&gt;the end of this email. Replies to this email are NOT read, please see the text
&lt;br&gt;at the end of this email. You can add comments to this bug at:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=520778&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/show_bug.cgi?id=520778&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; glibmm | general | Ver: 2.15.x
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------- Comment #12 from Szilard Pfeiffer &amp;nbsp;2008-07-22 21:32 UTC -------
&lt;br&gt;Created an attachment (id=115050)
&lt;br&gt;&amp;nbsp;--&amp;gt; (&lt;a href=&quot;http://bugzilla.gnome.org/attachment.cgi?id=115050&amp;action=view&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/attachment.cgi?id=115050&amp;action=view&lt;/a&gt;)
&lt;br&gt;suggested changes to the wrapper
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;See &lt;a href=&quot;http://bugzilla.gnome.org/page.cgi?id=email.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/page.cgi?id=email.html&lt;/a&gt;&amp;nbsp;for more info about why you received
&lt;br&gt;this email, why you can't respond via email, how to stop receiving
&lt;br&gt;emails (or reduce the number you receive), and how to contact someone
&lt;br&gt;if you are having problems with the system.
&lt;br&gt;&lt;br&gt;You can add comments to this bug at &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=520778&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/show_bug.cgi?id=520778&lt;/a&gt;.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------
&lt;br&gt;&lt;br&gt;Message: 3
&lt;br&gt;Date: Tue, 22 Jul 2008 21:46:32 +0000 (UTC)
&lt;br&gt;From: &amp;quot;glibmm (bugzilla.gnome.org)&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bugzilla-daemon@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Subject: [gtkmm bugzilla] [Bug 520778] [PATCH] GNode wrapper
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; implementation
&lt;br&gt;To: &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gtkmm-forge@...&lt;/a&gt;
&lt;br&gt;Message-ID: &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;20080722214632.4AB6E23F505@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Content-Type: text/plain; charset=utf-8
&lt;br&gt;&lt;br&gt;If you have any questions why you received this email, please see the text at
&lt;br&gt;the end of this email. Replies to this email are NOT read, please see the text
&lt;br&gt;at the end of this email. You can add comments to this bug at:
&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=520778&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugzilla.gnome.org/show_bug.cgi?id=520778&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; glibmm | general | Ver: 2.15.x
&lt;br&gt;&lt;br&gt;Szilard Pfeiffer changed:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;What &amp;nbsp; &amp;nbsp;|Removed &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |Added
&lt;br&gt;----------------------------------------------------------------------------
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CC| &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;|&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=18612813&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;szilard.pfeiffer@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------- Comment #13 from Szilard Pfeiffer &amp;nbsp;2008-07-22 21:46 UTC -------
&lt;br&gt;I would like to suggest some changes in the implementation of the wrapper
&lt;br&gt;(comment 12). I can see the following benefits:
&lt;br&gt;&lt;br&gt;1; Glib::Node class would be closer to the origi