[Xfce4-commits] r17207 - libxfcegui4/trunk/libxfcegui4

Brian J. Tarricone bjt23 at cornell.edu
Wed Aug 31 22:15:02 CEST 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 8/31/2005 1:37 AM, Benedikt Meurer wrote:
> Brian J. Tarricone wrote:
> 
>>>>This looks pretty strange: add() and remove() will act on the internal
>>>>HBox, while all other GtkContainer methods will work on the frame
>>>>itself. Either XfceFramebox should be deprecated completely or we need
>>>>to override all of GtkContainer methods and forward the calls to the
>>>>internal HBox.
>>
>>I wouldn't mind deprecating it in favor of a non-class helper/utility
>>function to create the framebox as we have it now.
>>
>>Otherwise we can just leave it as-is.  The common use case is just to
>>add() something to it and be done with it.  I got rid of the remove()
>>implementation because it was causing weird problems that I don't have
>>the patience to try to debug.
> 
> The implementation as it stands now is just broken. It claims to be a
> GtkContainer, but it isn't. I'd vote to revert that change to the 4.2
> implementation, which wasn't good, but atleast consistent. There's no
> need for XFC to wrap that widget at all, as Gtk::Frame and
> Gtk::Alignment will do just fine there, and thereby saving a few
> unneccesary PLT entries for XFC. ;-)

That's fine with me; I don't feel especially strongly about it.

As for your suggestion of a replacement in another thread:

> In this case, a simple xfce_create_framebox(const gchar *title,
> GtkWidget **box) would be the way to go.

I'm ok with that.  I assume you mean that it returns the actual GtkFrame
widget, and you pass a pointer to a GtkWidget* as box, which gets filled
in with the frame's 'new' container widget?  So something like this:

GtkWidget *
xfce_create_framebox(const gchar *title,
                     GtkWidget **frame_bin)
{
    GtkWidget *framebox;

    g_return_val_if_fail(frame_bin, NULL);

    framebox = gtk_frame_new(NULL);
    gtk_frame_set_shadow_type(GTK_FRAME(framebox), GTK_SHADOW_NONE);
    gtk_frame_set_label_align(GTK_FRAME(framebox), 0.0, 1.0);
    gtk_widget_show(framebox);

    if(title) {
        gchar *tmp = g_strdup_printf("<b>%s</b>", title);
        GtkWidget *label = gtk_label_new(tmp);
        gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
        gtk_widget_show(label);
        gtk_frame_set_label_widget(GTK_FRAME(framebox), label);
        g_free(tmp);
    }

    *frame_bin = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
    gtk_alignment_set_padding(GTK_ALIGNMENT(*frame_bin), 5, 5, 21, 5);
    gtk_widget_show(*frame_bin);
    gtk_container_add(GTK_CONTAINER(framebox), *frame_bin);

    return framebox;
}

Then the caller should add the return value to the parent widget, and
add children to frame_bin.

	-brian

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)

iD8DBQFDFg/G6XyW6VEeAnsRAucEAKDVPGxnKtNsHk0TySqU+mqD60lGrQCgvtzD
RSvIhgh08Hoy67QyTjjZkh8=
=Uv0p
-----END PGP SIGNATURE-----



More information about the Xfce4-dev mailing list