diff options
author | Tim Janik <timj@gtk.org> | 1998-11-23 01:54:45 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 1998-11-23 01:54:45 +0000 |
commit | 98e22a43ab25649842fde09ac0bc0e764c9a9dca (patch) | |
tree | c17939c89cd902660a1fa677d5b7177a45d4d336 /gtk/gtkclist.c | |
parent | 12f7825907f9398ba09c90650afea0305d6dd629 (diff) | |
download | gtk+-98e22a43ab25649842fde09ac0bc0e764c9a9dca.tar.gz |
added args ::show_text, ::text_xalign, ::text_yalign, ::activity_mode.
Sun Nov 22 16:21:28 1998 Tim Janik <timj@gtk.org>
* gtk/gtkprogress.c: added args ::show_text, ::text_xalign,
::text_yalign, ::activity_mode.
* gtk/gtkprogressbar.c: added construct arg ::adjustment. added args
::bar_style, ::orientation, ::discrete_blocks, ::activity_step,
::activity_blocks.
(gtk_progress_bar_new):
(gtk_progress_bar_new_with_adjustment): use gtk_widget_new().
(gtk_progress_bar_construct): deprecated.
* gtk/gtkvscrollbar.c:
(gtk_vscrollbar_draw_step_back):
(gtk_vscrollbar_draw_step_forw): use "vscrollbar" as detail for
gtk_paint_arrow, to be consistent with hscrollbar.
* gtk/gtktext.c
added construct args ::hadjustment, ::vadjustment.
added args ::line_wrap, ::word_wrap.
(gtk_text_class_init): added scroll_adjustments signal.
(gtk_text_new): use gtk_widget_new.
(gtk_text_disconnect): remove adjustement with gtk_text_set_adjustments,
so we don't screw the reference counts and don't leave signals connected.
(gtk_text_destroy): disconnect adjustments signals.
(gtk_text_finalize): unref adjustments.
* gtk/gtkctree.c: added construct args ::n_columns and ::tree_column.
added args ::indent, ::spacing, ::show_stub, ::reorderable,
::use_drag_icons, ::line_style and ::expander_style.
(gtk_ctree_set_show_stub): renamed from gtk_ctree_show_stub, which is
deprecated now.
* gtk/gtkclist.h: remove GTK_CLIST_CONSTRUCT flag.
* gtk/gtkclist.c:
removed ::vadjustment and ::hadjustment args, introduced
::scroll_adjustments signal.
added ::shadow_type, ::selection_mode and ::row_height args.
added n_columns construct arg.
(gtk_clist_construct): call gtk_object_constructed().
(gtk_clist_set_row_height): if height is passed as 0,
revert to automatic height calculation.
(gtk_clist_destroy): before unrefing the adjustments, disconnect our
signal handlers.
Fri Nov 21 22:34:58 1998 Tim Janik <timj@gtk.org>
* gtk/gtkwidget.c (gtk_widget_new): call gtk_object_default_construct
like gtk_object_new.
(gtk_widget_destroy): assert that we only destroy constructed widgets.
* gtk/gtkobject.h (enum GtkArgFlags): new flag GTK_ARG_CONSTRUCT_ONLY
to identify args that may only be used for construction.
GTK_ARG_CONSTRUCT maybe used as normal arguments besides construction
time.
* gtk/gtkobject.c (gtk_object_new): invoke gtk_object_default_construct
at the end if the object is not fully constructed.
(gtk_object_newv): likewise.
(gtk_object_destroy): assert that we only destroy constructed objects.
(gtk_object_init): setup GTK_CONSTRUCTED from the
objects real klass.
(gtk_object_default_construct): new function to complete default
construction of an object by applying missing construtor args with
default values of 0, 0.0 or NULL.
(gtk_object_constructed): new function to mark an object as being
constructed (used from within constructors).
* gtk/gtkarg.c (gtk_arg_type_new_static): return the args info pointer
so it is immediatedly available for the caller.
* gtk/gtktypeutils.c (gtk_type_new): pass an object's real class to
the object initilizer (GtkObjectInitFunc takes a second arg now, the
real klass), and asure that object initializers may temporarily alter
the class pointer.
Fri Nov 20 08:00:30 1998 Tim Janik <timj@gtk.org>
* gtk/testgtk.c: change all occourances of gtk_container_add (
scrolled_window, widget) to gtk_scrolled_window_add_with_viewport (...)
for widget!=(clist, ctree, text, viewport).
* gtk/gtkcombo.c:
(gtk_combo_init): use gtk_scrolled_window_add_with_viewport()
to add children to the scrolled window.
* gtk/gtkscrolledwindow.h:
* gtk/gtkscrolledwindow.c:
changed scrolled_window->viewport to scrolled_window->child, and use
gtk_widget_scroll_adjustements() to set the scroll adjustments for the
widget, we do not create an additional viewport anymore.
added ::hadjustment and ::vadjustment constructor args.
(gtk_scrolled_window_new): use gtk_widget_new() to create the widget.
(gtk_scrolled_window_set_hadjustment):
(gtk_scrolled_window_set_vadjustment): new functions that superceed
gtk_scrolled_window_construct.
(gtk_scrolled_window_construct): deprecated this function.
* gtk/gtkhscrollbar.c:
* gtk/gtkvscrollbar.c:
* gtk/gtkhscale.c:
* gtk/gtkvscale.c:
support a constructor arg "::adjustment", and use gtk_widget_new() for
the widget creation.
* gtk/gtkrange.c: added ::update_policy arg.
(gtk_range_set_adjustment): if adjustment is passed in as NULL, create
a default adjustment so this function can be used for derived widgets
that depend on the adjustment's existance.
(gtk_range_destroy): disconnect the adjustment signal, so we don't
get called after we got destroyed, we don't destroy the adjustment
in here, because it might have been provided from another widget.
* gtk/gtkviewport.c: introduced ::scroll_adjustments signal.
(gtk_viewport_destroy): same as gtk_range_destroy.
* gtk/gtkprogress.c (gtk_progress_destroy): same as gtk_range_destroy.
* gtk/gtkwidget.h:
* gtk/gtkwidget.c: changed gtk_widget_activate() to return a
gboolean, indicating whether this widget supports activation.
added gtk_widget_scroll_adjustements() to set the scrolling
adjustments of a widget.
Wed Nov 19 01:22:42 1998 Tim Janik <timj@gtk.org>
* gtk/gtkoptionmenu.c:
(gtk_option_menu_remove_contents):
(gtk_option_menu_update_contents): removed
gtk_container_[un]block_resize() pairs.
* gtk/gtknotebook.h:
* gtk/gtknotebook.c: removed the tab_border field, since it shouldn't
be used outside of gtknotebook.c anyways. made ARG_TAB_BORDER a
wrtie-only argument.
* *.c: made deprecated functions issue a message:
gtk_clist_set_border, gtk_container_block_resize,
gtk_container_unblock_resize, gtk_container_need_resize,
gtk_object_class_add_user_signal, gtk_spin_button_construct,
gtk_scrolled_window_construct.
removed non-functional functions:
gtk_container_disable_resize, gtk_container_enable_resize,
gtk_clist_set_policy.
Wed Nov 18 22:54:36 1998 Tim Janik <timj@gtk.org>
* gtk/gtkbox.c (gtk_box_init):
* gtk/gtkdrawingarea.c (gtk_drawing_area_init):
* gtk/gtkeventbox.c (gtk_event_box_init):
* gtk/gtkfixed.c (gtk_fixed_init):
* gtk/gtkframe.c (gtk_frame_init):
* gtk/gtkhandlebox.c (gtk_handle_box_init):
* gtk/gtkpacker.c (gtk_packer_init):
* gtk/gtkmisc.c (gtk_misc_init):
* gtk/gtkpreview.c (gtk_preview_init):
* gtk/gtkprogress.c (gtk_progress_init):
* gtk/gtkprogressbar.c (gtk_progress_bar_init):
* gtk/gtkseparator.c (gtk_separator_init):
* gtk/gtktable.c (gtk_table_init):
* gtk/gtkviewport.c (gtk_viewport_init):
* gtk/gtkalignment.c (gtk_alignment_init):
removed setting of the GTK_BASIC flag.
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
removed GTK_BASIC, GTK_WIDGET_BASIC and gtk_widget_basic.
* miscellaneous GtkType and macro fixups.
Diffstat (limited to 'gtk/gtkclist.c')
-rw-r--r-- | gtk/gtkclist.c | 159 |
1 files changed, 107 insertions, 52 deletions
diff --git a/gtk/gtkclist.c b/gtk/gtkclist.c index 79ed963d0e..cca25b8fc6 100644 --- a/gtk/gtkclist.c +++ b/gtk/gtkclist.c @@ -142,8 +142,10 @@ enum enum { ARG_0, - ARG_HADJUSTMENT, - ARG_VADJUSTMENT + ARG_N_COLUMNS, + ARG_SHADOW_TYPE, + ARG_SELECTION_MODE, + ARG_ROW_HEIGHT }; static void sync_selection (GtkCList * clist, @@ -159,6 +161,9 @@ static void gtk_clist_destroy (GtkObject *object); static void gtk_clist_finalize (GtkObject *object); /* GtkWidget Methods */ +static void gtk_clist_scroll_adjustments (GtkCList *clist, + GtkAdjustment *hadjustment, + GtkAdjustment *vadjustment); static void gtk_clist_realize (GtkWidget *widget); static void gtk_clist_unrealize (GtkWidget *widget); static void gtk_clist_map (GtkWidget *widget); @@ -414,14 +419,36 @@ gtk_clist_class_init (GtkCListClass *klass) parent_class = gtk_type_class (GTK_TYPE_CONTAINER); - gtk_object_add_arg_type ("GtkCList::hadjustment", - GTK_TYPE_ADJUSTMENT, + gtk_object_add_arg_type ("GtkCList::n_columns", + GTK_TYPE_UINT, + GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY, + ARG_N_COLUMNS); + gtk_object_add_arg_type ("GtkCList::shadow_type", + GTK_TYPE_SHADOW_TYPE, GTK_ARG_READWRITE, - ARG_HADJUSTMENT); - gtk_object_add_arg_type ("GtkCList::vadjustment", - GTK_TYPE_ADJUSTMENT, + ARG_SHADOW_TYPE); + gtk_object_add_arg_type ("GtkCList::selection_mode", + GTK_TYPE_SELECTION_MODE, GTK_ARG_READWRITE, - ARG_VADJUSTMENT); + ARG_SELECTION_MODE); + gtk_object_add_arg_type ("GtkCList::row_height", + GTK_TYPE_UINT, + GTK_ARG_READWRITE, + ARG_ROW_HEIGHT); + + object_class->set_arg = gtk_clist_set_arg; + object_class->get_arg = gtk_clist_get_arg; + object_class->destroy = gtk_clist_destroy; + object_class->finalize = gtk_clist_finalize; + + + widget_class->scroll_adjustments_signal = + gtk_signal_new ("scroll_adjustments", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (GtkCListClass, scroll_adjustments), + gtk_marshal_NONE__POINTER_POINTER, + GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT); clist_signals[SELECT_ROW] = gtk_signal_new ("select_row", @@ -533,15 +560,8 @@ gtk_clist_class_init (GtkCListClass *klass) GTK_SIGNAL_OFFSET (GtkCListClass, abort_column_resize), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); - - gtk_object_class_add_signals (object_class, clist_signals, LAST_SIGNAL); - object_class->set_arg = gtk_clist_set_arg; - object_class->get_arg = gtk_clist_get_arg; - object_class->destroy = gtk_clist_destroy; - object_class->finalize = gtk_clist_finalize; - widget_class->realize = gtk_clist_realize; widget_class->unrealize = gtk_clist_unrealize; widget_class->map = gtk_clist_map; @@ -566,6 +586,7 @@ gtk_clist_class_init (GtkCListClass *klass) container_class->focus = gtk_clist_focus; container_class->set_focus_child = gtk_clist_set_focus_child; + klass->scroll_adjustments = gtk_clist_scroll_adjustments; klass->select_row = real_select_row; klass->unselect_row = real_unselect_row; klass->undo_selection = real_undo_selection; @@ -797,19 +818,22 @@ gtk_clist_set_arg (GtkObject *object, guint arg_id) { GtkCList *clist; - GtkAdjustment *adjustment; clist = GTK_CLIST (object); switch (arg_id) { - case ARG_HADJUSTMENT: - adjustment = GTK_VALUE_POINTER (*arg); - gtk_clist_set_hadjustment (clist, adjustment); + case ARG_N_COLUMNS: /* construct-only arg, only set when !GTK_CONSTRUCTED */ + gtk_clist_construct (clist, MAX (1, GTK_VALUE_UINT (*arg)), NULL); + break; + case ARG_SHADOW_TYPE: + gtk_clist_set_shadow_type (clist, GTK_VALUE_ENUM (*arg)); break; - case ARG_VADJUSTMENT: - adjustment = GTK_VALUE_POINTER (*arg); - gtk_clist_set_vadjustment (clist, adjustment); + case ARG_SELECTION_MODE: + gtk_clist_set_selection_mode (clist, GTK_VALUE_ENUM (*arg)); + break; + case ARG_ROW_HEIGHT: + gtk_clist_set_row_height (clist, GTK_VALUE_UINT (*arg)); break; default: break; @@ -827,11 +851,17 @@ gtk_clist_get_arg (GtkObject *object, switch (arg_id) { - case ARG_HADJUSTMENT: - GTK_VALUE_POINTER (*arg) = clist->hadjustment; + case ARG_N_COLUMNS: + GTK_VALUE_UINT (*arg) = clist->columns; + break; + case ARG_SHADOW_TYPE: + GTK_VALUE_ENUM (*arg) = clist->shadow_type; + break; + case ARG_SELECTION_MODE: + GTK_VALUE_ENUM (*arg) = clist->selection_mode; break; - case ARG_VADJUSTMENT: - GTK_VALUE_POINTER (*arg) = clist->vadjustment; + case ARG_ROW_HEIGHT: + GTK_VALUE_UINT (*arg) = GTK_CLIST_ROW_HEIGHT_SET (clist) ? clist->row_height : 0; break; default: arg->type = GTK_TYPE_INVALID; @@ -909,13 +939,13 @@ gtk_clist_construct (GtkCList *clist, gint columns, gchar *titles[]) { - int i; - g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); - g_return_if_fail (GTK_CLIST_CONSTRUCTED (clist) == FALSE); + g_return_if_fail (columns > 0); + g_return_if_fail (GTK_OBJECT_CONSTRUCTED (clist) == FALSE); - GTK_CLIST_SET_FLAG (clist, CLIST_CONSTRUCTED); + /* mark the object as constructed */ + gtk_object_constructed (GTK_OBJECT (clist)); /* initalize memory chunks, if this has not been done by any * possibly derived widget @@ -945,6 +975,8 @@ gtk_clist_construct (GtkCList *clist, if (titles) { + guint i; + GTK_CLIST_SET_FLAG (clist, CLIST_SHOW_TITLES); for (i = 0; i < columns; i++) gtk_clist_set_column_title (clist, i, titles[i]); @@ -965,17 +997,16 @@ gtk_clist_construct (GtkCList *clist, * gtk_clist_set_shadow_type * gtk_clist_set_border *** deprecated function *** * gtk_clist_set_selection_mode - * gtk_clist_set_policy * gtk_clist_freeze * gtk_clist_thaw */ -GtkWidget * +GtkWidget* gtk_clist_new (gint columns) { return gtk_clist_new_with_titles (columns, NULL); } -GtkWidget * +GtkWidget* gtk_clist_new_with_titles (gint columns, gchar *titles[]) { @@ -983,6 +1014,7 @@ gtk_clist_new_with_titles (gint columns, widget = gtk_type_new (GTK_TYPE_CLIST); gtk_clist_construct (GTK_CLIST (widget), columns, titles); + return widget; } @@ -1086,6 +1118,17 @@ gtk_clist_get_vadjustment (GtkCList *clist) return clist->vadjustment; } +static void +gtk_clist_scroll_adjustments (GtkCList *clist, + GtkAdjustment *hadjustment, + GtkAdjustment *vadjustment) +{ + if (clist->hadjustment != hadjustment) + gtk_clist_set_hadjustment (clist, hadjustment); + if (clist->vadjustment != vadjustment) + gtk_clist_set_vadjustment (clist, vadjustment); +} + void gtk_clist_set_shadow_type (GtkCList *clist, GtkShadowType type) @@ -1104,6 +1147,8 @@ void gtk_clist_set_border (GtkCList *clist, GtkShadowType border) { + g_message ("gtk_clist_set_border() is deprecated"); + gtk_clist_set_shadow_type (clist, border); } @@ -1141,15 +1186,6 @@ gtk_clist_set_selection_mode (GtkCList *clist, } void -gtk_clist_set_policy (GtkCList *clist, - GtkPolicyType vscrollbar_policy, - GtkPolicyType hscrollbar_policy) -{ - g_return_if_fail (clist != NULL); - g_return_if_fail (GTK_IS_CLIST (clist)); -} - -void gtk_clist_freeze (GtkCList *clist) { g_return_if_fail (clist != NULL); @@ -1335,7 +1371,9 @@ gtk_clist_set_column_title (GtkCList *clist, break; } + gtk_widget_push_composite_child (); label = gtk_label_new (clist->column[column].title); + gtk_widget_pop_composite_child (); gtk_container_add (GTK_CONTAINER (alignment), label); gtk_container_add (GTK_CONTAINER (clist->column[column].button), alignment); gtk_widget_show (label); @@ -1959,7 +1997,9 @@ column_button_create (GtkCList *clist, { GtkWidget *button; + gtk_widget_push_composite_child (); button = clist->column[column].button = gtk_button_new (); + gtk_widget_pop_composite_child (); if (GTK_WIDGET_REALIZED (clist) && clist->title_window) gtk_widget_set_parent_window (clist->column[column].button, @@ -1995,25 +2035,38 @@ column_button_clicked (GtkWidget *widget, void gtk_clist_set_row_height (GtkCList *clist, - gint height) + guint height) { + GtkWidget *widget; + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); + widget = GTK_WIDGET (clist); + if (height > 0) - clist->row_height = height; + { + clist->row_height = height; + GTK_CLIST_SET_FLAG (clist, CLIST_ROW_HEIGHT_SET); + } else - return; + { + GTK_CLIST_UNSET_FLAG (clist, CLIST_ROW_HEIGHT_SET); + clist->row_height = 0; + } - GTK_CLIST_SET_FLAG (clist, CLIST_ROW_HEIGHT_SET); - if (GTK_WIDGET_REALIZED (clist)) { - GdkFont *font; - - font = GTK_WIDGET (clist)->style->font; - clist->row_center_offset = (((height + font->ascent - font->descent - 1) - / 2) + 1.5); + if (!GTK_CLIST_ROW_HEIGHT_SET (clist)) + { + clist->row_height = (widget->style->font->ascent + + widget->style->font->descent + 1); + clist->row_center_offset = widget->style->font->ascent + 1.5; + } + else + clist->row_center_offset = 1.5 + (clist->row_height + + widget->style->font->ascent - + widget->style->font->descent - 1) / 2; } if (!GTK_CLIST_FROZEN (clist)) @@ -4077,11 +4130,13 @@ gtk_clist_destroy (GtkObject *object) /* unref adjustments */ if (clist->hadjustment) { + gtk_signal_disconnect_by_data (GTK_OBJECT (clist->hadjustment), clist); gtk_object_unref (GTK_OBJECT (clist->hadjustment)); clist->hadjustment = NULL; } if (clist->vadjustment) { + gtk_signal_disconnect_by_data (GTK_OBJECT (clist->vadjustment), clist); gtk_object_unref (GTK_OBJECT (clist->vadjustment)); clist->vadjustment = NULL; } |