Merge lp:~cimi/overlay-scrollbar/peek-gtk-widget-class into lp:overlay-scrollbar

Proposed by Andrea Cimitan
Status: Merged
Merged at revision: 158
Proposed branch: lp:~cimi/overlay-scrollbar/peek-gtk-widget-class
Merge into: lp:overlay-scrollbar
Diff against target: 94 lines (+23/-14)
1 file modified
os/os-scrollbar.c (+23/-14)
To merge this branch: bzr merge lp:~cimi/overlay-scrollbar/peek-gtk-widget-class
Reviewer Review Type Date Requested Status
David Barth (community) Needs Fixing
Javier Jardón Approve
Review via email: mp+53628@code.launchpad.net

Description of the change

By calling directly gtk widget's class functions I could skip the creation of the useless (for us) event_window.
Will probably need to hook up for more vfunc events and add empty functions (button_release is the only remaining function in gtkrange that is asking for the event window, though afaics it can't be called because there's no area where the mouse could click).
I am overriding size_allocate because the size_allocate function in gtk_range is playing with the event window without checking if it's NULL or not, so we will have some errors.

To post a comment you must log in.
159. By Andrea Cimitan

use directly gtkwidget's class

Revision history for this message
Javier Jardón (jjardon) wrote :

Maybe the proper way for this is to modify gtkrange and/or gtkscrollbar, but this works for us for now.

review: Approve
Revision history for this message
David Barth (dbarth) wrote :

What will happen if g_type_class_peek_parent returns NULL?

review: Needs Fixing
Revision history for this message
Javier Jardón (jjardon) wrote :

@David:

From the documentation:

"Since derived classes hold a reference count on their parent classes as long as they are instantiated, the returned class will always exist"

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'os/os-scrollbar.c'
--- os/os-scrollbar.c 2011-03-15 15:43:22 +0000
+++ os/os-scrollbar.c 2011-03-16 15:07:27 +0000
@@ -76,6 +76,7 @@
76static void os_scrollbar_parent_set (GtkWidget *widget, GtkWidget *old_parent);76static void os_scrollbar_parent_set (GtkWidget *widget, GtkWidget *old_parent);
77static void os_scrollbar_realize (GtkWidget *widget);77static void os_scrollbar_realize (GtkWidget *widget);
78static void os_scrollbar_show (GtkWidget *widget);78static void os_scrollbar_show (GtkWidget *widget);
79static void os_scrollbar_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
79static void os_scrollbar_unmap (GtkWidget *widget);80static void os_scrollbar_unmap (GtkWidget *widget);
80static void os_scrollbar_unrealize (GtkWidget *widget);81static void os_scrollbar_unrealize (GtkWidget *widget);
81static void os_scrollbar_dispose (GObject *object);82static void os_scrollbar_dispose (GObject *object);
@@ -1262,14 +1263,15 @@
1262 gobject_class = G_OBJECT_CLASS (class);1263 gobject_class = G_OBJECT_CLASS (class);
1263 widget_class = GTK_WIDGET_CLASS (class);1264 widget_class = GTK_WIDGET_CLASS (class);
12641265
1265 widget_class->expose_event = os_scrollbar_expose_event;1266 widget_class->expose_event = os_scrollbar_expose_event;
1266 widget_class->hide = os_scrollbar_hide;1267 widget_class->hide = os_scrollbar_hide;
1267 widget_class->map = os_scrollbar_map;1268 widget_class->map = os_scrollbar_map;
1268 widget_class->realize = os_scrollbar_realize;1269 widget_class->realize = os_scrollbar_realize;
1269 widget_class->parent_set = os_scrollbar_parent_set;1270 widget_class->parent_set = os_scrollbar_parent_set;
1270 widget_class->show = os_scrollbar_show;1271 widget_class->show = os_scrollbar_show;
1271 widget_class->unmap = os_scrollbar_unmap;1272 widget_class->size_allocate = os_scrollbar_size_allocate;
1272 widget_class->unrealize = os_scrollbar_unrealize;1273 widget_class->unmap = os_scrollbar_unmap;
1274 widget_class->unrealize = os_scrollbar_unrealize;
12731275
1274 gobject_class->dispose = os_scrollbar_dispose;1276 gobject_class->dispose = os_scrollbar_dispose;
1275 gobject_class->finalize = os_scrollbar_finalize;1277 gobject_class->finalize = os_scrollbar_finalize;
@@ -1340,7 +1342,7 @@
1340static void1342static void
1341os_scrollbar_hide (GtkWidget *widget)1343os_scrollbar_hide (GtkWidget *widget)
1342{1344{
1343 GTK_WIDGET_CLASS (os_scrollbar_parent_class)->hide (widget);1345 GTK_WIDGET_CLASS (g_type_class_peek (GTK_TYPE_WIDGET))->hide (widget);
1344}1346}
13451347
1346static void1348static void
@@ -1352,7 +1354,7 @@
1352 scrollbar = OS_SCROLLBAR (widget);1354 scrollbar = OS_SCROLLBAR (widget);
1353 priv = scrollbar->priv;1355 priv = scrollbar->priv;
13541356
1355 GTK_WIDGET_CLASS (os_scrollbar_parent_class)->map (widget);1357 GTK_WIDGET_CLASS (g_type_class_peek (GTK_TYPE_WIDGET))->map (widget);
13561358
1357 priv->proximity = TRUE;1359 priv->proximity = TRUE;
13581360
@@ -1427,13 +1429,20 @@
1427static void1429static void
1428os_scrollbar_realize (GtkWidget *widget)1430os_scrollbar_realize (GtkWidget *widget)
1429{1431{
1430 GTK_WIDGET_CLASS (os_scrollbar_parent_class)->realize (widget);1432 GTK_WIDGET_CLASS (g_type_class_peek (GTK_TYPE_WIDGET))->realize (widget);
1431}1433}
14321434
1433static void1435static void
1434os_scrollbar_show (GtkWidget *widget)1436os_scrollbar_show (GtkWidget *widget)
1435{1437{
1436 GTK_WIDGET_CLASS (os_scrollbar_parent_class)->show (widget);1438 GTK_WIDGET_CLASS (g_type_class_peek (GTK_TYPE_WIDGET))->show (widget);
1439}
1440
1441static void
1442os_scrollbar_size_allocate (GtkWidget *widget,
1443 GtkAllocation *allocation)
1444{
1445 widget->allocation = *allocation;
1437}1446}
14381447
1439static void1448static void
@@ -1445,7 +1454,7 @@
1445 scrollbar = OS_SCROLLBAR (widget);1454 scrollbar = OS_SCROLLBAR (widget);
1446 priv = scrollbar->priv;1455 priv = scrollbar->priv;
14471456
1448 GTK_WIDGET_CLASS (os_scrollbar_parent_class)->unmap (widget);1457 GTK_WIDGET_CLASS (g_type_class_peek (GTK_TYPE_WIDGET))->unmap (widget);
14491458
1450 priv->proximity = FALSE;1459 priv->proximity = FALSE;
14511460
@@ -1461,7 +1470,7 @@
1461static void1470static void
1462os_scrollbar_unrealize (GtkWidget *widget)1471os_scrollbar_unrealize (GtkWidget *widget)
1463{1472{
1464 GTK_WIDGET_CLASS (os_scrollbar_parent_class)->unrealize (widget);1473 GTK_WIDGET_CLASS (g_type_class_peek (GTK_TYPE_WIDGET))->unrealize (widget);
1465}1474}
14661475
1467/* Public functions. */1476/* Public functions. */

Subscribers

People subscribed via source and target branches