mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 06:00:22 +00:00
combobox: Drop support for grids
This is pretty much unued, and we want to get rid of it. This removes support for wrap-width, row-span-column and column-span-column properties.
This commit is contained in:
parent
b0e67f1eed
commit
a5ba0d46c2
@ -116,11 +116,6 @@ typedef struct
|
||||
|
||||
GtkCellArea *area;
|
||||
|
||||
gint col_column;
|
||||
gint row_column;
|
||||
|
||||
gint wrap_width;
|
||||
|
||||
gint active; /* Only temporary */
|
||||
GtkTreeRowReference *active_row;
|
||||
|
||||
@ -188,9 +183,6 @@ enum {
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_MODEL,
|
||||
PROP_WRAP_WIDTH,
|
||||
PROP_ROW_SPAN_COLUMN,
|
||||
PROP_COLUMN_SPAN_COLUMN,
|
||||
PROP_ACTIVE,
|
||||
PROP_HAS_FRAME,
|
||||
PROP_POPUP_SHOWN,
|
||||
@ -379,20 +371,17 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
|
||||
{
|
||||
gint menu_width;
|
||||
|
||||
if (priv->wrap_width == 0)
|
||||
{
|
||||
gtk_widget_set_size_request (priv->popup_widget, -1, -1);
|
||||
gtk_widget_set_size_request (priv->popup_widget, -1, -1);
|
||||
|
||||
if (priv->popup_fixed_width)
|
||||
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
|
||||
&menu_width, NULL, NULL, NULL);
|
||||
else
|
||||
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
|
||||
NULL, &menu_width, NULL, NULL);
|
||||
if (priv->popup_fixed_width)
|
||||
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
|
||||
&menu_width, NULL, NULL, NULL);
|
||||
else
|
||||
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
|
||||
NULL, &menu_width, NULL, NULL);
|
||||
|
||||
gtk_widget_set_size_request (priv->popup_widget,
|
||||
MAX (width, menu_width), -1);
|
||||
}
|
||||
gtk_widget_set_size_request (priv->popup_widget,
|
||||
MAX (width, menu_width), -1);
|
||||
|
||||
/* reposition the menu after giving it a new width */
|
||||
gtk_menu_reposition (GTK_MENU (priv->popup_widget));
|
||||
@ -649,61 +638,6 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass)
|
||||
GTK_TYPE_TREE_MODEL,
|
||||
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
||||
|
||||
/**
|
||||
* GtkComboBox:wrap-width:
|
||||
*
|
||||
* If wrap-width is set to a positive value, items in the popup will be laid
|
||||
* out along multiple columns, starting a new row on reaching the wrap width.
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_WRAP_WIDTH,
|
||||
g_param_spec_int ("wrap-width",
|
||||
P_("Wrap width"),
|
||||
P_("Wrap width for laying out the items in a grid"),
|
||||
0,
|
||||
G_MAXINT,
|
||||
0,
|
||||
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
||||
|
||||
|
||||
/**
|
||||
* GtkComboBox:row-span-column:
|
||||
*
|
||||
* If this is set to a non-negative value, it must be the index of a column
|
||||
* of type %G_TYPE_INT in the model. The value in that column for each item
|
||||
* will determine how many rows that item will span in the popup. Therefore,
|
||||
* values in this column must be greater than zero.
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_ROW_SPAN_COLUMN,
|
||||
g_param_spec_int ("row-span-column",
|
||||
P_("Row span column"),
|
||||
P_("TreeModel column containing the row span values"),
|
||||
-1,
|
||||
G_MAXINT,
|
||||
-1,
|
||||
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
||||
|
||||
|
||||
/**
|
||||
* GtkComboBox:column-span-column:
|
||||
*
|
||||
* If this is set to a non-negative value, it must be the index of a column
|
||||
* of type %G_TYPE_INT in the model. The value in that column for each item
|
||||
* will determine how many columns that item will span in the popup.
|
||||
* Therefore, values in this column must be greater than zero, and the sum of
|
||||
* an item’s column position + span should not exceed #GtkComboBox:wrap-width.
|
||||
*/
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_COLUMN_SPAN_COLUMN,
|
||||
g_param_spec_int ("column-span-column",
|
||||
P_("Column span column"),
|
||||
P_("TreeModel column containing the column span values"),
|
||||
-1,
|
||||
G_MAXINT,
|
||||
-1,
|
||||
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
|
||||
|
||||
|
||||
/**
|
||||
* GtkComboBox:active:
|
||||
@ -902,12 +836,8 @@ gtk_combo_box_init (GtkComboBox *combo_box)
|
||||
GtkTreeMenu *menu;
|
||||
GtkEventController *controller;
|
||||
|
||||
priv->wrap_width = 0;
|
||||
|
||||
priv->active = -1;
|
||||
priv->active_row = NULL;
|
||||
priv->col_column = -1;
|
||||
priv->row_column = -1;
|
||||
|
||||
priv->popup_shown = FALSE;
|
||||
priv->has_frame = TRUE;
|
||||
@ -931,9 +861,6 @@ gtk_combo_box_init (GtkComboBox *combo_box)
|
||||
gtk_style_context_add_class (context, "combo");
|
||||
|
||||
menu = GTK_TREE_MENU (priv->popup_widget);
|
||||
_gtk_tree_menu_set_wrap_width (menu, priv->wrap_width);
|
||||
_gtk_tree_menu_set_row_span_column (menu, priv->row_column);
|
||||
_gtk_tree_menu_set_column_span_column (menu, priv->col_column);
|
||||
_gtk_tree_menu_set_row_separator_func (menu,
|
||||
(GtkTreeViewRowSeparatorFunc)gtk_combo_box_row_separator_func,
|
||||
combo_box, NULL);
|
||||
@ -964,18 +891,6 @@ gtk_combo_box_set_property (GObject *object,
|
||||
gtk_combo_box_set_model (combo_box, g_value_get_object (value));
|
||||
break;
|
||||
|
||||
case PROP_WRAP_WIDTH:
|
||||
gtk_combo_box_set_wrap_width (combo_box, g_value_get_int (value));
|
||||
break;
|
||||
|
||||
case PROP_ROW_SPAN_COLUMN:
|
||||
gtk_combo_box_set_row_span_column (combo_box, g_value_get_int (value));
|
||||
break;
|
||||
|
||||
case PROP_COLUMN_SPAN_COLUMN:
|
||||
gtk_combo_box_set_column_span_column (combo_box, g_value_get_int (value));
|
||||
break;
|
||||
|
||||
case PROP_ACTIVE:
|
||||
gtk_combo_box_set_active (combo_box, g_value_get_int (value));
|
||||
break;
|
||||
@ -1053,18 +968,6 @@ gtk_combo_box_get_property (GObject *object,
|
||||
g_value_set_object (value, priv->model);
|
||||
break;
|
||||
|
||||
case PROP_WRAP_WIDTH:
|
||||
g_value_set_int (value, priv->wrap_width);
|
||||
break;
|
||||
|
||||
case PROP_ROW_SPAN_COLUMN:
|
||||
g_value_set_int (value, priv->row_column);
|
||||
break;
|
||||
|
||||
case PROP_COLUMN_SPAN_COLUMN:
|
||||
g_value_set_int (value, priv->col_column);
|
||||
break;
|
||||
|
||||
case PROP_ACTIVE:
|
||||
g_value_set_int (value, gtk_combo_box_get_active (combo_box));
|
||||
break;
|
||||
@ -1357,6 +1260,7 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box)
|
||||
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
|
||||
gint active_item;
|
||||
GtkWidget *active;
|
||||
int width, min_width, nat_width;
|
||||
|
||||
update_menu_sensitivity (combo_box, priv->popup_widget);
|
||||
|
||||
@ -1373,22 +1277,17 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box)
|
||||
/* FIXME handle nested menus better */
|
||||
gtk_menu_set_active (GTK_MENU (priv->popup_widget), active_item);
|
||||
|
||||
if (priv->wrap_width == 0)
|
||||
{
|
||||
int width, min_width, nat_width;
|
||||
width = gtk_widget_get_width (GTK_WIDGET (combo_box));
|
||||
gtk_widget_set_size_request (priv->popup_widget, -1, -1);
|
||||
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
|
||||
&min_width, &nat_width, NULL, NULL);
|
||||
|
||||
width = gtk_widget_get_width (GTK_WIDGET (combo_box));
|
||||
gtk_widget_set_size_request (priv->popup_widget, -1, -1);
|
||||
gtk_widget_measure (priv->popup_widget, GTK_ORIENTATION_HORIZONTAL, -1,
|
||||
&min_width, &nat_width, NULL, NULL);
|
||||
if (priv->popup_fixed_width)
|
||||
width = MAX (width, min_width);
|
||||
else
|
||||
width = MAX (width, nat_width);
|
||||
|
||||
if (priv->popup_fixed_width)
|
||||
width = MAX (width, min_width);
|
||||
else
|
||||
width = MAX (width, nat_width);
|
||||
|
||||
gtk_widget_set_size_request (priv->popup_widget, width, -1);
|
||||
}
|
||||
gtk_widget_set_size_request (priv->popup_widget, width, -1);
|
||||
|
||||
g_signal_handlers_disconnect_by_func (priv->popup_widget,
|
||||
gtk_menu_update_scroll_offset,
|
||||
@ -1396,7 +1295,7 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box)
|
||||
|
||||
g_object_set (priv->popup_widget, "menu-type-hint", GDK_SURFACE_TYPE_HINT_COMBO, NULL);
|
||||
|
||||
if (priv->wrap_width > 0 || priv->cell_view == NULL)
|
||||
if (priv->cell_view == NULL)
|
||||
{
|
||||
g_object_set (priv->popup_widget,
|
||||
"anchor-hints", (GDK_ANCHOR_FLIP_Y |
|
||||
@ -2042,144 +1941,6 @@ gtk_combo_box_new_with_model_and_entry (GtkTreeModel *model)
|
||||
NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_combo_box_get_wrap_width:
|
||||
* @combo_box: A #GtkComboBox
|
||||
*
|
||||
* Returns the wrap width which is used to determine the number of columns
|
||||
* for the popup menu. If the wrap width is larger than 1, the combo box
|
||||
* is in table mode.
|
||||
*
|
||||
* Returns: the wrap width.
|
||||
*/
|
||||
gint
|
||||
gtk_combo_box_get_wrap_width (GtkComboBox *combo_box)
|
||||
{
|
||||
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
|
||||
g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), -1);
|
||||
|
||||
return priv->wrap_width;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_combo_box_set_wrap_width:
|
||||
* @combo_box: A #GtkComboBox
|
||||
* @width: Preferred number of columns
|
||||
*
|
||||
* Sets the wrap width of @combo_box to be @width. The wrap width is basically
|
||||
* the preferred number of columns when you want the popup to be layed out
|
||||
* in a table.
|
||||
*/
|
||||
void
|
||||
gtk_combo_box_set_wrap_width (GtkComboBox *combo_box,
|
||||
gint width)
|
||||
{
|
||||
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
|
||||
|
||||
g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
|
||||
g_return_if_fail (width >= 0);
|
||||
|
||||
if (width != priv->wrap_width)
|
||||
{
|
||||
priv->wrap_width = width;
|
||||
_gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (priv->popup_widget), priv->wrap_width);
|
||||
g_object_notify (G_OBJECT (combo_box), "wrap-width");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_combo_box_get_row_span_column:
|
||||
* @combo_box: A #GtkComboBox
|
||||
*
|
||||
* Returns the column with row span information for @combo_box.
|
||||
*
|
||||
* Returns: the row span column.
|
||||
*/
|
||||
gint
|
||||
gtk_combo_box_get_row_span_column (GtkComboBox *combo_box)
|
||||
{
|
||||
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
|
||||
g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), -1);
|
||||
|
||||
return priv->row_column;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_combo_box_set_row_span_column:
|
||||
* @combo_box: A #GtkComboBox.
|
||||
* @row_span: A column in the model passed during construction.
|
||||
*
|
||||
* Sets the column with row span information for @combo_box to be @row_span.
|
||||
* The row span column contains integers which indicate how many rows
|
||||
* an item should span.
|
||||
*/
|
||||
void
|
||||
gtk_combo_box_set_row_span_column (GtkComboBox *combo_box,
|
||||
gint row_span)
|
||||
{
|
||||
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
|
||||
gint col;
|
||||
|
||||
g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
|
||||
|
||||
col = gtk_tree_model_get_n_columns (priv->model);
|
||||
g_return_if_fail (row_span >= -1 && row_span < col);
|
||||
|
||||
if (row_span != priv->row_column)
|
||||
{
|
||||
priv->row_column = row_span;
|
||||
_gtk_tree_menu_set_row_span_column (GTK_TREE_MENU (priv->popup_widget), priv->row_column);
|
||||
g_object_notify (G_OBJECT (combo_box), "row-span-column");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_combo_box_get_column_span_column:
|
||||
* @combo_box: A #GtkComboBox
|
||||
*
|
||||
* Returns the column with column span information for @combo_box.
|
||||
*
|
||||
* Returns: the column span column.
|
||||
*/
|
||||
gint
|
||||
gtk_combo_box_get_column_span_column (GtkComboBox *combo_box)
|
||||
{
|
||||
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
|
||||
|
||||
g_return_val_if_fail (GTK_IS_COMBO_BOX (combo_box), -1);
|
||||
|
||||
return priv->col_column;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_combo_box_set_column_span_column:
|
||||
* @combo_box: A #GtkComboBox
|
||||
* @column_span: A column in the model passed during construction
|
||||
*
|
||||
* Sets the column with column span information for @combo_box to be
|
||||
* @column_span. The column span column contains integers which indicate
|
||||
* how many columns an item should span.
|
||||
*/
|
||||
void
|
||||
gtk_combo_box_set_column_span_column (GtkComboBox *combo_box,
|
||||
gint column_span)
|
||||
{
|
||||
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
|
||||
gint col;
|
||||
|
||||
g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
|
||||
|
||||
col = gtk_tree_model_get_n_columns (priv->model);
|
||||
g_return_if_fail (column_span >= -1 && column_span < col);
|
||||
|
||||
if (column_span != priv->col_column)
|
||||
{
|
||||
priv->col_column = column_span;
|
||||
_gtk_tree_menu_set_column_span_column (GTK_TREE_MENU (priv->popup_widget), priv->col_column);
|
||||
g_object_notify (G_OBJECT (combo_box), "column-span-column");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_combo_box_get_active:
|
||||
* @combo_box: A #GtkComboBox
|
||||
|
Loading…
Reference in New Issue
Block a user