diff options
author | Alexander Larsson <alexl@redhat.com> | 2000-11-08 17:34:52 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2000-11-08 17:34:52 +0000 |
commit | 814957b46e16fbaf8999190c2052edbc347c71fe (patch) | |
tree | 0554a3123f5c6f7115db4ecbe4e7cacc00a7cccc /gtk/gtkcheckmenuitem.c | |
parent | b440118aa4644e30ef6d7d44f607f67f05536285 (diff) | |
download | gtk+-814957b46e16fbaf8999190c2052edbc347c71fe.tar.gz |
Add note about GtkMenuPositionFunc API changes.
2000-11-08 Alexander Larsson <alexl@redhat.com>
* docs/Changes-2.0.txt: Add note about GtkMenuPositionFunc
API changes.
* gtk/gtkmenu.c: Add support for scrolling menus.
Remove gtk_menu_append/prepend/insert, these have been moved to
gtkcompat.h as #defines.
* gtk/gtkcompat.h.in:
Add compatibility #defines for gtk_menu_append/prepend/insert
* gtk/gtkmenu.h: Add data needed for scrolling menus.
GtkMenuPositionFunc gets an extra argument push_in.
gtk_menu_append/prepend/insert removed.
* gtk/gtkmenuitem.c (gtk_menu_item_position_menu): Change menu
positioning behaviour to fit to scrolling menus.
* gtk/gtkmenuitem.c (gtk_menu_item_forall): Don't recurse
into menuitem->submeny. That is wrong, and broke torn
off submenus of torn off menus, since they were unrealized
when the first menu was unrealized.
* gtk/gtkmenushell.[ch]: Virtualize gtk_menu_shell_insert() and
gtk_menu_shell_select_item() since these need to be overridden in
GtkMenu.
* gtk/gtkoptionmenu.c (gtk_opttion_menu_position): Change menu
positioning behaviour to fit to scrolling menus.
(gtk_option_menu_key_press, gtk_option_menu_button_press): Select
the current item so that it is prelighted when the menu pops up.
This is a workaround to the fact that the menu doesn't get the
initial enter event (due to grabs).
* gtk/gtkfilesel.c, gtk/gtkinputdialog.c, gtk/testgtk.c:
s/gtk_menu_append/gtk_menu_shell_append/
* gtk/gtknotebook.c:
s/gtk_menu_insert/gtk_menu_shell_insert/
* gtk/testgtk.c (create_menu, create_menus):
Create the first menu with 50 items so that menu scrolling
can be tested.
Patch from Jonathan Blandford <jrb@redhat.com>
* gtk/gtkmenuitem.[ch] (gtk_menu_item_toggle_size_request): new
system to handle size requests. First, we ask what the size of
the toggle is. Then, when allocating the size, we allocate the
toggle_size first. This way we can have multiple menu-item
classes w/o needing a seperate class for each.
* gtk/gtkmenu.c (gtk_menu_size_request): Actually use the new system.
* gtk/gtkmenu.c (gtk_menu_size_allocate): Use the new system.
* gtk/gtkcheckmenuitem.c
(gtk_check_menu_item_toggle_size_request): New function to handle
the toggle size-request.
Diffstat (limited to 'gtk/gtkcheckmenuitem.c')
-rw-r--r-- | gtk/gtkcheckmenuitem.c | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c index 3d3b707e24..cf6a517e88 100644 --- a/gtk/gtkcheckmenuitem.c +++ b/gtk/gtkcheckmenuitem.c @@ -28,7 +28,7 @@ #include "gtkaccellabel.h" #include "gtksignal.h" - +#define CHECK_TOGGLE_SIZE 12 enum { TOGGLED, @@ -36,17 +36,19 @@ enum { }; -static void gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass); -static void gtk_check_menu_item_init (GtkCheckMenuItem *check_menu_item); -static void gtk_check_menu_item_draw (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_check_menu_item_expose (GtkWidget *widget, - GdkEventExpose *event); -static void gtk_check_menu_item_activate (GtkMenuItem *menu_item); -static void gtk_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item, - GdkRectangle *area); -static void gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item, - GdkRectangle *area); +static void gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass); +static void gtk_check_menu_item_init (GtkCheckMenuItem *check_menu_item); +static void gtk_check_menu_item_draw (GtkWidget *widget, + GdkRectangle *area); +static gint gtk_check_menu_item_expose (GtkWidget *widget, + GdkEventExpose *event); +static void gtk_check_menu_item_activate (GtkMenuItem *menu_item); +static void gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item, + guint16 *requisition); +static void gtk_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item, + GdkRectangle *area); +static void gtk_real_check_menu_item_draw_indicator (GtkCheckMenuItem *check_menu_item, + GdkRectangle *area); static GtkMenuItemClass *parent_class = NULL; @@ -95,8 +97,8 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass) widget_class->expose_event = gtk_check_menu_item_expose; menu_item_class->activate = gtk_check_menu_item_activate; - menu_item_class->toggle_size = 12; menu_item_class->hide_on_activate = FALSE; + menu_item_class->toggle_size_request = gtk_check_menu_item_toggle_size_request; klass->toggled = NULL; klass->draw_indicator = gtk_real_check_menu_item_draw_indicator; @@ -147,6 +149,16 @@ gtk_check_menu_item_set_active (GtkCheckMenuItem *check_menu_item, gtk_menu_item_activate (GTK_MENU_ITEM (check_menu_item)); } +static void +gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item, + guint16 *requisition) +{ + g_return_if_fail (menu_item != NULL); + g_return_if_fail (GTK_IS_CHECK_MENU_ITEM (menu_item)); + + *requisition = CHECK_TOGGLE_SIZE; +} + void gtk_check_menu_item_set_show_toggle (GtkCheckMenuItem *menu_item, gboolean always) |