@@ -455,13 +455,17 @@ toolkitgroupview_browse_clicked(GtkWidget *button,
455455
456456 gtk_stack_set_visible_child_name (GTK_STACK (kitgview -> stack ), name );
457457 gtk_stack_remove (GTK_STACK (kitgview -> stack ), last_page );
458- kitgview -> pinned = FALSE ;
458+ kitgview -> pin = NULL ;
459459 }
460460 else {
461461 if (node -> kit ||
462462 (node -> toolitem && node -> toolitem -> is_pullright )) {
463+ // go right ... make sure we clear the pin widget first
464+ if (kitgview -> pin )
465+ gtk_check_button_set_active (GTK_CHECK_BUTTON (kitgview -> pin ),
466+ FALSE);
467+ kitgview -> pin = NULL ;
463468 toolkitgroupview_build_browse_page (kitgview , node );
464- kitgview -> pinned = FALSE;
465469 }
466470
467471 // activate after moving to the new page so listeners can get the new
@@ -470,13 +474,6 @@ toolkitgroupview_browse_clicked(GtkWidget *button,
470474 }
471475}
472476
473- static void
474- toolkitgroupview_pin_togggled (GtkCheckButton * check_button ,
475- Toolkitgroupview * kitgview )
476- {
477- kitgview -> pinned = gtk_check_button_get_active (check_button );
478- }
479-
480477static void
481478toolkitgroupview_setup_browse_item (GtkListItemFactory * factory ,
482479 GtkListItem * item , Toolkitgroupview * kitgview )
@@ -510,8 +507,6 @@ toolkitgroupview_setup_browse_item(GtkListItemFactory *factory,
510507 gtk_box_append (GTK_BOX (box ), right );
511508
512509 GtkWidget * pin = gtk_check_button_new ();
513- g_signal_connect (pin , "toggled" ,
514- G_CALLBACK (toolkitgroupview_pin_togggled ), kitgview );
515510 set_tooltip (pin , "Pin menu in place" );
516511 gtk_box_append (GTK_BOX (enclosing ), pin );
517512
@@ -546,6 +541,9 @@ toolkitgroupview_bind_browse_item(GtkListItemFactory *factory,
546541 gtk_widget_set_visible (pin , TRUE);
547542 gtk_label_set_xalign (GTK_LABEL (label ), 0.5 );
548543 g_object_set_qdata (G_OBJECT (button ), node_quark , parent );
544+
545+ // remember the widget so we can test and set the state
546+ kitgview -> pin = pin ;
549547 }
550548 else {
551549 gtk_label_set_xalign (GTK_LABEL (label ), 0.0 );
@@ -591,6 +589,9 @@ toolkitgroupview_build_browse_page(Toolkitgroupview *kitgview, Node *this)
591589 const char * name = node_get_name (this );
592590
593591 GtkWidget * scrolled_window = gtk_scrolled_window_new ();
592+ // no scrollbars ... they obstruct useful widgets
593+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window ),
594+ GTK_POLICY_EXTERNAL , GTK_POLICY_EXTERNAL );
594595 gtk_stack_add_named (GTK_STACK (kitgview -> stack ), scrolled_window , name );
595596 kitgview -> page_names = g_slist_append (kitgview -> page_names , g_strdup (name ));
596597
@@ -1030,7 +1031,8 @@ toolkitgroupview_new(void)
10301031void
10311032toolkitgroupview_home (Toolkitgroupview * kitgview )
10321033{
1033- if (!kitgview -> pinned ) {
1034+ if (!kitgview -> pin ||
1035+ !gtk_check_button_get_active (GTK_CHECK_BUTTON (kitgview -> pin ))) {
10341036 GtkWidget * stack = kitgview -> stack ;
10351037 GtkWidget * root_page = gtk_widget_get_first_child (stack );
10361038
0 commit comments