Re: need entry widget to dynamically resize to fit contents
- From: Paul Davis <paul linuxaudiosystems com>
- To: gry ll mit edu
- Cc: gtk-list gnome org
- Subject: Re: need entry widget to dynamically resize to fit contents
- Date: Thu, 06 Feb 2003 13:43:25 -0500
>[gtk-2.2.0, pango-1.2.0, pygtk-1.99.14, python-2.3a1, linux]
>I need a gtk2 entry widget to expand (and hopefully contract too)
>so as to always display just the text it contains. It is critical
>that all the text be visible, not scroll out of sight. I'm using a
>monospace font. Is there some neat way to do this?
>
>I've tried a 'changed' callback which does set_size_request, but
>calculating the right value (in a multiplatform environment) seems
>very hard. Am I missing something simple?
this is what i use. it sets the size request for any widget so that it
will be big enough to display the given text. note that its broken for
GtkCombo, which stupidly makes a size request, then takes some of the
space for the arrow/button. i imagine its not been fixed in GTK2.
in the gtkmm list archives there is an equivalent using pango.
--p
/*
Copyright (C) 1998-99 Paul Barton-Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: gtkutils.c,v 1.1.1.1 2001/11/24 00:44:26 pbd Exp $
*/
#include <gtk/gtk.h>
#include <gtkmmext/gtkutils.h>
void
gtk_widget_set_usize_to_display_given_text (GtkWidget *w,
const gchar *text,
gint hpadding,
gint vpadding)
{
guint width;
guint lbearing;
guint rbearing;
guint ascent;
guint descent;
gdk_string_extents (w->style->font,
text,
&lbearing,
&rbearing,
&width,
&ascent,
&descent);
if (vpadding >= 0) {
vpadding += ascent+descent;
}
if (hpadding >= 0) {
hpadding += width;
}
gtk_widget_set_usize (w, hpadding, vpadding);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]