combobox: Remove unused header function functionality
This commit is contained in:
@ -3091,17 +3091,6 @@ gtk_combo_box_row_separator_func (GtkTreeModel *model,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
gtk_combo_box_header_func (GtkTreeModel *model,
|
|
||||||
GtkTreeIter *iter,
|
|
||||||
GtkComboBox *combo)
|
|
||||||
{
|
|
||||||
/* Every submenu has a selectable header, however we
|
|
||||||
* can expose a method to make that configurable by
|
|
||||||
* the user (like row_separator_func is done) */
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_combo_box_menu_setup (GtkComboBox *combo_box)
|
gtk_combo_box_menu_setup (GtkComboBox *combo_box)
|
||||||
{
|
{
|
||||||
@ -3178,10 +3167,6 @@ gtk_combo_box_menu_setup (GtkComboBox *combo_box)
|
|||||||
(GtkTreeViewRowSeparatorFunc)gtk_combo_box_row_separator_func,
|
(GtkTreeViewRowSeparatorFunc)gtk_combo_box_row_separator_func,
|
||||||
combo_box, NULL);
|
combo_box, NULL);
|
||||||
|
|
||||||
_gtk_tree_menu_set_header_func (GTK_TREE_MENU (menu),
|
|
||||||
(GtkTreeMenuHeaderFunc)gtk_combo_box_header_func,
|
|
||||||
combo_box, NULL);
|
|
||||||
|
|
||||||
g_signal_connect (menu, "key-press-event",
|
g_signal_connect (menu, "key-press-event",
|
||||||
G_CALLBACK (gtk_combo_box_menu_key_press), combo_box);
|
G_CALLBACK (gtk_combo_box_menu_key_press), combo_box);
|
||||||
gtk_combo_box_set_popup_widget (combo_box, menu);
|
gtk_combo_box_set_popup_widget (combo_box, menu);
|
||||||
|
|||||||
@ -176,11 +176,6 @@ struct _GtkTreeMenuPrivate
|
|||||||
GtkTreeViewRowSeparatorFunc row_separator_func;
|
GtkTreeViewRowSeparatorFunc row_separator_func;
|
||||||
gpointer row_separator_data;
|
gpointer row_separator_data;
|
||||||
GDestroyNotify row_separator_destroy;
|
GDestroyNotify row_separator_destroy;
|
||||||
|
|
||||||
/* Submenu headers */
|
|
||||||
GtkTreeMenuHeaderFunc header_func;
|
|
||||||
gpointer header_data;
|
|
||||||
GDestroyNotify header_destroy;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -452,7 +447,6 @@ gtk_tree_menu_finalize (GObject *object)
|
|||||||
priv = menu->priv;
|
priv = menu->priv;
|
||||||
|
|
||||||
_gtk_tree_menu_set_row_separator_func (menu, NULL, NULL, NULL);
|
_gtk_tree_menu_set_row_separator_func (menu, NULL, NULL, NULL);
|
||||||
_gtk_tree_menu_set_header_func (menu, NULL, NULL, NULL);
|
|
||||||
|
|
||||||
if (priv->root)
|
if (priv->root)
|
||||||
gtk_tree_row_reference_free (priv->root);
|
gtk_tree_row_reference_free (priv->root);
|
||||||
@ -1022,7 +1016,6 @@ row_changed_cb (GtkTreeModel *model,
|
|||||||
{
|
{
|
||||||
GtkTreeMenuPrivate *priv = menu->priv;
|
GtkTreeMenuPrivate *priv = menu->priv;
|
||||||
gboolean is_separator = FALSE;
|
gboolean is_separator = FALSE;
|
||||||
gboolean has_header = FALSE;
|
|
||||||
GtkWidget *item;
|
GtkWidget *item;
|
||||||
|
|
||||||
item = gtk_tree_menu_get_path_item (menu, path);
|
item = gtk_tree_menu_get_path_item (menu, path);
|
||||||
@ -1034,22 +1027,7 @@ row_changed_cb (GtkTreeModel *model,
|
|||||||
|
|
||||||
if (root_path && gtk_tree_path_compare (root_path, path) == 0)
|
if (root_path && gtk_tree_path_compare (root_path, path) == 0)
|
||||||
{
|
{
|
||||||
if (priv->header_func)
|
if (item)
|
||||||
has_header =
|
|
||||||
priv->header_func (priv->model, iter, priv->header_data);
|
|
||||||
|
|
||||||
if (has_header && !item)
|
|
||||||
{
|
|
||||||
item = gtk_separator_menu_item_new ();
|
|
||||||
gtk_widget_show (item);
|
|
||||||
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
|
|
||||||
|
|
||||||
item = gtk_tree_menu_create_item (menu, iter, TRUE);
|
|
||||||
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), item);
|
|
||||||
|
|
||||||
priv->menu_with_header = TRUE;
|
|
||||||
}
|
|
||||||
else if (!has_header && item)
|
|
||||||
{
|
{
|
||||||
/* Destroy the header item and then the following separator */
|
/* Destroy the header item and then the following separator */
|
||||||
gtk_widget_destroy (item);
|
gtk_widget_destroy (item);
|
||||||
@ -1302,10 +1280,6 @@ gtk_tree_menu_create_submenu (GtkTreeMenu *menu,
|
|||||||
priv->row_separator_func,
|
priv->row_separator_func,
|
||||||
priv->row_separator_data,
|
priv->row_separator_data,
|
||||||
priv->row_separator_destroy);
|
priv->row_separator_destroy);
|
||||||
_gtk_tree_menu_set_header_func (GTK_TREE_MENU (submenu),
|
|
||||||
priv->header_func,
|
|
||||||
priv->header_data,
|
|
||||||
priv->header_destroy);
|
|
||||||
|
|
||||||
_gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (submenu), priv->wrap_width);
|
_gtk_tree_menu_set_wrap_width (GTK_TREE_MENU (submenu), priv->wrap_width);
|
||||||
_gtk_tree_menu_set_row_span_column (GTK_TREE_MENU (submenu), priv->row_span_col);
|
_gtk_tree_menu_set_row_span_column (GTK_TREE_MENU (submenu), priv->row_span_col);
|
||||||
@ -1406,26 +1380,8 @@ gtk_tree_menu_populate (GtkTreeMenu *menu)
|
|||||||
if (path)
|
if (path)
|
||||||
{
|
{
|
||||||
if (gtk_tree_model_get_iter (priv->model, &parent, path))
|
if (gtk_tree_model_get_iter (priv->model, &parent, path))
|
||||||
{
|
|
||||||
valid = gtk_tree_model_iter_children (priv->model, &iter, &parent);
|
valid = gtk_tree_model_iter_children (priv->model, &iter, &parent);
|
||||||
|
|
||||||
if (priv->header_func &&
|
|
||||||
priv->header_func (priv->model, &parent, priv->header_data))
|
|
||||||
{
|
|
||||||
/* Add a submenu header for rows which desire one, used for
|
|
||||||
* combo boxes to allow all rows to be activatable/selectable
|
|
||||||
*/
|
|
||||||
menu_item = gtk_tree_menu_create_item (menu, &parent, TRUE);
|
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
|
|
||||||
|
|
||||||
menu_item = gtk_separator_menu_item_new ();
|
|
||||||
gtk_widget_show (menu_item);
|
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
|
|
||||||
|
|
||||||
prev = menu_item;
|
|
||||||
priv->menu_with_header = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gtk_tree_path_free (path);
|
gtk_tree_path_free (path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1981,63 +1937,3 @@ _gtk_tree_menu_set_row_separator_func (GtkTreeMenu *menu,
|
|||||||
|
|
||||||
rebuild_menu (menu);
|
rebuild_menu (menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* _gtk_tree_menu_get_header_func:
|
|
||||||
* @menu: a #GtkTreeMenu
|
|
||||||
*
|
|
||||||
* Gets the current #GtkTreeMenuHeaderFunc header function.
|
|
||||||
*
|
|
||||||
* Returns: the current header function.
|
|
||||||
*
|
|
||||||
* Since: 3.0
|
|
||||||
*/
|
|
||||||
GtkTreeMenuHeaderFunc
|
|
||||||
_gtk_tree_menu_get_header_func (GtkTreeMenu *menu)
|
|
||||||
{
|
|
||||||
GtkTreeMenuPrivate *priv;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GTK_IS_TREE_MENU (menu), NULL);
|
|
||||||
|
|
||||||
priv = menu->priv;
|
|
||||||
|
|
||||||
return priv->header_func;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _gtk_tree_menu_set_header_func:
|
|
||||||
* @menu: a #GtkTreeMenu
|
|
||||||
* @func: (allow-none): a #GtkTreeMenuHeaderFunc, or %NULL to unset the header function.
|
|
||||||
* @data: (allow-none): user data to pass to @func, or %NULL
|
|
||||||
* @destroy: (allow-none): destroy notifier for @data, or %NULL
|
|
||||||
*
|
|
||||||
* Sets the header function, which is used to determine
|
|
||||||
* whether a row width children should contain a leading header
|
|
||||||
* menu item to allow that row to be selectable as an independant
|
|
||||||
* menu item. If the header function is %NULL, no rows with children
|
|
||||||
* have menu items which can be activated as leafs.
|
|
||||||
* This is the default value.
|
|
||||||
*
|
|
||||||
* Since: 3.0
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
_gtk_tree_menu_set_header_func (GtkTreeMenu *menu,
|
|
||||||
GtkTreeMenuHeaderFunc func,
|
|
||||||
gpointer data,
|
|
||||||
GDestroyNotify destroy)
|
|
||||||
{
|
|
||||||
GtkTreeMenuPrivate *priv;
|
|
||||||
|
|
||||||
g_return_if_fail (GTK_IS_TREE_MENU (menu));
|
|
||||||
|
|
||||||
priv = menu->priv;
|
|
||||||
|
|
||||||
if (priv->header_destroy)
|
|
||||||
priv->header_destroy (priv->header_data);
|
|
||||||
|
|
||||||
priv->header_func = func;
|
|
||||||
priv->header_data = data;
|
|
||||||
priv->header_destroy = destroy;
|
|
||||||
|
|
||||||
rebuild_menu (menu);
|
|
||||||
}
|
|
||||||
|
|||||||
@ -44,23 +44,6 @@ typedef struct _GtkTreeMenu GtkTreeMenu;
|
|||||||
typedef struct _GtkTreeMenuClass GtkTreeMenuClass;
|
typedef struct _GtkTreeMenuClass GtkTreeMenuClass;
|
||||||
typedef struct _GtkTreeMenuPrivate GtkTreeMenuPrivate;
|
typedef struct _GtkTreeMenuPrivate GtkTreeMenuPrivate;
|
||||||
|
|
||||||
/**
|
|
||||||
* GtkTreeMenuHeaderFunc:
|
|
||||||
* @model: a #GtkTreeModel
|
|
||||||
* @iter: the #GtkTreeIter pointing at a row in @model
|
|
||||||
* @data: user data
|
|
||||||
*
|
|
||||||
* Function type for determining whether the row pointed to by @iter
|
|
||||||
* which has children should be replicated as a header item in the
|
|
||||||
* child menu.
|
|
||||||
*
|
|
||||||
* Returns: %TRUE if @iter should have an activatable header menu
|
|
||||||
* item created for it in a submenu.
|
|
||||||
*/
|
|
||||||
typedef gboolean (*GtkTreeMenuHeaderFunc) (GtkTreeModel *model,
|
|
||||||
GtkTreeIter *iter,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
struct _GtkTreeMenu
|
struct _GtkTreeMenu
|
||||||
{
|
{
|
||||||
GtkMenu parent_instance;
|
GtkMenu parent_instance;
|
||||||
@ -115,12 +98,6 @@ void _gtk_tree_menu_set_row_separator_func (GtkTreeMenu
|
|||||||
gpointer data,
|
gpointer data,
|
||||||
GDestroyNotify destroy);
|
GDestroyNotify destroy);
|
||||||
|
|
||||||
GtkTreeMenuHeaderFunc _gtk_tree_menu_get_header_func (GtkTreeMenu *menu);
|
|
||||||
void _gtk_tree_menu_set_header_func (GtkTreeMenu *menu,
|
|
||||||
GtkTreeMenuHeaderFunc func,
|
|
||||||
gpointer data,
|
|
||||||
GDestroyNotify destroy);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GTK_TREE_MENU_H__ */
|
#endif /* __GTK_TREE_MENU_H__ */
|
||||||
|
|||||||
Reference in New Issue
Block a user