+Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
+ string parameter.
+
+ * gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
+ GtkMenuShell::selection_done, now that we have it, instead of
+ ::deactivate so we're not tearing the menu apart and notify
+ the user prematurely.
+
+Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
+ window, clear window->need_default_position to avoid infinite loops.
+ some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
+
+Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
+ code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
+ (gtk_tree_view_set_property): don't cast possible NULL objects.
+ (gtk_tree_view_destroy): reset the model to NULL.
+
+ * gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
+ parent_class handler.
+
2001-08-17 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/demos/gtk-demo/*: Remove all uses of deprecated functions.
* gtk/stock-icons/dialog_error.png: maybe a little drastic ;)
* gtk/stock-icons/dialog_warning.png: need a hand?
* gtk/stock-icons/stock_add.png, stock_remove.png: I hope
- the aa border gets chopped off ok
+ the aa border gets chopped off ok
* gtk/stock-icons/stock_colorselector.png: using the new hand
* gtk/stock-icons/stock_dnd_multiple.png: I'm not totally sure what
- this one is for, but the old icon was butt ugly.
+ this one is for, but the old icon was butt ugly.
* gtk/stock-icons/stock*_insert_image.png: not sure if it belongs here
* gtk/stock-icons/stock*_insert_object.png: "
* gtk/stock-icons/stock_index.png: using new hand icon
* gtk/stock-icons/stock*_new.png: the document template being used
- elsewhere too
+ elsewhere too
* gtk/stock-icons/stock*_print*.png: new print and print preview
- icons (panel/menu)
+ icons (panel/menu)
* gtk/stock-icons/stock*_save*.png, stock*_revert.png: new save/revert
- icons based on Tuomas' floppy image.
+ icons based on Tuomas' floppy image.
* gtk/stock-icons/stock*_search*.png: search and s'n'r icons for panel/menu
* gtk/stock-icons/stock*_stop.png: replacing the old 'x' button
* gtk/stock-icons/stock*_trash.png: based on Tuomas' trash icon
* gtk/stock-icons/stock*_undelete.png: "
* gtk/stock-icons/stock_preferences.png: I have a version with a
- document base if the sliders are no good.
+ document base if the sliders are no good.
* gtk/stock-icons/stock_properties.png: properties
+Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
+ string parameter.
+
+ * gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
+ GtkMenuShell::selection_done, now that we have it, instead of
+ ::deactivate so we're not tearing the menu apart and notify
+ the user prematurely.
+
+Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
+ window, clear window->need_default_position to avoid infinite loops.
+ some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
+
+Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
+ code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
+ (gtk_tree_view_set_property): don't cast possible NULL objects.
+ (gtk_tree_view_destroy): reset the model to NULL.
+
+ * gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
+ parent_class handler.
+
2001-08-17 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/demos/gtk-demo/*: Remove all uses of deprecated functions.
* gtk/stock-icons/dialog_error.png: maybe a little drastic ;)
* gtk/stock-icons/dialog_warning.png: need a hand?
* gtk/stock-icons/stock_add.png, stock_remove.png: I hope
- the aa border gets chopped off ok
+ the aa border gets chopped off ok
* gtk/stock-icons/stock_colorselector.png: using the new hand
* gtk/stock-icons/stock_dnd_multiple.png: I'm not totally sure what
- this one is for, but the old icon was butt ugly.
+ this one is for, but the old icon was butt ugly.
* gtk/stock-icons/stock*_insert_image.png: not sure if it belongs here
* gtk/stock-icons/stock*_insert_object.png: "
* gtk/stock-icons/stock_index.png: using new hand icon
* gtk/stock-icons/stock*_new.png: the document template being used
- elsewhere too
+ elsewhere too
* gtk/stock-icons/stock*_print*.png: new print and print preview
- icons (panel/menu)
+ icons (panel/menu)
* gtk/stock-icons/stock*_save*.png, stock*_revert.png: new save/revert
- icons based on Tuomas' floppy image.
+ icons based on Tuomas' floppy image.
* gtk/stock-icons/stock*_search*.png: search and s'n'r icons for panel/menu
* gtk/stock-icons/stock*_stop.png: replacing the old 'x' button
* gtk/stock-icons/stock*_trash.png: based on Tuomas' trash icon
* gtk/stock-icons/stock*_undelete.png: "
* gtk/stock-icons/stock_preferences.png: I have a version with a
- document base if the sliders are no good.
+ document base if the sliders are no good.
* gtk/stock-icons/stock_properties.png: properties
+Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
+ string parameter.
+
+ * gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
+ GtkMenuShell::selection_done, now that we have it, instead of
+ ::deactivate so we're not tearing the menu apart and notify
+ the user prematurely.
+
+Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
+ window, clear window->need_default_position to avoid infinite loops.
+ some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
+
+Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
+ code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
+ (gtk_tree_view_set_property): don't cast possible NULL objects.
+ (gtk_tree_view_destroy): reset the model to NULL.
+
+ * gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
+ parent_class handler.
+
2001-08-17 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/demos/gtk-demo/*: Remove all uses of deprecated functions.
* gtk/stock-icons/dialog_error.png: maybe a little drastic ;)
* gtk/stock-icons/dialog_warning.png: need a hand?
* gtk/stock-icons/stock_add.png, stock_remove.png: I hope
- the aa border gets chopped off ok
+ the aa border gets chopped off ok
* gtk/stock-icons/stock_colorselector.png: using the new hand
* gtk/stock-icons/stock_dnd_multiple.png: I'm not totally sure what
- this one is for, but the old icon was butt ugly.
+ this one is for, but the old icon was butt ugly.
* gtk/stock-icons/stock*_insert_image.png: not sure if it belongs here
* gtk/stock-icons/stock*_insert_object.png: "
* gtk/stock-icons/stock_index.png: using new hand icon
* gtk/stock-icons/stock*_new.png: the document template being used
- elsewhere too
+ elsewhere too
* gtk/stock-icons/stock*_print*.png: new print and print preview
- icons (panel/menu)
+ icons (panel/menu)
* gtk/stock-icons/stock*_save*.png, stock*_revert.png: new save/revert
- icons based on Tuomas' floppy image.
+ icons based on Tuomas' floppy image.
* gtk/stock-icons/stock*_search*.png: search and s'n'r icons for panel/menu
* gtk/stock-icons/stock*_stop.png: replacing the old 'x' button
* gtk/stock-icons/stock*_trash.png: based on Tuomas' trash icon
* gtk/stock-icons/stock*_undelete.png: "
* gtk/stock-icons/stock_preferences.png: I have a version with a
- document base if the sliders are no good.
+ document base if the sliders are no good.
* gtk/stock-icons/stock_properties.png: properties
+Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
+ string parameter.
+
+ * gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
+ GtkMenuShell::selection_done, now that we have it, instead of
+ ::deactivate so we're not tearing the menu apart and notify
+ the user prematurely.
+
+Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
+ window, clear window->need_default_position to avoid infinite loops.
+ some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
+
+Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
+ code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
+ (gtk_tree_view_set_property): don't cast possible NULL objects.
+ (gtk_tree_view_destroy): reset the model to NULL.
+
+ * gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
+ parent_class handler.
+
2001-08-17 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/demos/gtk-demo/*: Remove all uses of deprecated functions.
* gtk/stock-icons/dialog_error.png: maybe a little drastic ;)
* gtk/stock-icons/dialog_warning.png: need a hand?
* gtk/stock-icons/stock_add.png, stock_remove.png: I hope
- the aa border gets chopped off ok
+ the aa border gets chopped off ok
* gtk/stock-icons/stock_colorselector.png: using the new hand
* gtk/stock-icons/stock_dnd_multiple.png: I'm not totally sure what
- this one is for, but the old icon was butt ugly.
+ this one is for, but the old icon was butt ugly.
* gtk/stock-icons/stock*_insert_image.png: not sure if it belongs here
* gtk/stock-icons/stock*_insert_object.png: "
* gtk/stock-icons/stock_index.png: using new hand icon
* gtk/stock-icons/stock*_new.png: the document template being used
- elsewhere too
+ elsewhere too
* gtk/stock-icons/stock*_print*.png: new print and print preview
- icons (panel/menu)
+ icons (panel/menu)
* gtk/stock-icons/stock*_save*.png, stock*_revert.png: new save/revert
- icons based on Tuomas' floppy image.
+ icons based on Tuomas' floppy image.
* gtk/stock-icons/stock*_search*.png: search and s'n'r icons for panel/menu
* gtk/stock-icons/stock*_stop.png: replacing the old 'x' button
* gtk/stock-icons/stock*_trash.png: based on Tuomas' trash icon
* gtk/stock-icons/stock*_undelete.png: "
* gtk/stock-icons/stock_preferences.png: I have a version with a
- document base if the sliders are no good.
+ document base if the sliders are no good.
* gtk/stock-icons/stock_properties.png: properties
+Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
+ string parameter.
+
+ * gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
+ GtkMenuShell::selection_done, now that we have it, instead of
+ ::deactivate so we're not tearing the menu apart and notify
+ the user prematurely.
+
+Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
+ window, clear window->need_default_position to avoid infinite loops.
+ some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
+
+Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
+ code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
+ (gtk_tree_view_set_property): don't cast possible NULL objects.
+ (gtk_tree_view_destroy): reset the model to NULL.
+
+ * gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
+ parent_class handler.
+
2001-08-17 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/demos/gtk-demo/*: Remove all uses of deprecated functions.
* gtk/stock-icons/dialog_error.png: maybe a little drastic ;)
* gtk/stock-icons/dialog_warning.png: need a hand?
* gtk/stock-icons/stock_add.png, stock_remove.png: I hope
- the aa border gets chopped off ok
+ the aa border gets chopped off ok
* gtk/stock-icons/stock_colorselector.png: using the new hand
* gtk/stock-icons/stock_dnd_multiple.png: I'm not totally sure what
- this one is for, but the old icon was butt ugly.
+ this one is for, but the old icon was butt ugly.
* gtk/stock-icons/stock*_insert_image.png: not sure if it belongs here
* gtk/stock-icons/stock*_insert_object.png: "
* gtk/stock-icons/stock_index.png: using new hand icon
* gtk/stock-icons/stock*_new.png: the document template being used
- elsewhere too
+ elsewhere too
* gtk/stock-icons/stock*_print*.png: new print and print preview
- icons (panel/menu)
+ icons (panel/menu)
* gtk/stock-icons/stock*_save*.png, stock*_revert.png: new save/revert
- icons based on Tuomas' floppy image.
+ icons based on Tuomas' floppy image.
* gtk/stock-icons/stock*_search*.png: search and s'n'r icons for panel/menu
* gtk/stock-icons/stock*_stop.png: replacing the old 'x' button
* gtk/stock-icons/stock*_trash.png: based on Tuomas' trash icon
* gtk/stock-icons/stock*_undelete.png: "
* gtk/stock-icons/stock_preferences.png: I have a version with a
- document base if the sliders are no good.
+ document base if the sliders are no good.
* gtk/stock-icons/stock_properties.png: properties
+Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
+ string parameter.
+
+ * gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
+ GtkMenuShell::selection_done, now that we have it, instead of
+ ::deactivate so we're not tearing the menu apart and notify
+ the user prematurely.
+
+Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
+ window, clear window->need_default_position to avoid infinite loops.
+ some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
+
+Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
+ code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
+ (gtk_tree_view_set_property): don't cast possible NULL objects.
+ (gtk_tree_view_destroy): reset the model to NULL.
+
+ * gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
+ parent_class handler.
+
2001-08-17 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/demos/gtk-demo/*: Remove all uses of deprecated functions.
* gtk/stock-icons/dialog_error.png: maybe a little drastic ;)
* gtk/stock-icons/dialog_warning.png: need a hand?
* gtk/stock-icons/stock_add.png, stock_remove.png: I hope
- the aa border gets chopped off ok
+ the aa border gets chopped off ok
* gtk/stock-icons/stock_colorselector.png: using the new hand
* gtk/stock-icons/stock_dnd_multiple.png: I'm not totally sure what
- this one is for, but the old icon was butt ugly.
+ this one is for, but the old icon was butt ugly.
* gtk/stock-icons/stock*_insert_image.png: not sure if it belongs here
* gtk/stock-icons/stock*_insert_object.png: "
* gtk/stock-icons/stock_index.png: using new hand icon
* gtk/stock-icons/stock*_new.png: the document template being used
- elsewhere too
+ elsewhere too
* gtk/stock-icons/stock*_print*.png: new print and print preview
- icons (panel/menu)
+ icons (panel/menu)
* gtk/stock-icons/stock*_save*.png, stock*_revert.png: new save/revert
- icons based on Tuomas' floppy image.
+ icons based on Tuomas' floppy image.
* gtk/stock-icons/stock*_search*.png: search and s'n'r icons for panel/menu
* gtk/stock-icons/stock*_stop.png: replacing the old 'x' button
* gtk/stock-icons/stock*_trash.png: based on Tuomas' trash icon
* gtk/stock-icons/stock*_undelete.png: "
* gtk/stock-icons/stock_preferences.png: I have a version with a
- document base if the sliders are no good.
+ document base if the sliders are no good.
* gtk/stock-icons/stock_properties.png: properties
+Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
+ string parameter.
+
+ * gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
+ GtkMenuShell::selection_done, now that we have it, instead of
+ ::deactivate so we're not tearing the menu apart and notify
+ the user prematurely.
+
+Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
+ window, clear window->need_default_position to avoid infinite loops.
+ some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
+
+Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
+
+ * gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
+ code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
+ (gtk_tree_view_set_property): don't cast possible NULL objects.
+ (gtk_tree_view_destroy): reset the model to NULL.
+
+ * gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
+ parent_class handler.
+
2001-08-17 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/demos/gtk-demo/*: Remove all uses of deprecated functions.
* gtk/stock-icons/dialog_error.png: maybe a little drastic ;)
* gtk/stock-icons/dialog_warning.png: need a hand?
* gtk/stock-icons/stock_add.png, stock_remove.png: I hope
- the aa border gets chopped off ok
+ the aa border gets chopped off ok
* gtk/stock-icons/stock_colorselector.png: using the new hand
* gtk/stock-icons/stock_dnd_multiple.png: I'm not totally sure what
- this one is for, but the old icon was butt ugly.
+ this one is for, but the old icon was butt ugly.
* gtk/stock-icons/stock*_insert_image.png: not sure if it belongs here
* gtk/stock-icons/stock*_insert_object.png: "
* gtk/stock-icons/stock_index.png: using new hand icon
* gtk/stock-icons/stock*_new.png: the document template being used
- elsewhere too
+ elsewhere too
* gtk/stock-icons/stock*_print*.png: new print and print preview
- icons (panel/menu)
+ icons (panel/menu)
* gtk/stock-icons/stock*_save*.png, stock*_revert.png: new save/revert
- icons based on Tuomas' floppy image.
+ icons based on Tuomas' floppy image.
* gtk/stock-icons/stock*_search*.png: search and s'n'r icons for panel/menu
* gtk/stock-icons/stock*_stop.png: replacing the old 'x' button
* gtk/stock-icons/stock*_trash.png: based on Tuomas' trash icon
* gtk/stock-icons/stock*_undelete.png: "
* gtk/stock-icons/stock_preferences.png: I have a version with a
- document base if the sliders are no good.
+ document base if the sliders are no good.
* gtk/stock-icons/stock_properties.png: properties
GdkEventButton *event);
static gint gtk_option_menu_key_press (GtkWidget *widget,
GdkEventKey *event);
-static void gtk_option_menu_deactivate (GtkMenuShell *menu_shell,
+static void gtk_option_menu_selection_done (GtkMenuShell *menu_shell,
GtkOptionMenu *option_menu);
static void gtk_option_menu_update_contents (GtkOptionMenu *option_menu);
static void gtk_option_menu_remove_contents (GtkOptionMenu *option_menu);
gtk_option_menu_calc_size (option_menu);
- gtk_signal_connect (GTK_OBJECT (option_menu->menu), "deactivate",
- (GtkSignalFunc) gtk_option_menu_deactivate,
- option_menu);
+ gtk_signal_connect_after (GTK_OBJECT (option_menu->menu), "selection_done",
+ G_CALLBACK (gtk_option_menu_selection_done),
+ option_menu);
gtk_signal_connect_object (GTK_OBJECT (option_menu->menu), "size_request",
(GtkSignalFunc) gtk_option_menu_calc_size,
GTK_OBJECT (option_menu));
}
static void
-gtk_option_menu_deactivate (GtkMenuShell *menu_shell,
- GtkOptionMenu *option_menu)
+gtk_option_menu_selection_done (GtkMenuShell *menu_shell,
+ GtkOptionMenu *option_menu)
{
g_return_if_fail (menu_shell != NULL);
g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
* Return value: A newly created #GtkTreePath, or NULL
**/
GtkTreePath *
-gtk_tree_path_new_from_string (gchar *path)
+gtk_tree_path_new_from_string (const gchar *path)
{
GtkTreePath *retval;
- gchar *orig_path = path;
+ const gchar *orig_path = path;
gchar *ptr;
gint i;
if (i < 0)
{
- g_warning (G_STRLOC"Negative numbers in path %s passed to gtk_tree_path_new_from_string", orig_path);
+ g_warning (G_STRLOC ": Negative numbers in path %s passed to gtk_tree_path_new_from_string", orig_path);
gtk_tree_path_free (retval);
return NULL;
}
break;
if (ptr == path || *ptr != ':')
{
- g_warning (G_STRLOC"Invalid path %s passed to gtk_tree_path_new_from_string", orig_path);
+ g_warning (G_STRLOC ": Invalid path %s passed to gtk_tree_path_new_from_string", orig_path);
gtk_tree_path_free (retval);
return NULL;
}
/* GtkTreePath operations */
GtkTreePath *gtk_tree_path_new (void);
-GtkTreePath *gtk_tree_path_new_from_string (gchar *path);
+GtkTreePath *gtk_tree_path_new_from_string (const gchar *path);
gchar *gtk_tree_path_to_string (GtkTreePath *path);
GtkTreePath *gtk_tree_path_new_root (void);
void gtk_tree_path_append_index (GtkTreePath *path,
{
if (GTK_TREE_SELECTION (object)->destroy)
(* GTK_TREE_SELECTION (object)->destroy) (GTK_TREE_SELECTION (object)->user_data);
+
+ /* chain parent_class' handler */
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
/**
switch (prop_id)
{
case PROP_MODEL:
- gtk_tree_view_set_model (tree_view, GTK_TREE_MODEL (g_value_get_object (value)));
+ gtk_tree_view_set_model (tree_view, g_value_get_object (value));
break;
case PROP_HADJUSTMENT:
- gtk_tree_view_set_hadjustment (tree_view, GTK_ADJUSTMENT (g_value_get_object (value)));
+ gtk_tree_view_set_hadjustment (tree_view, g_value_get_object (value));
break;
case PROP_VADJUSTMENT:
- gtk_tree_view_set_vadjustment (tree_view, GTK_ADJUSTMENT (g_value_get_object (value)));
+ gtk_tree_view_set_vadjustment (tree_view, g_value_get_object (value));
break;
case PROP_HEADERS_VISIBLE:
gtk_tree_view_set_headers_visible (tree_view, g_value_get_boolean (value));
gtk_tree_view_set_headers_clickable (tree_view, g_value_get_boolean (value));
break;
case PROP_EXPANDER_COLUMN:
- gtk_tree_view_set_expander_column (tree_view, GTK_TREE_VIEW_COLUMN (g_value_get_object (value)));
+ gtk_tree_view_set_expander_column (tree_view, g_value_get_object (value));
break;
case PROP_REORDERABLE:
gtk_tree_view_set_reorderable (tree_view, g_value_get_boolean (value));
static void
gtk_tree_view_destroy (GtkObject *object)
{
- GtkTreeView *tree_view = (GtkTreeView *) object;
+ GtkTreeView *tree_view = GTK_TREE_VIEW (object);
GList *list;
+ gtk_tree_view_set_model (tree_view, NULL);
if (tree_view->priv->tree != NULL)
{
tree_view->priv->header_height = 1;
- if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_MODEL_SETUP))
+ if (tree_view->priv->model)
{
for (list = tree_view->priv->columns; list; list = list->next)
{
}
}
-static void
-gtk_tree_view_setup_model (GtkTreeView *tree_view)
-{
- GtkTreePath *path;
- GtkTreeIter iter;
-
- tree_view->priv->tree = NULL;
-
- g_signal_connect (tree_view->priv->model,
- "range_changed",
- (GCallback) gtk_tree_view_range_changed,
- tree_view);
- g_signal_connect (tree_view->priv->model,
- "inserted",
- (GCallback) gtk_tree_view_inserted,
- tree_view);
- g_signal_connect (tree_view->priv->model,
- "has_child_toggled",
- (GCallback) gtk_tree_view_has_child_toggled,
- tree_view);
- g_signal_connect (tree_view->priv->model,
- "deleted",
- (GCallback) gtk_tree_view_deleted,
- tree_view);
- g_signal_connect (tree_view->priv->model,
- "reordered",
- (GCallback) gtk_tree_view_reordered,
- tree_view);
-
- if (tree_view->priv->columns == NULL)
- return;
-
- path = gtk_tree_path_new_root ();
-
- if (gtk_tree_model_get_iter (tree_view->priv->model, &iter, path))
- {
- tree_view->priv->tree = _gtk_rbtree_new ();
- gtk_tree_view_build_tree (tree_view, tree_view->priv->tree, &iter, 1, FALSE, GTK_WIDGET_REALIZED (tree_view));
- }
-
- gtk_tree_path_free (path);
-
- /* FIXME: do I need to do this? gtk_tree_view_create_buttons (tree_view); */
-
- GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_MODEL_SETUP);
-}
-
static gint
gtk_tree_view_insert_iter_height (GtkTreeView *tree_view,
GtkRBTree *tree,
GtkTreeViewColumn *column;
GtkTreeIter iter;
- if (!GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_MODEL_SETUP) &&
- tree_view->priv->model)
- gtk_tree_view_setup_model (tree_view);
-
for (list = tree_view->priv->columns; list; list = list->next)
{
column = list->data;
if (model == tree_view->priv->model)
return;
- if (model != NULL)
- g_object_ref (model);
-
- if (tree_view->priv->model != NULL)
- {
- if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_MODEL_SETUP))
+ if (tree_view->priv->model)
+ {
+ g_signal_handlers_disconnect_by_func (G_OBJECT (tree_view->priv->model),
+ gtk_tree_view_range_changed, tree_view);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (tree_view->priv->model),
+ gtk_tree_view_inserted, tree_view);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (tree_view->priv->model),
+ gtk_tree_view_has_child_toggled, tree_view);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (tree_view->priv->model),
+ gtk_tree_view_deleted, tree_view);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (tree_view->priv->model),
+ gtk_tree_view_reordered, tree_view);
+ if (tree_view->priv->tree)
{
- g_signal_handlers_disconnect_matched (G_OBJECT (tree_view->priv->model),
- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
- 0, 0, NULL,
- gtk_tree_view_range_changed, tree_view);
- g_signal_handlers_disconnect_matched (G_OBJECT (tree_view->priv->model),
- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
- 0, 0, NULL,
- gtk_tree_view_inserted, tree_view);
- g_signal_handlers_disconnect_matched (G_OBJECT (tree_view->priv->model),
- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
- 0, 0, NULL,
- gtk_tree_view_has_child_toggled, tree_view);
- g_signal_handlers_disconnect_matched (G_OBJECT (tree_view->priv->model),
- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
- 0, 0, NULL,
- gtk_tree_view_deleted, tree_view);
- g_signal_handlers_disconnect_matched (G_OBJECT (tree_view->priv->model),
- G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA,
- 0, 0, NULL,
- gtk_tree_view_reordered, tree_view);
- if (tree_view->priv->tree)
- _gtk_rbtree_free (tree_view->priv->tree);
+ _gtk_rbtree_free (tree_view->priv->tree);
+ tree_view->priv->tree = NULL;
}
-
if (tree_view->priv->drag_dest_row)
- gtk_tree_row_reference_free (tree_view->priv->drag_dest_row);
-
- GTK_TREE_VIEW_UNSET_FLAG (tree_view, GTK_TREE_VIEW_MODEL_SETUP);
+ {
+ gtk_tree_row_reference_free (tree_view->priv->drag_dest_row);
+ tree_view->priv->drag_dest_row = NULL;
+ }
g_object_unref (tree_view->priv->model);
}
tree_view->priv->model = model;
- if (model == NULL)
+ if (tree_view->priv->model)
{
- tree_view->priv->tree = NULL;
- if (GTK_WIDGET_REALIZED (tree_view))
- _gtk_tree_view_update_size (tree_view);
- }
- else if (GTK_WIDGET_REALIZED (tree_view))
- {
- gtk_tree_view_setup_model (tree_view);
- _gtk_tree_view_update_size (tree_view);
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ g_object_ref (tree_view->priv->model);
+ g_signal_connect (tree_view->priv->model,
+ "range_changed",
+ G_CALLBACK (gtk_tree_view_range_changed),
+ tree_view);
+ g_signal_connect (tree_view->priv->model,
+ "inserted",
+ G_CALLBACK (gtk_tree_view_inserted),
+ tree_view);
+ g_signal_connect (tree_view->priv->model,
+ "has_child_toggled",
+ G_CALLBACK (gtk_tree_view_has_child_toggled),
+ tree_view);
+ g_signal_connect (tree_view->priv->model,
+ "deleted",
+ G_CALLBACK (gtk_tree_view_deleted),
+ tree_view);
+ g_signal_connect (tree_view->priv->model,
+ "reordered",
+ G_CALLBACK (gtk_tree_view_reordered),
+ tree_view);
+
+ path = gtk_tree_path_new_root ();
+ if (gtk_tree_model_get_iter (tree_view->priv->model, &iter, path))
+ {
+ tree_view->priv->tree = _gtk_rbtree_new ();
+ gtk_tree_view_build_tree (tree_view, tree_view->priv->tree, &iter, 1, FALSE, GTK_WIDGET_REALIZED (tree_view));
+ }
+ gtk_tree_path_free (path);
+
+ /* FIXME: do I need to do this? gtk_tree_view_create_buttons (tree_view); */
}
+ if (GTK_WIDGET_REALIZED (tree_view))
+ _gtk_tree_view_update_size (tree_view);
g_object_notify (G_OBJECT (tree_view), "model");
}
gint x,
gint y)
{
- GtkWindowGeometryInfo *info;
-
g_return_if_fail (GTK_IS_WINDOW (window));
gtk_window_move (window, x, y);
widget->allocation.height != new_request.height))
configure_request_size_changed = TRUE;
- /*
- * Position Constraints
+ /* Position Constraints
* ====================
*
* POS_CENTER_ALWAYS is conceptually a constraint rather than
gdk_window_set_geometry_hints (widget->window,
&new_geometry,
new_flags);
-
+
+ /* handle resizing/moving and widget tree allocation
+ */
if (window->configure_notify_received)
{
GtkAllocation allocation;
* (one per configure request), as an optimization.
*
*/
-
window->configure_notify_received = FALSE;
/* gtk_window_configure_event() filled in widget->allocation */
allocation = widget->allocation;
-
gtk_widget_size_allocate (widget, &allocation);
gtk_widget_queue_draw (widget);
* we either:
* 1) coincidentally changed hints or widget properties
* impacting the configure request before getting
- * a configure notify
- * or
+ * a configure notify, or
* 2) some broken widget is changing its size request
* during size allocation, resulting in
* a false appearance of changed configure request.
* hurt us too badly, since it is what would have
* happened if we had gotten the configure event before
* the new size had been set.
- *
*/
if (configure_request_size_changed ||
* haven't actually updated to the new info yet - we decided
* to postpone our configure request until later.
*/
-
info->last = saved_last_info;
- gtk_widget_queue_resize (widget);
+ gtk_widget_queue_resize (widget); /* migth recurse for GTK_RESIZE_IMMEDIATE */
}
}
else if (configure_request_pos_changed ||
configure_request_size_changed ||
hints_changed)
{
- /* We are in one of the following situations with
- * respect to the window size:
- *
+ /* We are in one of the following situations:
* A. configure_request_size_changed
- * our requisition has changed and we need a different window size,
- * so we request it from the window manager.
- *
+ * our requisition has changed and we need a different window size,
+ * so we request it from the window manager.
* B. !configure_request_size_changed
- * the window manager wouldn't assign us the size we requested, in this
- * case we don't try to request a new size with every resize.
- *
+ * the window manager wouldn't assign us the size we requested, in this
+ * case we don't try to request a new size with every resize.
* C. !configure_request_size_changed && hints_changed
- * the window manager rejects our size, but we have just changed the
- * window manager hints, so there's a certain chance our request will
- * be honoured this time, so we try again.
+ * the window manager rejects our size, but we have just changed the
+ * window manager hints, so there's a certain chance our request will
+ * be honoured this time, so we try again.
+ * D. configure_request_pos_changed
+ * we need to move to a new position, in which case we can also request
+ * a new size since any of A-C might also apply.
*/
- /* Compress case C into case A */
- if (hints_changed)
- configure_request_size_changed = TRUE;
-
- g_assert (configure_request_size_changed ||
- configure_request_pos_changed);
-
/* Now send the configure request */
-
if (configure_request_pos_changed)
{
if (window->frame)
new_request.x, new_request.y,
new_request.width, new_request.height);
}
- else
+ else /* only size changed */
{
- /* only size changed */
-
if (window->frame)
gdk_window_resize (window->frame,
new_request.width + window->frame_left + window->frame_right,
new_request.height + window->frame_top + window->frame_bottom);
-
gdk_window_resize (widget->window,
new_request.width, new_request.height);
}
window->configure_request_count += 1;
/* We have now sent a request since the last position constraint
- * change
+ * change and definitely don't need a an initial size again (not
+ * resetting this here can lead to infinite loops for
+ * GTK_RESIZE_IMMEDIATE containers)
*/
info->position_constraints_changed = FALSE;
-
- /* we are now awaiting the new configure notify event in response to our
- * resizing request. the configure event will cause a new resize
- * with ->configure_notify_received=TRUE.
+ window->need_default_position = FALSE;
+
+ /* for GTK_RESIZE_QUEUE toplevels, we are now awaiting a new
+ * configure event in response to our resizing request.
+ * the configure event will cause a new resize with
+ * ->configure_notify_received=TRUE.
* until then, we want to
* - discard expose events
* - coalesce resizes for our children
* idle handler but when the configure event arrives.
*
* FIXME: we should also dequeue the pending redraws here, since
- * we handle those ourselves in ->configure_notify_received==TRUE.
- *
- * FIXME: not sure the above FIXME is correct, because we only
- * queue draw in size allocate if the size actually changes,
- * so if the update area for the window contains stuff
- * unrelated to sizing (should be rare actually) then we
- * might lose that info.
+ * we handle those ourselves upon ->configure_notify_received==TRUE.
*/
- gtk_widget_queue_resize (widget);
if (container->resize_mode == GTK_RESIZE_QUEUE)
- _gtk_container_dequeue_resize_handler (container);
+ {
+ gtk_widget_queue_resize (widget);
+ _gtk_container_dequeue_resize_handler (container);
+ }
}
else
{