diff --git a/ChangeLog b/ChangeLog index 091c8c58e4..4ab88e127e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2004-12-15 Matthias Clasen + + * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first) + (gtk_real_menu_shell_activate_current): Use + _gtk_menu_item_popup_submenu() to make keynav into submenus work + instantaneously, independent of the popup delay. (#161140) + + * gtk/gtkmenuitem.[hc]: _-prefix gtk_menu_item_popup_submenu() and + make it non-static. + + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Remove unused variables. + 2004-12-15 James M. Cape * gtk/gtkfilechooserbutton.c (struct _GtkFileChooserButtonPrivate) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 091c8c58e4..4ab88e127e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,15 @@ +2004-12-15 Matthias Clasen + + * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first) + (gtk_real_menu_shell_activate_current): Use + _gtk_menu_item_popup_submenu() to make keynav into submenus work + instantaneously, independent of the popup delay. (#161140) + + * gtk/gtkmenuitem.[hc]: _-prefix gtk_menu_item_popup_submenu() and + make it non-static. + + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Remove unused variables. + 2004-12-15 James M. Cape * gtk/gtkfilechooserbutton.c (struct _GtkFileChooserButtonPrivate) diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 091c8c58e4..4ab88e127e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,15 @@ +2004-12-15 Matthias Clasen + + * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first) + (gtk_real_menu_shell_activate_current): Use + _gtk_menu_item_popup_submenu() to make keynav into submenus work + instantaneously, independent of the popup delay. (#161140) + + * gtk/gtkmenuitem.[hc]: _-prefix gtk_menu_item_popup_submenu() and + make it non-static. + + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Remove unused variables. + 2004-12-15 James M. Cape * gtk/gtkfilechooserbutton.c (struct _GtkFileChooserButtonPrivate) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 091c8c58e4..4ab88e127e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,15 @@ +2004-12-15 Matthias Clasen + + * gtk/gtkmenushell.c (gtk_menu_shell_select_submenu_first) + (gtk_real_menu_shell_activate_current): Use + _gtk_menu_item_popup_submenu() to make keynav into submenus work + instantaneously, independent of the popup delay. (#161140) + + * gtk/gtkmenuitem.[hc]: _-prefix gtk_menu_item_popup_submenu() and + make it non-static. + + * gtk/gtkmenuitem.c (gtk_menu_item_paint): Remove unused variables. + 2004-12-15 James M. Cape * gtk/gtkfilechooserbutton.c (struct _GtkFileChooserButtonPrivate) diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 0b14859fc4..809a09583e 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -288,8 +288,6 @@ gtk_cell_view_new_with_text gtk_cell_view_set_background_color gtk_cell_view_set_displayed_row gtk_cell_view_set_model -gtk_cell_view_set_value -gtk_cell_view_set_values gtk_check_button_get_type G_GNUC_CONST gtk_check_button_new gtk_check_button_new_with_label diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c index c7c5c2682c..6642284943 100644 --- a/gtk/gtkcellview.c +++ b/gtk/gtkcellview.c @@ -76,9 +76,10 @@ static void gtk_cell_view_size_allocate (GtkWidget *wid GtkAllocation *allocation); static gboolean gtk_cell_view_expose (GtkWidget *widget, GdkEventExpose *event); -static void gtk_cell_view_set_valuesv (GtkCellView *cellview, - GtkCellRenderer *renderer, - va_list args); +static void gtk_cell_view_set_value (GtkCellView *cell_view, + GtkCellRenderer *renderer, + gchar *property, + GValue *value); static GtkCellViewCellInfo *gtk_cell_view_get_cell_info (GtkCellView *cellview, GtkCellRenderer *renderer); static void gtk_cell_view_set_cell_data (GtkCellView *cell_view); @@ -795,7 +796,7 @@ gtk_cell_view_new_with_text (const gchar *text) g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, text); - gtk_cell_view_set_values (cellview, renderer, "text", &value, NULL); + gtk_cell_view_set_value (cellview, renderer, "text", &value); g_value_unset (&value); return GTK_WIDGET (cellview); @@ -829,7 +830,7 @@ gtk_cell_view_new_with_markup (const gchar *markup) g_value_init (&value, G_TYPE_STRING); g_value_set_string (&value, markup); - gtk_cell_view_set_values (cellview, renderer, "markup", &value, NULL); + gtk_cell_view_set_value (cellview, renderer, "markup", &value); g_value_unset (&value); return GTK_WIDGET (cellview); @@ -861,7 +862,7 @@ gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf) g_value_init (&value, GDK_TYPE_PIXBUF); g_value_set_object (&value, pixbuf); - gtk_cell_view_set_values (cellview, renderer, "pixbuf", &value, NULL); + gtk_cell_view_set_value (cellview, renderer, "pixbuf", &value); g_value_unset (&value); return GTK_WIDGET (cellview); @@ -879,7 +880,7 @@ gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf) * * Since: 2.6 */ -void +static void gtk_cell_view_set_value (GtkCellView *cell_view, GtkCellRenderer *renderer, gchar *property, @@ -895,52 +896,6 @@ gtk_cell_view_set_value (GtkCellView *cell_view, gtk_widget_queue_draw (GTK_WIDGET (cell_view)); } -static void -gtk_cell_view_set_valuesv (GtkCellView *cell_view, - GtkCellRenderer *renderer, - va_list args) -{ - gchar *attribute; - GValue *value; - - attribute = va_arg (args, gchar *); - - while (attribute) - { - value = va_arg (args, GValue *); - gtk_cell_view_set_value (cell_view, renderer, attribute, value); - attribute = va_arg (args, gchar *); - } -} - -/** - * gtk_cell_view_set_values: - * @cell_view: a #GtkCellView widget - * @renderer: one of the renderers of @cell_view - * @Varargs: a list of pairs of property names and #GValues, - * finished by %NULL - * - * Sets multiple properties of a cell renderer of @cell_view, and - * makes sure the display of @cell_view is updated. - * - * Since: 2.6 - */ -void -gtk_cell_view_set_values (GtkCellView *cell_view, - GtkCellRenderer *renderer, - ...) -{ - va_list args; - - g_return_if_fail (GTK_IS_CELL_VIEW (cell_view)); - g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); - g_return_if_fail (gtk_cell_view_get_cell_info (cell_view, renderer)); - - va_start (args, renderer); - gtk_cell_view_set_valuesv (cell_view, renderer, args); - va_end (args); -} - /** * gtk_cell_view_set_model: * @cell_view: a #GtkCellView diff --git a/gtk/gtkcellview.h b/gtk/gtkcellview.h index c2a572384f..6a79c3aba4 100644 --- a/gtk/gtkcellview.h +++ b/gtk/gtkcellview.h @@ -56,15 +56,6 @@ GtkWidget *gtk_cell_view_new_with_text (const gchar *text); GtkWidget *gtk_cell_view_new_with_markup (const gchar *markup); GtkWidget *gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf); - -void gtk_cell_view_set_value (GtkCellView *cell_view, - GtkCellRenderer *renderer, - gchar *property, - GValue *value); -void gtk_cell_view_set_values (GtkCellView *cell_view, - GtkCellRenderer *renderer, - ...); - void gtk_cell_view_set_model (GtkCellView *cell_view, GtkTreeModel *model); void gtk_cell_view_set_displayed_row (GtkCellView *cell_view, diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 3038c42f7a..fd1ad7ccdc 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -80,7 +80,6 @@ static gboolean gtk_menu_item_mnemonic_activate (GtkWidget *widget, gboolean group_cycling); static gint gtk_menu_item_select_timeout (gpointer data); -static void gtk_menu_item_popup_submenu (gpointer data); static void gtk_menu_item_position_menu (GtkMenu *menu, gint *x, gint *y, @@ -199,7 +198,7 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) g_signal_new ("toggle_size_allocate", G_OBJECT_CLASS_TYPE (gobject_class), G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GtkMenuItemClass, toggle_size_allocate), + G_STRUCT_OFFSET (GtkMenuItemClass, toggle_size_allocate), NULL, NULL, _gtk_marshal_NONE__INT, G_TYPE_NONE, 1, @@ -718,7 +717,6 @@ gtk_menu_item_paint (GtkWidget *widget, if (menu_item->submenu && menu_item->show_submenu_indicator) { - GtkRequisition child_requisition; gint arrow_x, arrow_y; gint arrow_size; gint arrow_extent; @@ -728,7 +726,6 @@ gtk_menu_item_paint (GtkWidget *widget, PangoContext *context; PangoFontMetrics *metrics; gint ascent, descent; - PangoLayout *layout; direction = gtk_widget_get_direction (widget); @@ -871,7 +868,7 @@ gtk_real_menu_item_select (GtkItem *item) gdk_event_free (event); } else - gtk_menu_item_popup_submenu (menu_item); + _gtk_menu_item_popup_submenu (GTK_WIDGET (menu_item)); } gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_PRELIGHT); @@ -944,7 +941,7 @@ gtk_real_menu_item_activate_item (GtkMenuItem *menu_item) _gtk_menu_shell_activate (menu_shell); gtk_menu_shell_select_item (GTK_MENU_SHELL (widget->parent), widget); - gtk_menu_item_popup_submenu (widget); + _gtk_menu_item_popup_submenu (widget); gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE); submenu = GTK_MENU_SHELL (menu_item->submenu); @@ -984,7 +981,7 @@ gtk_menu_item_select_timeout (gpointer data) if ((GTK_IS_MENU_SHELL (parent) && GTK_MENU_SHELL (parent)->active) || (GTK_IS_MENU (parent) && GTK_MENU (parent)->torn_off)) { - gtk_menu_item_popup_submenu (data); + _gtk_menu_item_popup_submenu (GTK_WIDGET (menu_item)); if (menu_item->timer_from_keypress && menu_item->submenu) GTK_MENU_SHELL (menu_item->submenu)->ignore_enter = TRUE; } @@ -994,13 +991,11 @@ gtk_menu_item_select_timeout (gpointer data) return FALSE; } -static void -gtk_menu_item_popup_submenu (gpointer data) +void +_gtk_menu_item_popup_submenu (GtkWidget *widget) { - GtkWidget *widget; GtkMenuItem *menu_item; - widget = GTK_WIDGET (data); menu_item = GTK_MENU_ITEM (widget); if (menu_item->timer) diff --git a/gtk/gtkmenuitem.h b/gtk/gtkmenuitem.h index a75061d939..930d4eed0a 100644 --- a/gtk/gtkmenuitem.h +++ b/gtk/gtkmenuitem.h @@ -121,6 +121,7 @@ void _gtk_menu_item_refresh_accel_path (GtkMenuItem *menu_item, GtkAccelGroup *accel_group, gboolean group_changed); gboolean _gtk_menu_item_is_selectable (GtkWidget *menu_item); +void _gtk_menu_item_popup_submenu (GtkWidget *menu_item); #ifndef GTK_DISABLE_DEPRECATED #define gtk_menu_item_right_justify(menu_item) gtk_menu_item_set_right_justified ((menu_item), TRUE) diff --git a/gtk/gtkmenushell.c b/gtk/gtkmenushell.c index d318e167b8..0b70b93d03 100644 --- a/gtk/gtkmenushell.c +++ b/gtk/gtkmenushell.c @@ -1070,7 +1070,10 @@ gtk_menu_shell_select_submenu_first (GtkMenuShell *menu_shell) menu_item = GTK_MENU_ITEM (menu_shell->active_menu_item); if (menu_item->submenu) - gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE); + { + _gtk_menu_item_popup_submenu (menu_item); + gtk_menu_shell_select_first (GTK_MENU_SHELL (menu_item->submenu), TRUE); + } } static void @@ -1190,13 +1193,16 @@ gtk_real_menu_shell_activate_current (GtkMenuShell *menu_shell, gboolean force_hide) { if (menu_shell->active_menu_item && - _gtk_menu_item_is_selectable (menu_shell->active_menu_item) && - GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu == NULL) - { + _gtk_menu_item_is_selectable (menu_shell->active_menu_item)) + { + + if (GTK_MENU_ITEM (menu_shell->active_menu_item)->submenu == NULL) gtk_menu_shell_activate_item (menu_shell, menu_shell->active_menu_item, force_hide); - } + else + _gtk_menu_item_popup_submenu (menu_shell->active_menu_item); + } } static void