After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 612490 - Does not compile with -DGSEAL_ENABLED
Does not compile with -DGSEAL_ENABLED
Status: RESOLVED FIXED
Product: libwnck
Classification: Core
Component: general
git master
Other Linux
: Normal normal
: ---
Assigned To: libwnck maintainers
libwnck maintainers
Depends on: 612509 622371
Blocks: 585391 626688
 
 
Reported: 2010-03-10 20:37 UTC by André Klapper
Modified: 2011-01-31 11:24 UTC
See Also:
GNOME target: 3.0
GNOME version: 2.29/2.30



Description André Klapper 2010-03-10 20:37:41 UTC
This module does not build with -DGSEAL_ENABLED.
See http://live.gnome.org/GnomeGoals/UseGseal .

Note that maybe this report cannot be fixed yet, as GTK+ still misses some accessor functions (see bug 588389, bug 597610) needed for sealing.
Also see http://live.gnome.org/GTK%2B/3.0/PendingSealings for current status.

The jhbuild output posted here of course only lists the very first error when trying to compile.

pager.c: In function ‘wnck_pager_init’:
pager.c:236: error: ‘GtkObject’ has no member named ‘flags’
pager.c: In function ‘wnck_pager_realize’:
pager.c:338: error: ‘GtkObject’ has no member named ‘flags’
pager.c:341: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:342: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:343: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:344: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:355: error: ‘GtkWidget’ has no member named ‘window’
pager.c:356: error: ‘GtkWidget’ has no member named ‘window’
pager.c:358: error: ‘GtkWidget’ has no member named ‘style’
pager.c:358: error: ‘GtkWidget’ has no member named ‘style’
pager.c:358: error: ‘GtkWidget’ has no member named ‘window’
pager.c:359: error: ‘GtkWidget’ has no member named ‘style’
pager.c:359: error: ‘GtkWidget’ has no member named ‘window’
pager.c: In function ‘wnck_pager_size_request’:
pager.c:506: error: ‘GtkWidget’ has no member named ‘style’
pager.c:507: error: ‘GtkWidget’ has no member named ‘style’
pager.c: In function ‘wnck_pager_size_allocate’:
pager.c:539: error: ‘GtkWidget’ has no member named ‘style’
pager.c:540: error: ‘GtkWidget’ has no member named ‘style’
pager.c: In function ‘get_workspace_rect’:
pager.c:599: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:600: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:604: error: ‘GtkWidget’ has no member named ‘style’
pager.c:605: error: ‘GtkWidget’ has no member named ‘style’
pager.c:606: error: ‘GtkWidget’ has no member named ‘style’
pager.c:607: error: ‘GtkWidget’ has no member named ‘style’
pager.c:621: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:622: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:626: error: ‘GtkWidget’ has no member named ‘style’
pager.c:627: error: ‘GtkWidget’ has no member named ‘style’
pager.c:681: error: ‘GtkWidget’ has no member named ‘style’
pager.c:682: error: ‘GtkWidget’ has no member named ‘style’
pager.c: In function ‘draw_window’:
pager.c:800: error: ‘GtkWidget’ has no member named ‘style’
pager.c:802: error: ‘GtkWidget’ has no member named ‘style’
pager.c:857: error: ‘GtkWidget’ has no member named ‘style’
pager.c:859: error: ‘GtkWidget’ has no member named ‘style’
pager.c: In function ‘workspace_at_point’:
pager.c:935: error: ‘GtkWidget’ has no member named ‘style’
pager.c:936: error: ‘GtkWidget’ has no member named ‘style’
pager.c:971: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:979: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c: In function ‘wnck_pager_draw_workspace’:
pager.c:1048: error: ‘GtkWidget’ has no member named ‘window’
pager.c:1049: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1061: error: ‘GtkWidget’ has no member named ‘window’
pager.c:1065: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1134: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1137: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1149: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1163: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1187: error: ‘GtkWidget’ has no member named ‘window’
pager.c:1213: error: ‘GtkWidget’ has no member named ‘window’
pager.c:1215: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1216: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1228: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1228: error: ‘GtkWidget’ has no member named ‘window’
pager.c:1233: error: ‘GtkWidget’ has no member named ‘window’
pager.c: In function ‘wnck_pager_expose_event’:
pager.c:1268: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1269: error: ‘GtkWidget’ has no member named ‘window’
pager.c:1270: error: ‘GtkWidget’ has no member named ‘state’
pager.c:1275: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:1276: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:1280: error: ‘GtkWidget’ has no member named ‘style’
pager.c:1281: error: ‘GtkWidget’ has no member named ‘window’
pager.c:1282: error: ‘GtkWidget’ has no member named ‘state’
pager.c:1289: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c:1290: error: ‘GtkWidget’ has no member named ‘allocation’
pager.c: In function ‘wnck_pager_drag_data_received’:
pager.c:1522: error: ‘GtkSelectionData’ has no member named ‘length’
pager.c:1523: error: ‘GtkSelectionData’ has no member named ‘format’
pager.c:1537: error: ‘GtkSelectionData’ has no member named ‘data’
pager.c: In function ‘wnck_pager_drag_data_get’:
pager.c:1570: error: ‘GtkSelectionData’ has no member named ‘target’
pager.c: In function ‘wnck_update_drag_icon’:
pager.c:1649: error: ‘GtkWidget’ has no member named ‘window’
pager.c: In function ‘wnck_pager_motion’:
pager.c:1750: error: ‘GtkWidget’ has no member named ‘window’
make[2]: *** [pager.lo] Error 1
make[2]: Leaving directory `/home/andre/svn-gnome/libwnck/libwnck'
make[1]: *** [all-recursive] Error 1
Comment 1 André Klapper 2010-04-16 10:46:10 UTC
Committed a few fixes, only problem left now are two cases where we'd need gtk_accessible_set_widget() which does not exist.
Comment 2 Vincent Untz 2010-04-16 11:51:22 UTC
(In reply to comment #1)
> Committed a few fixes, only problem left now are two cases where we'd need
> gtk_accessible_set_widget() which does not exist.

The fix you committed to libwnck/tasklist.c is wrong, see the comment above your change. Can you revert it?
Comment 3 André Klapper 2010-04-16 12:11:18 UTC
Bah, reading. :-) Done, thanks for noticing.
Comment 4 André Klapper 2010-05-28 15:22:03 UTC
Work left to do:

make[2]: Entering directory `/libwnck/libwnck'
pager.c: In function ‘wnck_pager_drag_motion’:
pager.c:1505: error: ‘GdkDragContext’ has no member named ‘suggested_action’
tasklist.c: In function ‘wnck_task_drag_motion’:
tasklist.c:3572: error: ‘GdkDragContext’ has no member named ‘suggested_action’
tasklist.c: In function ‘fake_expose_widget’:
tasklist.c:3979: error: ‘GtkWidget’ has no member named ‘window’
xutils.c: In function ‘get_cmap’:
xutils.c:1620: error: ‘GdkVisual’ has no member named ‘depth’
pager-accessible.c: In function ‘wnck_pager_accessible_new’:
pager-accessible.c:296: error: ‘GtkAccessible’ has no member named ‘widget’
pager-accessible.c: In function ‘wnck_pager_accessible_get_n_children’:
pager-accessible.c:367: error: ‘GtkAccessible’ has no member named ‘widget’
Comment 5 Vincent Untz 2010-06-01 13:57:41 UTC
Only two issues left. One might be because of a missing gtk_accessible_set_widget() (not sure it's the right thing to do) and the other one is what I made you revert -- no idea how to fix this one.
Comment 6 Javier Jardón (IRC: jjardon) 2010-06-12 00:52:42 UTC
We need a internal _gtk_accessible_set_widget() function in GTK+3, so maybe makes sense make it public.
Could you file a bug against GTK+ about this?
Comment 7 Federico Mena Quintero 2010-06-22 17:18:36 UTC
The bug for gtk_accessible_set_widget() is bug #622371.
Comment 8 Federico Mena Quintero 2010-06-22 17:44:34 UTC
I pushed the fix for gtk_accessible_set_widget(), which is now in GTK+ 2.22.0.

The FIXME to which Vincent refers in comment #5 is in tasklist.c:fake_expose_widget().  This function is used to draw the tasklist button's label and image to a pixmap, to later fade that pixmap in and out.

This seems like a lot of voodoo just to draw the "attention" animation.  We could very well do this:

* Add knowledge to the tasklist's buttons to draw themselves in any particular state.

* Use gtk_widget_get_snapshot() to screenshot the start/end states.

* Fade between the resulting pixmaps as usual.

Or we could just have the button re-expose itself at each frame of the animation and remove the need for screenshotting.
Comment 9 Vincent Untz 2010-06-22 18:00:22 UTC
The only issue left is:

tasklist.c: In function ‘fake_expose_widget’:
tasklist.c:3984:9: error: ‘GtkWidget’ has no member named ‘window’

with this code:

  /* FIXME GSeal: we should use this:
  gtk_widget_set_window (widget, pixmap);
     but pixmap is not a GdkWindow...
   */
  widget->window = pixmap;

No idea how to fix it.
Comment 10 Vincent Untz 2010-06-22 18:02:21 UTC
(of course, I put my comment without reading federico's comment since we had a conflict ;-))
Comment 11 Benjamin Otte (Company) 2010-08-19 03:09:46 UTC
I've looked at it and it seems to be a clear case of doing it wrong.
I think a proper solution does not involve trying to take screenshots to pixmaps and trying to fiddle with them somehow.
Comment 12 Benjamin Otte (Company) 2010-08-20 00:53:22 UTC
Ok, I decided I'm not going to fix it. It's completely broken design-wise. From my POV this code should be compiled with -DGSEAL_ENABLE and someone needs to come up with a rework for GTK3.

If we get gtk_widget_draw(), this will be reasonably easy, but until then, you get to keep the pieces of this breakage.

(Note that if you want to workaround this today, you could either use gtk_widget_get_snapshot() or try creating an offscreen window instad of a pixmap. I'd still consider the solutions broken.)

A proper solution would be a function like gtk_button_set_urgency_hint(). That would be a very useful feature, because not just libwnck uses this glow mechanism, but I've spottet it at least in totem, too.
Comment 13 Germán Poo-Caamaño 2011-01-31 11:24:23 UTC
Fixed in master.