mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 10:50:10 +00:00
Avoid segfault for selectable tab labels (even without a segfault, they
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault for selectable tab labels (even without a segfault, they make the notebook almost unusable, though). (#69985) * gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do nothing if the parent is not a menu. (#66492) * gtk/gtkitemfactory.c (gtk_item_factory_from_widget, gtk_item_factory_path_from_widget): Try fetching the return value from menu_item->submenu as a fallback. (#69020)
This commit is contained in:
parent
1e40b8cb18
commit
dc46b476e3
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
||||
2002-02-09 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
|
||||
for selectable tab labels (even without a segfault, they make the
|
||||
notebook almost unusable, though). (#69985)
|
||||
|
||||
2002-02-08 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
|
||||
nothing if the parent is not a menu. (#66492)
|
||||
|
||||
2002-02-06 Matthias Clasen <matthiasc@poet.de>
|
||||
|
||||
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
|
||||
gtk_item_factory_path_from_widget): Try fetching the return value
|
||||
from menu_item->submenu as a fallback. (#69020)
|
||||
|
||||
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
|
||||
|
@ -1,3 +1,20 @@
|
||||
2002-02-09 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
|
||||
for selectable tab labels (even without a segfault, they make the
|
||||
notebook almost unusable, though). (#69985)
|
||||
|
||||
2002-02-08 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
|
||||
nothing if the parent is not a menu. (#66492)
|
||||
|
||||
2002-02-06 Matthias Clasen <matthiasc@poet.de>
|
||||
|
||||
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
|
||||
gtk_item_factory_path_from_widget): Try fetching the return value
|
||||
from menu_item->submenu as a fallback. (#69020)
|
||||
|
||||
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
|
||||
|
@ -1,3 +1,20 @@
|
||||
2002-02-09 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
|
||||
for selectable tab labels (even without a segfault, they make the
|
||||
notebook almost unusable, though). (#69985)
|
||||
|
||||
2002-02-08 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
|
||||
nothing if the parent is not a menu. (#66492)
|
||||
|
||||
2002-02-06 Matthias Clasen <matthiasc@poet.de>
|
||||
|
||||
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
|
||||
gtk_item_factory_path_from_widget): Try fetching the return value
|
||||
from menu_item->submenu as a fallback. (#69020)
|
||||
|
||||
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
|
||||
|
@ -1,3 +1,20 @@
|
||||
2002-02-09 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
|
||||
for selectable tab labels (even without a segfault, they make the
|
||||
notebook almost unusable, though). (#69985)
|
||||
|
||||
2002-02-08 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
|
||||
nothing if the parent is not a menu. (#66492)
|
||||
|
||||
2002-02-06 Matthias Clasen <matthiasc@poet.de>
|
||||
|
||||
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
|
||||
gtk_item_factory_path_from_widget): Try fetching the return value
|
||||
from menu_item->submenu as a fallback. (#69020)
|
||||
|
||||
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
|
||||
|
@ -1,3 +1,20 @@
|
||||
2002-02-09 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
|
||||
for selectable tab labels (even without a segfault, they make the
|
||||
notebook almost unusable, though). (#69985)
|
||||
|
||||
2002-02-08 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
|
||||
nothing if the parent is not a menu. (#66492)
|
||||
|
||||
2002-02-06 Matthias Clasen <matthiasc@poet.de>
|
||||
|
||||
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
|
||||
gtk_item_factory_path_from_widget): Try fetching the return value
|
||||
from menu_item->submenu as a fallback. (#69020)
|
||||
|
||||
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
|
||||
|
@ -1,3 +1,20 @@
|
||||
2002-02-09 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
|
||||
for selectable tab labels (even without a segfault, they make the
|
||||
notebook almost unusable, though). (#69985)
|
||||
|
||||
2002-02-08 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
|
||||
nothing if the parent is not a menu. (#66492)
|
||||
|
||||
2002-02-06 Matthias Clasen <matthiasc@poet.de>
|
||||
|
||||
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
|
||||
gtk_item_factory_path_from_widget): Try fetching the return value
|
||||
from menu_item->submenu as a fallback. (#69020)
|
||||
|
||||
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
|
||||
|
@ -1,3 +1,20 @@
|
||||
2002-02-09 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_set_focus_child): Avoid segfault
|
||||
for selectable tab labels (even without a segfault, they make the
|
||||
notebook almost unusable, though). (#69985)
|
||||
|
||||
2002-02-08 Matthias Clasen <matthias@local>
|
||||
|
||||
* gtk/gtkmenuitem.c (gtk_menu_item_set_accel_path): Silently do
|
||||
nothing if the parent is not a menu. (#66492)
|
||||
|
||||
2002-02-06 Matthias Clasen <matthiasc@poet.de>
|
||||
|
||||
* gtk/gtkitemfactory.c (gtk_item_factory_from_widget,
|
||||
gtk_item_factory_path_from_widget): Try fetching the return value
|
||||
from menu_item->submenu as a fallback. (#69020)
|
||||
|
||||
Sat Feb 9 22:57:43 2002 Kristian Rietveld <kris@gtk.org>
|
||||
|
||||
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_build_level): convert
|
||||
|
@ -577,9 +577,19 @@ gtk_item_factory_finalize (GObject *object)
|
||||
GtkItemFactory*
|
||||
gtk_item_factory_from_widget (GtkWidget *widget)
|
||||
{
|
||||
GtkItemFactory *ifactory;
|
||||
|
||||
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
||||
|
||||
return gtk_object_get_data_by_id (GTK_OBJECT (widget), quark_item_factory);
|
||||
ifactory = gtk_object_get_data_by_id (GTK_OBJECT (widget), quark_item_factory);
|
||||
if (ifactory == NULL && GTK_IS_MENU_ITEM (widget) &&
|
||||
GTK_MENU_ITEM (widget)->submenu != NULL)
|
||||
{
|
||||
GtkWidget *menu = GTK_MENU_ITEM (widget)->submenu;
|
||||
ifactory = gtk_object_get_data_by_id (GTK_OBJECT (menu), quark_item_factory);
|
||||
}
|
||||
|
||||
return ifactory;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -597,9 +607,20 @@ gtk_item_factory_from_widget (GtkWidget *widget)
|
||||
G_CONST_RETURN gchar*
|
||||
gtk_item_factory_path_from_widget (GtkWidget *widget)
|
||||
{
|
||||
gchar* path;
|
||||
|
||||
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
|
||||
|
||||
return gtk_object_get_data_by_id (GTK_OBJECT (widget), quark_item_path);
|
||||
path = gtk_object_get_data_by_id (GTK_OBJECT (widget), quark_item_path);
|
||||
|
||||
if (path == NULL && GTK_IS_MENU_ITEM (widget) &&
|
||||
GTK_MENU_ITEM (widget)->submenu != NULL)
|
||||
{
|
||||
GtkWidget *menu = GTK_MENU_ITEM (widget)->submenu;
|
||||
path = gtk_object_get_data_by_id (GTK_OBJECT (menu), quark_item_path);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1124,7 +1124,7 @@ gtk_menu_item_set_accel_path (GtkMenuItem *menu_item,
|
||||
gtk_widget_set_accel_path (widget, NULL, NULL);
|
||||
|
||||
/* install accelerators associated with new path */
|
||||
if (widget->parent)
|
||||
if (widget->parent && GTK_IS_MENU (widget->parent))
|
||||
{
|
||||
GtkMenu *menu = GTK_MENU (widget->parent);
|
||||
|
||||
|
@ -2068,7 +2068,7 @@ gtk_notebook_focus (GtkWidget *widget,
|
||||
g_assert_not_reached ();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
gtk_notebook_set_focus_child (GtkContainer *container,
|
||||
GtkWidget *child)
|
||||
@ -2091,15 +2091,18 @@ gtk_notebook_set_focus_child (GtkContainer *container,
|
||||
if (page_child->parent == GTK_WIDGET (container))
|
||||
{
|
||||
GList *list = gtk_notebook_find_child (notebook, page_child, NULL);
|
||||
GtkNotebookPage *page = list->data;
|
||||
|
||||
if (page->last_focus_child)
|
||||
g_object_remove_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child);
|
||||
|
||||
page->last_focus_child = GTK_WINDOW (toplevel)->focus_widget;
|
||||
g_object_add_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child);
|
||||
if (list != NULL)
|
||||
{
|
||||
GtkNotebookPage *page = list->data;
|
||||
|
||||
break;
|
||||
if (page->last_focus_child)
|
||||
g_object_remove_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child);
|
||||
|
||||
page->last_focus_child = GTK_WINDOW (toplevel)->focus_widget;
|
||||
g_object_add_weak_pointer (G_OBJECT (page->last_focus_child), (gpointer *)&page->last_focus_child);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
page_child = page_child->parent;
|
||||
|
Loading…
Reference in New Issue
Block a user