diff options
Diffstat (limited to 'gtk')
| -rw-r--r-- | gtk/PlatGTK.cxx | 31 | 
1 files changed, 26 insertions, 5 deletions
| diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx index 588d067a2..82d0a9b99 100644 --- a/gtk/PlatGTK.cxx +++ b/gtk/PlatGTK.cxx @@ -1964,6 +1964,9 @@ class ListBoxX : public ListBox {  	int current;  #endif  	void *pixhash; +#if GTK_MAJOR_VERSION >= 2 +        GtkCellRenderer* pixbuf_renderer; +#endif  	int lineHeight;  	XPMSet xset;  	bool unicodeMode; @@ -1979,6 +1982,9 @@ public:  #if GTK_MAJOR_VERSION < 2  			current = 0;  #endif +#if GTK_MAJOR_VERSION >= 2 +			pixbuf_renderer = 0; +#endif  	}  	virtual ~ListBoxX() {  		if (pixhash) { @@ -2115,12 +2121,13 @@ void ListBoxX::Create(Window &, int, Point, int, bool) {  	gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);  	gtk_tree_view_column_set_title(column, "Autocomplete"); -	GtkCellRenderer *renderer = gtk_cell_renderer_pixbuf_new(); -	gtk_tree_view_column_pack_start(column, renderer, FALSE); -	gtk_tree_view_column_add_attribute(column, renderer, +	pixbuf_renderer = gtk_cell_renderer_pixbuf_new(); +	gtk_cell_renderer_set_fixed_size(pixbuf_renderer, 0, -1); +	gtk_tree_view_column_pack_start(column, pixbuf_renderer, FALSE); +	gtk_tree_view_column_add_attribute(column, pixbuf_renderer,  										"pixbuf", PIXBUF_COLUMN); - -	renderer = gtk_cell_renderer_text_new(); +	 +	GtkCellRenderer* renderer = gtk_cell_renderer_text_new();  	gtk_cell_renderer_text_set_fixed_height_from_font(GTK_CELL_RENDERER_TEXT(renderer), 1);  	gtk_tree_view_column_pack_start(column, renderer, TRUE);  	gtk_tree_view_column_add_attribute(column, renderer, @@ -2222,6 +2229,12 @@ PRectangle ListBoxX::GetDesiredRect() {  }  int ListBoxX::CaretFromEdge() { +#if GTK_MAJOR_VERSION >= 2 +	gint renderer_width, renderer_height; +	gtk_cell_renderer_get_fixed_size(pixbuf_renderer, &renderer_width, +						&renderer_height); +	return 4 + renderer_width; +#endif  	return 4 + xset.GetWidth();  } @@ -2308,6 +2321,14 @@ void ListBoxX::Append(char *s, int type) {  			gtk_list_store_set(GTK_LIST_STORE(store), &iter,  								PIXBUF_COLUMN, list_image->pixbuf,  								TEXT_COLUMN, s, -1); + +			gint pixbuf_width = gdk_pixbuf_get_width(list_image->pixbuf); +			gint renderer_height, renderer_width; +			gtk_cell_renderer_get_fixed_size(pixbuf_renderer,  +								&renderer_width, &renderer_height); +			if (pixbuf_width > renderer_width) +				gtk_cell_renderer_set_fixed_size(pixbuf_renderer, +								pixbuf_width, -1);  		} else {  			gtk_list_store_set(GTK_LIST_STORE(store), &iter,  								TEXT_COLUMN, s, -1); | 
