[hafqa] [hafqa] [Bug 3501] hildon_window_update_topmost() should handle/ignore windows that haven't been realized

From: bugzilla-daemon at maemo.org bugzilla-daemon at maemo.org
Date: Tue Aug 5 17:17:08 EEST 2008
https://bugs.maemo.org/show_bug.cgi?id=3501


eero.tamminen at nokia.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |eero.tamminen at nokia.com
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |easyfix
            Summary|hildon_window_update_topmost|hildon_window_update_topmost
                   |() does not check for       |() should handle/ignore
                   |invisible windows           |windows that haven't been
                   |                            |realized




------- Comment #3 from eero.tamminen at nokia.com  2008-08-05 17:17 GMT+3 -------
(In reply to comment #0)
> I've replaced gtk_window_new() calls with hildon_window_new() calls, and added
> hildon_program_add_window() calls right after creating the window. However,
> when I run the application, I always get the following warning during startup:
> 
> GLIB WARNING ** Gdk - gdkdrawable-x11.c:878 drawable is not a pixmap or window
> 
> I've debugged the problem down to hildon-window.c, function
> hildon_window_update_topmost. It contains a line:
> 
> my_window = GDK_WINDOW_XID (GTK_WIDGET(self)->window);

I looked into code and this seems a clear bug.  I've seen this warning
also in logs from our apps, maybe the cause is the same.


> Problem is, when it's called for the window that wasn't yet mapped
> (hildon_window_realize() was not called), the 'window' field in
> GtkWidget is zero, this GDK_WINDOW_XID call will emit a warning.
>
> I think hildon_window_update_topmost() should ignore invisible widgets at all.

A check for "GTK_WIDGET_REALIZED(self)" or "self->window" in line 1466
libhildon::hildon-window.c should be enough:
--------------------------------------------
1456 void
1457 hildon_window_update_topmost                    (HildonWindow *self, 
1458                                                  Window window_id)
1459 {
1460     HildonWindowPrivate *priv = HILDON_WINDOW_GET_PRIVATE (self);
1461 
1462     Window my_window;
1463 
1464     g_return_if_fail (HILDON_IS_WINDOW (self));
1465     g_assert (priv);
1466 
1467     my_window = GDK_WINDOW_XID (GTK_WIDGET (self)->window);
--------------------------------------------

Thanks!


-- 
Configure bugmail: https://bugs.maemo.org/userprefs.cgi?tab=email
Replies to this email are NOT read, instead please add comments at
https://bugs.maemo.org/show_bug.cgi?id=3501
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.

More information about the hafqa mailing list