Commit Graph

55 Commits

Author SHA1 Message Date
Tim Janik
e63d08e43f call the base class init fucntions from all parent types upon class
Sun Jun 28 04:29:10 1998  Tim Janik  <timj@gtk.org>

	* gtk/gtktypeutils.c (gtk_type_class_init): call the base class init
	fucntions from all parent types upon class initialization.

	* gtk/gtkcontainer.c:
 	(gtk_container_get_type): announce gtk_container_base_class_init to
 	the type system.
	(gtk_container_base_class_init): new function to feature base class
	initialization.
	(gtk_container_get_child_arg):
	(gtk_container_set_child_arg): call the GtkContainerClass get_child_arg
	and set_child_arg methods of the class indicated through the argument
	name.

	* gtk/gtkobject.c:
	(gtk_object_base_class_init): new function to feature base class
 	initialization.
	(gtk_object_init_type): announce gtk_object_base_class_init to the type
	system.
	(gtk_object_class_init): setup the get_arg and set_arg pointers for
	GtkObjectClass.
	(gtk_object_setv):
 	(gtk_object_getv): call the GtkObjectClass get_arg and set_arg methods,
 	instead of bothering the type system with this.

	* gtk/gtkaccellabel.c:
	* gtk/gtkbutton.c:
	* gtk/gtkradiobutton.c:
	* gtk/gtktable.c:
	* gtk/gtktogglebutton.c:
	* gtk/gtktipsquery.c:
	* gtk/gtkbox.c:
	* gtk/gtkpacker.c:
	* gtk/gtkwidget.c:
	* gtk/gtkwindow.c:
	* gtk/gtkframe.c:
	* gtk/gtkmisc.c:
	* gtk/gtklabel.c: set the object_class->{g|s}et_arg pointers to the
	corresponding gtk_*_{g|s]et_arg functions and updated the gtk_*_get_type
	functions wrt GtkTypeInfo initialization. changed a lot of the set/get
	arg functions to take a GtkObject argument.

	gtk/gtkadjustment.c:
	gtk/gtkalignment.c:
	gtk/gtkarrow.c:
	gtk/gtkaspectframe.c:
	gtk/gtkbbox.c:
	gtk/gtkbin.c:
	gtk/gtkcheckbutton.c:
	gtk/gtkcheckmenuitem.c:
	gtk/gtkclist.c:
	gtk/gtkcolorsel.c:
	gtk/gtkcombo.c:
	gtk/gtkctree.c:
	gtk/gtkcurve.c:
	gtk/gtkdata.c:
	gtk/gtkdialog.c:
	gtk/gtkdrawingarea.c:
	gtk/gtkeditable.c:
	gtk/gtkentry.c:
	gtk/gtkeventbox.c:
	gtk/gtkfilesel.c:
	gtk/gtkfixed.c:
	gtk/gtkfontsel.c:
	gtk/gtkgamma.c:
	gtk/gtkhandlebox.c:
	gtk/gtkhbbox.c:
	gtk/gtkhbox.c:
	gtk/gtkhpaned.c:
	gtk/gtkhruler.c:
	gtk/gtkhscale.c:
	gtk/gtkhscrollbar.c:
	gtk/gtkhseparator.c:
	gtk/gtkimage.c:
	gtk/gtkinputdialog.c:
	gtk/gtkitem.c:
	gtk/gtkitemfactory.c:
	gtk/gtklist.c:
	gtk/gtklistitem.c:
	gtk/gtkmenu.c:
	gtk/gtkmenubar.c:
	gtk/gtkmenuitem.c:
	gtk/gtkmenushell.c:
	gtk/gtknotebook.c:
	gtk/gtkoptionmenu.c:
	gtk/gtkpaned.c:
	gtk/gtkpixmap.c:
	gtk/gtkpreview.c:
	gtk/gtkprogressbar.c:
	gtk/gtkradiomenuitem.c:
	gtk/gtkrange.c:
	gtk/gtkruler.c:
	gtk/gtkscale.c:
	gtk/gtkscrollbar.c:
	gtk/gtkscrolledwindow.c:
	gtk/gtkseparator.c:
	gtk/gtkspinbutton.c:
	gtk/gtkstatusbar.c:
	gtk/gtktext.c:
	gtk/gtktoolbar.c:
	gtk/gtktooltips.c:
	gtk/gtktree.c:
	gtk/gtktreeitem.c:
	gtk/gtkvbbox.c:
	gtk/gtkvbox.c:
	gtk/gtkviewport.c:
	gtk/gtkvpaned.c:
	gtk/gtkvruler.c:
	gtk/gtkvscale.c:
	gtk/gtkvscrollbar.c:
	gtk/gtkvseparator.c: updated the GtkTypeInfo initialization code to
	match the modified GtkTypeInfo structure.
1998-06-28 07:46:10 +00:00
Tim Janik
9860caa539 new function gtk_container_child_arg_set, similar to
Wed Jun 24 14:14:32 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkcontainer.c: new function gtk_container_child_arg_set, similar
        to gtk_container_child_arg_setv, but takes a variable argument list.
        new function gtk_container_get_child_arg_type, which is needed by
        gtk_object_collect_args.

        * gtk/gtkobject.c: changed prototype for gtk_object_collect_args, to
        take a function pointer to figure the argument type.
        adapted callers to pass gtk_object_get_arg_type.
        * gtk/gtkwidget.c: adapted gtk_object_collect_args callers to pass
        gtk_object_get_arg_type..

        * gtk/gtkpacker.h:
        * gtk/gtkpacker.c:
        (gtk_packer_reorder_child): new function to change the packing order
        of a child.
        (gtk_packer_size_request):
        (gtk_packer_size_allocate): take container->border_width into acount.

        * gtk/gtkpacker.c: implemented widget arguments:
        "GtkPacker::spacing", "GtkPacker::border_width", "GtkPacker::pad_x",
        "GtkPacker::pad_y", "GtkPacker::ipad_x", "GtkPacker::ipad_y".
        implemented child arguments:
        "GtkPacker::side", "GtkPacker::anchor", "GtkPacker::expand",
        "GtkPacker::fill_x", "GtkPacker::fill_y", "GtkPacker::use_default",
        "GtkPacker::border_width", "GtkPacker::pad_x", "GtkPacker::pad_y",
        "GtkPacker::ipad_x", "GtkPacker::ipad_y", "GtkPacker::position".

        * gtk/gtkmisc.c (gtk_misc_set_arg): for padding args, set the padding,
        not the alignment.

        * gtk/gtkeventbox.h:
        * gtk/gtkeventbox.c: GtkType and macro fixups.

        * gtk/testgtk.c (entry_toggle_sensitive): new function to toggle
        sensitivity of an entry.

        * gtk/gtkstyle.c (gtk_style_new): support normal grey as default color
        for insensitive base.

        * gtk/gtkentry.c (gtk_entry_realize): set the window backgrounds
        widget state dependent.
        (gtk_entry_style_set): likewise.
        (gtk_entry_state_changed): set background color on state changes.
        (gtk_entry_draw_text): for non selected text, use state dependent
        colors.

        * gtk/gtktogglebutton.c: support for widget arguments
        "GtkToggleButton::active" and "GtkToggleButton::draw_indicator".
1998-06-24 12:22:23 +00:00
Tim Janik
3c90c2cd53 replaced some gtk_object_data_force_id with g_quark_from_static_string
Fri Jun 19 03:29:04 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkaccelgroup.c:
        * gtk/gtkbindings.c:
        * gtk/gtkcontainer.c:
        * gtk/gtkitemfactory.c:
        * gtk/gtkobject.c:
        * gtk/gtksignal.c:
        * gtk/gtkwidget.c: replaced some gtk_object_data_force_id with
        g_quark_from_static_string calls to save memory.

        * gtk/gtkobject.c (gtk_object_set_data_by_id_full): invoke the destroy
        function _after_ the new data has been setup.
        minor changes to object data functions to feature the GQuark type.
1998-06-19 02:07:47 +00:00
Tim Janik
742d01908f boy! did i really modify that many files?
anyways, here go the child args and a lot of cleanups ;)
you wouldn't want me to put the ChangeLog entry in here, would you?
1998-06-16 05:20:05 +00:00
Owen Taylor
2cabeeb1c3 Removed g_object_pointer_hash, which was just g_direct_hash.
Tue Jun  9 18:44:57 1998  Owen Taylor  <otaylor@gtk.org>

	* gtk/gtkobject.c: Removed g_object_pointer_hash, which
	was just g_direct_hash.

Mon May 25 19:54:20 1998  Owen Taylor  <otaylor@gtk.org>

	* configure.in: x_libs=, not $x_libs=. Enough said.
          (Case only hit for --disable-xshm)

Mon May 25 12:08:14 1998  Owen Taylor  <otaylor@gtk.org>

	* configure.in (LDFLAGS): Add to $CFLAGS and $LDFLAGS
	  when testing for X libraries, don't replace them. Because
	  the user might have specified the path to the X libraries
	  themself before running configure.

	* examples/**.c: Changed all gpointer * to gpointer

Sat May 23 21:54:05 1998  Owen Taylor  <otaylor@gtk.org>

	* configure.in (LDFLAGS): Bomb out with a moderately
	  helpful message if detection of X libraries fails.

Sat May 23 18:57:06 1998  Owen Taylor  <otaylor@gtk.org>

  [ Combination of:
     gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
     gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]

	* gdk/gdk.h gdk/gdkcc.c gdk/gdkfont.c gtk/gtkmain.c
	  gtk/gtksignal.c gtk/gtktext.c:

	  Fixups for warnings from adding const to type of GHashFunc,
	  GCompareFunc

	* gtk/gtkcombo.c (gtk_combo_entry_key_press): Minor style/
	  ansi-warnings fixups.

Tue Jun  9 17:47:33 1998  Owen Taylor  <otaylor@gtk.org>

	* glib.h: Remove #error - HP/UX.

Sat May 23 19:00:01 1998  Owen Taylor  <otaylor@gtk.org>
  [ Combination of:
     gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
     gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]

	* glib.h ghash.c gstring.c gdataset.c gutils.c:
	- Added new typedef g_const_pointer; expunged all incorrect
	  uses of 'const gpointer'.
	- Fixed up warnings that that created,
	- Changed GHashFunc and GCompareFunc to take g_const_pointer
	  arguments. (Necessary, but will cause warnings in existing
	  code until fixed)
	- Added other new const in harmless positions.
1998-06-09 23:18:11 +00:00
Tim Janik
a21d063ef8 new functions gtk_selection_data_copy and gtk_selection_data_free.
Tue Jun  9 01:57:23 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkselection.h:
        * gtk/gtkselection.c: new functions gtk_selection_data_copy and
        gtk_selection_data_free.

        * gtk/gtkwidget.c (gtk_widget_class_init): fixed gtk_signal_new() call
        for "selection_received", which was completely bogus.
        * other fixups to gtk_signal_new() calls all over the place.

        * gtk/gtktypebuiltins.h: types as variables (formerly macros).
        * gtk/gtktypebuiltins_vars.c: type variable implementations.
        * gtk/gtktypebuiltins_ids.c: array entries for builtin type
        declarations.
        * gtk/gtktypebuiltins_evals.c: enum value arrays.
        * gtk/gtk-boxed.defs: gtk and gdk structure definitions, used to build
        gtk.defs.
        * gtk/gtk.defs: generated file with scheme syntax for type definitions
        of gtk and gdk structures and enums.
        * gtk/gtktypeutils.h:
        * gtk/gtktypeutils.c: reworked type ids, so they are variables not
        macros anymore (this fixes binary incompatibility with new enum
        definitions).

        * gtk/gtkwidget.c (gtk_widget_real_key_press_event): proccess possible
        key bindings for this widget.
        * gtk/gtkwindow.c (gtk_window_key_press_event): chain parent class'
        handler.

        * gtk/gtkobject.h:
        * gtk/gtkobject.c: removed gtk_object_class_new_user_signal_no_recurse()
        again. new functions gtk_object_class_user_signal_new () and
        gtk_object_class_user_signal_newv (), to feature the GtkSignalRunType
        flag on the signal creation.
Mon Jun  8 20:52:21 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkcontainer.h: new signal GtkContainer::set_focus_child.
1998-06-09 07:11:55 +00:00
Tim Janik
a391196ba5 fixed an assertment.
Sat Jun  6 06:01:24 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtksignal.c (gtk_signal_emitv): fixed an assertment.

        * gtk/makeenums.awk: a script to generate the GtkEnumValue arrays from,
        this should eventually be done by gentypeinfo.el somewhen.
        * gtk/gtkenumvalues.c: new generated file to hold GtkEnumValue arrays.

        * gtk/gtktypeutils.h: new function gtk_enum_values() to retrive all the
        enum values of an enum type.

        * gtk/gtk.defs:
        * gtk/gtkcurve.h:
        * gtk/gtkobject.h:
        * gtk/gtkprivate.h:
        * gtk/gtkwidget.h:
        * gtk/gtkenums.h:
        brought enum/flags definitions in sync, added a few more enum
        definitions for bindings and pattern matching.

        * some more macro and GtkType fixups in various places.

        * gdk/gdktypes.h (enum): added a new value GDK_AFTER_MASK, which is used
        as a key-release modifier for the binding system.

Fri Jun  5 06:06:06 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkmenu.h (struct _GtkMenu): removed GList*children, since it
        was a stale list pointer that is already present in GtkMenuShell.

        * gtk/gtkmenushell.h (struct _GtkMenuShellClass): added a signal
        GtkMenuShell::selection_done which is emitted after the menu shell
        poped down again and all possible menu items have been activated.

Thu Jun  4 02:20:42 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkmenushell.c (gtk_menu_shell_button_release): flush the x-queue
        before activation of the menuitem, so the menu is actually taken off the
        screen prior to any menu item activation.

        * gtk/gtkctree.c (gtk_ctree_get_row_data): allow function invokation
        for NULL nodes.

        * gtk/gtkwidget.h:
        * gtk/gtkwidget.c: new function gtk_widget_stop_accelerator to stop
        the emission of the "add-accelerator" signal on a widget. this is
        usefull to prevent accelerator installation on certain widgets.

        * gtk/gtknotebook.c (gtk_notebook_menu_item_create): keep the menu
        labels left justified, by setting their alignment. stop accelerator
        installation for the menu items, since we use dynamic menus.

Wed Jun  3 06:41:22 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkmenufactory.c: adaptions to use the new accel groups. people
        should *really* use GtkItemFactory. this is only for preserving source
        compatibility where possible, use of GtkMenuFactory is deprecated as of
        now.

        * gtk/gtkobject.h (gtk_object_class_add_user_signal): new function
        to create user signals of type GTK_RUN_NO_RECURSE. don't know why i
        missed this possibility when i added gtk_object_class_add_user_signal
        in late january.

        * gtk/gtkmain.c (gtk_init): ignore subsequent function calls.

Sun May 31 07:31:09 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkaccelgroup.h:
        * gtk/gtkaccelgroup.c: new implementation of the accelerator concept.

        * gtk/gtkaccellabel.h:
        * gtk/gtkaccellabel.c: new widget derived from GtkLabel whitch features
        display of the accelerators associated with a certain widget.

        * gtk/gtkitemfactory.h:
        * gtk/gtkitemfactory.c: new widget, item factory with automatic rc
        parsing and accelerator handling.

        * gtk/gtkmenu.c (gtk_menu_reposition): new function to care for
        positioning a menu.
        (gtk_menu_map): removed the allocation code.
        (gtk_menu_size_allocate): care for redrawing of children and resize
        our widget->window correctly.
        (gtk_menu_key_press): feature the new accelerator groups.

        * gtk/gtkmenuitem.c (gtk_menu_item_size_allocate): reposition the
        submenu if neccessary.

        * gtk/gtkmenuitem.c:
        * gtk/gtkcheckmenuitem.c:
        * gtk/gtkradiomenuitem.c: use GtkAccelLabel in the *_new_with_label()
        function variants.

        * gdk/gdk.c:
        (gdk_keyval_from_name):
        (gdk_keyval_name): new functions for keyval<->key-name associations.
        (gdk_keyval_to_upper):
        (gdk_keyval_to_lower):
        (gdk_keyval_is_upper):
        (gdk_keyval_is_lower): new functions to check/translate keyvalues with
        regards to their cases.

Wed May 27 00:48:10 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkwidget.c (gtk_widget_class_path): new function to calculate a
        widget's class path.
        (gtk_widget_path): new function to calculate a widget's name path.

        * gtk/gtkrc.c: newly introduced GtkPatternSpec structures to speed up
        pattern matching, features reversed pattern matches.
1998-06-07 06:48:56 +00:00
Tim Janik
004f0982e1 typedef gint gboolean; this is needed to provide portability with
Thu May 14 04:14:12 1998  Tim Janik  <timj@gtk.org>

        * glib.h: typedef gint gboolean;
        this is needed to provide portability with big-endian platforms (e.g.
        try sizeof(bool) for c++ on big-endians - it's 4).
        this is also needed to maintain some_union.d_gint==some_union.d_gboolean.
        plus, gint to gboolean casts and vice versa need to be possible without
        loss.

Thu May 14 03:04:43 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtktypeutils.c (gtk_type_free): new function to take care about
        freeing types.
        (gtk_type_set_chunk_alloc): new function to allow allocation of new
        types from a mem_chunk of certain size (n_chunks==0 indicates allocation
        thorugh g_malloc).

        * gtk/gtkobject.c (gtk_object_finalize): free an object through
        gtk_type_free().

        * gtk/gtkbutton.c (gtk_button_get_type): set chunk preallocation for
        GtkButtons to 16.
        * gtk/gtkmenuitem.c (gtk_menu_item_get_type): likewise (16).
        * gtk/gtklabel.c (gtk_label_get_type): likewise (32).
1998-05-14 21:13:18 +00:00
Tim Janik
075cb4320d [security audit by Alan Cox]
Tue May 12 02:31:57 1998  Tim Janik  <timj@gtk.org>

        [security audit by Alan Cox]

        * gtk/gtkobject.c (gtk_object_get_arg_type): check for arg_name to not
        exceed maximum assumed size.

        * gtk/gtkmenufactory.c (gtk_menu_factory_create): check that `path' does
        not exceed maximum assumed size.
        (gtk_menu_factory_remove): likewise.
        (gtk_menu_factory_find_recurse): likewise.
1998-05-12 00:34:28 +00:00
Tim Janik
ad137948b9 compilation fixups 1998-05-11 15:30:05 +00:00
Tim Janik
e8df8ce17b preserve automake CFLAGS.
Mon May 11 09:56:45 1998  Tim Janik  <timj@gtk.org>

        * configure.in (cflags_set): preserve automake CFLAGS.

        * Makefile.am: fully rename the created libraries to libgtk-1.1.la
        and libgdk-1.1.la. this means we need to change certain portions of
        the Makefile.am on major/minor version bumps.

        * ltmain.sh: the -release option is not required anymore.

        * gtk/gtkobject.h (gtk_trace_referencing): compile time check the type
        of the first argument to be of type GtkObject. unconditionally compile
        this function. removed __GNUC__ dependancy of the gtk_object_ref and
        gtk_object_unref macro wrappers for this function.

Mon May 11 09:53:43 1998  Tim Janik  <timj@gtk.org>

        * configure.in: preserve automake CFLAGS.

        * Makefile.am: fully rename the created library to libglib-1.1.la.
        this means we need to change certain portions of the Makefile.am on
        major/minor version bumps.

        * ltmain.sh: the -release option is not required anymore.

        * glib.h: provide G_GNUC_FUNCTION and G_GNUC_PRETTY_FUNCTION to
        avoid conditionals. unconditionally define NULL, TRUE, FALSE, MAX,
        MIN, ABS and CLAMP, these macros might be screwed from other headers.
1998-05-11 08:31:16 +00:00
Tim Janik
01003779e9 new file, gdatasets implement the object data mechanism from GtkObject. a
Mon May 11 01:44:10 1998  Tim Janik  <timj@gtk.org>

        * gdataset.c: new file, gdatasets implement the object data
        mechanism from GtkObject. a generic data pointer is associated with
        a certain location and a key id.

Mon May 11 02:31:19 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkobject.h:
        * gtk/gtkobject.c:
        (gtk_object_data_try_key):
        (gtk_object_data_force_id): these are now macros substituting the old
        functions. we just use the corresponding g_dataset_* functions for
        key->id associations. (this is to assure unique key<->id associations).
1998-05-11 00:48:44 +00:00
Tim Janik
142c848308 reflect the presence of signal connections through unsetting
Sat May  9 00:03:12 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtksignal.c (gtk_signal_handler_unref): reflect the presence of
        signal connections through unsetting GTK_CONNECTED.
        (gtk_signal_handler_insert): reflect the presence of signal connections
        through setting GTK_CONNECTED.
        (gtk_signal_real_emit): only check for handler emissions if the object
        has the GTK_CONNECTED flag set.
        (gtk_signal_handler_pending): don't check for pending handlers if the
        GTK_CONNECTED flag is not set for this object.

        * gtk/gtkobject.h (enum): new flag GTK_CONNECTED to indicate whether
        a GtkObject has signal handler connections.

        * gtk/gtkobject.c (gtk_object_real_destroy): only if GTK_CONNECTED is
        set for this object call gtk_signal_handlers_destroy().

        * gtk/gtktypeutils.h (GTK_TYPE_IS_A): deprecated macro, since it caused
        multiple processing of macro args.

        * gtk/gtktypeutils.c:
        * gtk/gtkobject.c:
        * gtk/gtkwidget.c:
        * gtk/gtksignal.c: reverted GTK_TYPE_IS_A back to gtk_type_is_a.
1998-05-08 23:20:48 +00:00
Tim Janik
2934f4f58c allocate object data chunks through a global object data structure list.
Thu May  7 12:52:45 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkobject.c (gtk_object_set_data_by_id_full): allocate object
                data chunks through a global object data structure list. unlink
                        object data before invoking its destroy function.
                                (gtk_object_finalize): slight modification to allow usage of object
                                        data during object finalization.
1998-05-07 11:12:57 +00:00
Tim Janik
518a8a9c4e reimplemented the signal storage system to use a linear array rather than
Wed May  6 02:16:34 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtksignal.c: reimplemented the signal storage system to use a
        linear array rather than a hash table.
        be carefull *not* to keep any GtkSignal pointers across invokations
        of gtk_signal_next_and_invalidate() and therefore gtk_signal_new[v]().
        general code cleanups, made all allocations through memchunks.
        (gtk_signal_lookup): we now do the lookup of signals through a key_id
        for the signal names to avoid multiple hashing of the signal name on
        lookups for the several hirarchy levels of an object.

Tue May  5 15:33:27 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkmain.c (gtk_init): added gtk_signal_init() to avoid repeatedly
        checking for signal initialization in gtksignal.c.

        * gtk/gtktypeutils.c (TYPE_NODES_BLOCK_SIZE): reseted this to 200 after
        a long debugging period ;)

Mon May  4 00:30:11 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtktypeutils.h (GTK_TYPE_IS_A): new macro to speedup
        gtk_type_is_a().
        * gtk/gtktypeutils.c: reimplemented the type storage system to use a
        linear array rather than a hash table. it actually speeded up testgtk
        for a *considerable* amount. be carefull *not* to keep any GtkTypeNode
        pointers across invokations of gtk_type_node_next_and_invalidate() and
        therefore gtk_type_unique()!

        * gtk/gtkobject.h (GTK_IS_OBJECT_CLASS): new macro to test for the
        inheritance of a class pointer.
        (GTK_OBJECT): modifications for speedups.
        (GTK_IS_OBJECT): likewise.
        (GTK_OBJECT_CLASS): likewise.
        (suggested by owen).

        * gtk/gtkcontainer.h (GTK_IS_CONTAINER_CLASS): new macro.

        * gtk/gtkwidget.h (GTK_IS_WIDGET_CLASS): new macro.

        * gtk/gtk.defs (GtkTooltips): define GtkTooltips as object not as boxed,
        since its derivation changed 4 month ago ;(. showed up with the unique
        type name checking code in gtk_type_unique().

        * random guint->GtkType and macro fixups.
1998-05-06 01:43:56 +00:00
Owen Taylor
4851efe296 configure.in acheader.h gdk/gdkwindow.c Check for Shape extension both on
Sun May  3 13:38:22 1998  Owen Taylor  <otaylor@gtk.org>

	* configure.in acheader.h gdk/gdkwindow.c
	Check for Shape extension both on the client and server
	side. (And, more importantly, check for the shape extension
	so we may include -lXext even when compiling with --disable-xshm)

	Don't set override_redirect on all shaped windows. It isn't
	necessary.

	* gdk/gdkwindow.c: Set ->colormap to NULL for root
	and foreign windows. Use this to check if we
	need to get the colormap from X.

Fri May  1 22:32:47 1998  Owen Taylor  <otaylor@gtk.org>

	* gtk/gtkbutton.c (gtk_button_paint): Draw the areas
	between the default and the button always in GTK_STATE_NORMAL.

	* gtk/gtkrange.c (gtk_range_style_set): Added a style_set
	callback.

Fri May  1 16:40:57 1998  Owen Taylor  <otaylor@gtk.org>

	* gdk/gdkpixmap.c (gdk_pixmap_colormap_create_from_xpmp[_d]):
	  Fix a buffer overflow on pixmaps that claim to have
	  more than 31 characters per pixel.

	  (gdk_pixmap_read_string): Don't wrap around strings longer
 	  than half of address space ;-)

	* gtk/gtk[vh]ruler.c gtk/gtkinputdialog.c: Expand some buffers
	that were used for printing integers.

	* */* (almost):

	Style: All
	  int foo () { ... }
	changed to
	  int foo (void) { ... }

^^^^^^^ This is why some many files changed

	Even where there were proper prototypes elsewhere.

	* gdk/gxid.c (handle_claim_device): Some extra checks.
	It isn't safe against being fed bad X id's, but at
	least it should be safe against deleting all your
	files.
1998-05-03 22:41:32 +00:00
Owen Taylor
05bc6a5b36 Merged changes from gtk-1-0. Check ChangeLog for details. 1998-05-01 04:23:59 +00:00
PDT 1998 Shawn T. Amundson
92006c8e78 Changed LGPL address for FSF in all .h and .c files
Sun Apr 12 18:54:29 PDT 1998 Shawn T. Amundson <amundson@gtk.org>

        * Changed LGPL address for FSF in all .h and .c files
1998-04-13 02:02:47 +00:00
Owen Taylor
70b3b3e6e1 Try to guess if we can use the mb* functions safely. (For glibc, they do
Tue Mar 17 01:55:00 1998  Owen Taylor  <owt1@cornell.edu>

	* gtk/gtkmain.c gtk/gtkentry.c: Try to guess if we can
	  use the mb* functions safely. (For glibc, they do
	  UTF-8). Heuristic is (X_LOCALE && locale != C/POSIX)
	  || (mblen("\xc0", MB_CUR_MAX) == 1).

	(From: "Richard Lloyd" <rkl@csc.liv.ac.uk>)

	* gdk/gdk.c (gdk_ic_get_attr): Use an intermediate
	  variable to avoid taking the address of the result
	  of va_arg.

	* gtk/gtkentry.c gtk/gtkeditable.c gtkobject.c
	  gtk/testselection.c: signedness fixups

	* gtk/gtkcontainer.c: Fixed implicit cast between
	  gpointer and func pointer by changing.

	* gtk/gtkcombo.c, gtk/gtkentry.c, gtk/gtktext.c:
	  static void forward declaration vs. void actual fixed

	* gtk/testgtk.c: Limit total number of tree items to 10,000
1998-03-17 19:03:52 +00:00
Tim Janik
16c6ee03ae removed the ugly check whether we need gtk_widget_destroy or
Sun Mar 15 20:13:42 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkmain.c (gtk_quit_destructor): removed the ugly check whether
                we need gtk_widget_destroy or gtk_object_destroy. these functions are
                        by no means allowed to act differently!

                                * gtk/gtkmisc.c (gtk_misc_set_alignment): check for _DRAWABLE instead
                                        of _VISIBLE to operate on widget->window.
                                                (gtk_misc_set_padding): likewise.

                                                        * gtk/gtkwidget.c: slightly reordered object arguments.

                                                                * gtk/gtkobject.c (gtk_object_setv):
                                                                        * gtk/gtkobject.c (gtk_object_getv):
                                                                                operator `!' has precedence over `&'.
1998-03-15 21:14:28 +00:00
Tim Janik
c86bf9bae2 refuse to allocate with a greater height than requested.
Sat Mar 14 08:29:56 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkhandlebox.c (gtk_handle_box_size_allocate): refuse to allocate
                with a greater height than requested.
                        (gtk_handle_box_remove): clean up if the child is detached.

                                * gtk/gtktoolbar.c (gtk_toolbar_size_allocate): don't take invisible
                                        children into account.
1998-03-14 08:15:23 +00:00
Tim Janik
8cde2c5c21 gpointer gtk_object_get_user_data (GtkObject *object) { if
gpointer
gtk_object_get_user_data (GtkObject *object)
{
  if (user_data_key_id)
-    gtk_object_get_data_by_id (object, user_data_key_id);
+    return gtk_object_get_data_by_id (object, user_data_key_id);

  return NULL;
}

boy oh boy, that was a *neat* one ;)
-timj
1998-03-14 06:22:28 +00:00
Tim Janik
294cfcdb22 make use of *_by_id() functions for handler key.
Sat Mar 14 02:03:13 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtksignal.c: make use of *_by_id() functions for handler key.

        * gtk/gtkwidget.c: make use of *_by_id() functions for a bunch of keys.
        (gtk_widget_shutdown): new function to perform pre-destruction shutdown
        of the widget.
        (gtk_widget_unparent): call gtk_widget_set_parent_window(widget,NULL)

        * gtk/gtkobject.h:
        * gtk/gtkobject.c: GtkObject destruction is now split into an internally
        used shutdown class method and the usual GtkObject::destroy signal
        emission. this allowes for class based shutdown functionality prior
        to actuall object destruction.
        added *_by_id() counterparts for gtk_object_data_* functions, meant for
        internal use only.

        * gtk/gtkmain.c (gtk_quit_add_destroy): new function which will destroy
        a GtkObject once gtk_main() of a certain level finishes. it is save to
        destroy the object prior to that, gtk_quit_add_destroy will only destroy
        objects that are still existing.
1998-03-14 04:43:14 +00:00
Tim Janik
a8afd462c0 applied gtk-shige-980311-0.patch.gz, which removes the erronerous
Thu Mar 12 07:43:33 1998  Tim Janik  <timj@gimp.org>

        * gdk/gdk.h:
        * gdk/gdkvisual.c: applied gtk-shige-980311-0.patch.gz, which removes
        the erronerous gdk_query_visuals() function in favour of
        gdk_list_visuals() which does a correct job.

        * gtk/gtkcontainer.h: applied gtk-draco-980311-0.patch.gz which fixes
        a class cast check.

        * gtk/gtkspinbutton.c: applied gtk-hamann_jeske-980312-0.patch.gz about
        '+' sign acceptance.

        * gtk/gtknotebook.c: applied gtk-hamann_jeske-980311-1.patch.gz which
        cares about delayed tab label creation.
1998-03-12 07:28:41 +00:00
Tim Janik
d187183161 made the <widget>_signals[] arrays of type guint rather than gint. made
Mon Mar  9 15:48:10 1998  Tim Janik  <timj@gimp.org>

        * Signal signedness and naming corrections, plus GtkType fixes:

        * gtk/gtkadjustment.c:
        * gtk/gtkbutton.c:
        * gtk/gtkcheckmenuitem.c:
        * gtk/gtkclist.c:
        * gtk/gtkcolorsel.c:
        * gtk/gtkcontainer.c:
        * gtk/gtkcurve.c:
        * gtk/gtkdata.c:
        * gtk/gtkeditable.c:
        * gtk/gtkentry.c:
        * gtk/gtkhandlebox.c:
        * gtk/gtkinputdialog.c:
        * gtk/gtkitem.c:
        * gtk/gtklist.c:
        * gtk/gtkmenuitem.c:
        * gtk/gtkmenushell.c:
        * gtk/gtknotebook.c:
        * gtk/gtkstatusbar.c:
        * gtk/gtktoolbar.c:
        * gtk/gtktree.c:
        * gtk/gtktreeitem.c:
        * gtk/gtkwidget.c:
        * gtk/gtktogglebutton.c:
        * gtk/gtkwindow.c:
        made the <widget>_signals[] arrays of type guint rather than gint.
        * gtk/gtkwidget.c (gtk_widget_get_ancestor): made widget_type a GtkType.

        * gtk/gtkcombo.h:
        handler ids need to be of type guint (entry_change_id, list_change_id).

        * gtk/gtkaccelerator.c:
        changed signal_num to signal_id and typed it guint.

        * gtk/gtkmain.c: made gtk_ndebug_keys a guint.

        * gtk/gtkmenu.h:
        * gtk/gtkmenu.c:
        (gtk_menu_popup): made button a guint.
        (gtk_menu_set_active): made index a guint.

        * gtk/gtkmenuitem.h:
        * gtk/gtkmenuitem.c:
        made accelerator_signal a guint.

        * gtk/gtkoptionmenu.h:
        * gtk/gtkoptionmenu.c:
        (gtk_option_menu_set_history): made index a guint.

        * gtk/gtksignal.h:
        * gtk/gtksignal.c:
        * gtk/gtkobject.h:
        * gtk/gtkobject.c: changed a bunch of prototypes to take guints rather
        than gints. also made some conversions from guint to GtkType, left over
        from when the fundamental-types system was introduced.

        * gtk/gtkobject.h:
        * gtk/gtkobject.c: made object_data_id_index and obj_count guints.
        made *signals and nsignals guints in GtkObjectClass.
1998-03-09 15:16:28 +00:00
Tim Janik
de1262dcc1 register living objects in a hashtable.
Sun Mar  8 00:18:04 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkobject.c: register living objects in a hashtable.
1998-03-07 23:20:56 +00:00
Tim Janik
124d1e5caa made the object/class cast checks much more descriptive, based on
Sat Mar  7 20:20:53 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkobject.c:
        (gtk_object_check_cast):
        (gtk_object_check_class_cast):
        made the object/class cast checks much more descriptive, based on
        gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but
        optimized for common code path.

        * gtk/gtkpreview.c: added a few extra checks for the visual
        (gtk-draco-980305-0.patch.gz).

        * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG
          is defined, so we dump core (gtk-draco-980305-0.patch.gz).
1998-03-07 20:32:59 +00:00
Tim Janik
af18ab4305 complete api change to honour message contexts. unfortunaltely this also
Sun Mar  1 22:59:09 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkstatusbar.h:
        * gtk/gtkstatusbar.c: complete api change to honour message contexts.
        unfortunaltely this also involved argument changes on the signal
        emissions which will not be caught by the compiler. your callbacks
        should look like:
        void  message_text_popped (GtkStatusbar   *statusbar,
                                   guint           context_id,
                                   const gchar    *text,
                                   gpointer        func_data);

        * gtk/gtkwidget.c (gtk_widget_set_rc_style): eliminated bug about
        initial signal emission.
        (gtk_widget_set_parent): don't ensure style, just call
        gtk_widget_set_style_recurse.
        (gtk_widget_set_style_recurse): only change a widget's rc styles if
        if there has already been a lookup.

        * gtk/testgtk.c: adaptions for statusbar widget.
        substituted notebook pixmaps with pixmaps from fvwm, since
        we don't know where the originals came from.

        * gtk/gtkobject.c (gtk_object_data_destroy): call the destroy
        notifier with the objects data, not its internal structure.

        * gtk/gtkspinbutton.c (gtk_spin_button_button_press): small
        fix from lars.
1998-03-01 23:29:40 +00:00
Tim Janik
1b656e0dde TODO updates (major ones ;).
have the send_event field in all GdkEvents.
gtkmenu.c, gtkacceleratortable.c, gtkwindow.c: unreference accelerator_table.
gtk_object_query_args: removed seq_ids again, must have been quite tired
when i commited that change ;)
gtkoptionmenu.c: assure GTK_BIN()->child is empty when reparenting
a menu_items child.
gtkwindow.c: fixed some memory leaks.

-timj
1998-02-23 11:14:27 +00:00
Tim Janik
06d19fb68d renamed signal GtkWidget::set_parent to GtkWidget::parent_set. since it's
Sat Feb 21 15:33:20 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkwidget.h:
        * gtk/gtkwidget.c: renamed signal GtkWidget::set_parent to
        GtkWidget::parent_set. since it's purpose is pure notification,
        it should have been named this way in the first place.
1998-02-22 02:18:29 +00:00
Tim Janik
a8d6f14c2d added the sequential argument number to gtk_object_query_args.
-timj
1998-02-21 13:33:20 +00:00
Tim Janik
0ef453b82c present the argument access masks on their announcement.
Thu Feb 19 06:56:52 1998  Tim Janik  <timj@gimp.org>

        * gtkbox.c:
        * gtkbutton.c:
        * gtkcontainer.c:
        * gtkframe.c:
        * gtklabel.c:
        * gtkobject.c:
        * gtkwidget.c:
        * gtkwindow.c:
        present the argument access masks on their announcement.

        * gtk/gtkobject.h:
        * gtk/gtkobject.c:
        (gtk_object_add_arg_type): take an additional argument describing
        the access mask of the new arg. this can be of GTK_ARG_READABLE,
        GTK_ARG_WRITABLE or GTK_ARG_READWRITE (the latter is an alias for
        the two previous ones).
        (gtk_object_query_args): provide an access_mask array if desired.

        * gtk/gtkwidget.c (gtk_widget_real_realize):
        realized the assumtion that widget is a NO_WINDOW widget
        in actuall code.

        * gtkwindow.c:
        slight changes to gtk_window_configure_event that will make
        the resizing behaviour a little less odd.
        sigh, for some (buggy) reason, there are still container resizes
        triggered by manual resizing to very small window sizes.
        the cointainer resizes will cause gtk_real_window_move_resize to
        be invoked, which makes the app look like it wants to fight the users
        resizing action. ;(
1998-02-19 07:18:42 +00:00
Owen Taylor
fc7e845c8f configure.in gdk/gdk.[ch] gdk/gdkcc.c gdk/gdkglobals.c
Thu Feb 19 01:11:48 1998  Owen Taylor  <owt1@cornell.edu>

	* configure.in         gdk/gdk.[ch]         gdk/gdkcc.c
	  gdk/gdkglobals.c     gdk/gdkinputcommon.h gdk/gdkprivate.h
	  gdk/gdkvisual.c      glib/configure.in    glib/glib.h
	  glib/gutils.c        gtk/Makefile.am      gtk/gtkmain.c
	  gtk/gtkobject.[ch]   gtk/gtkdebug.h       docs/debugging.txt

	New system for controlling debugging:

	* --enable-debug=[no/yes/minimum]
	* G_DISABLE_ASSERT and G_DISABLE_CHECKS for glib
	* G_NO_CHECK_CASTS to control cast checking
	* G_ENABLE_DEBUG enables run time checking which controls:
	    Object tracing
	    Showing events
	    Miscellaneous g_print's in GDK
	  And is controlled by --gdk-debug/GDK_DEBUG, --gtk-debug/GTK_DEBUG
        * debug_level and show_events are gone from GTK

	See docs/debugging.txt for details.

	And some fixups to the configure.in's so '-g' can be
	overriden on the command line for --enable-debug
1998-02-19 06:21:27 +00:00
Owen Taylor
dd07df15c1 Add a DestroyNotify field, and gtk_object_set_data_full() to match.
Tue Feb 10 15:01:44 1998  Owen Taylor  <owt1@cornell.edu>

	* gtk/gtkobject.c gtk/gtkobject.h: Add a DestroyNotify
	field, and gtk_object_set_data_full() to match.

	* gtk/gtkobject.c (gtk_object_finalize): ObjectData structures
	were being added to a free list, then forgotten about. Just
	rely on GMemChunk instead.
1998-02-13 05:11:16 +00:00
Tim Janik
89107cb751 clean ups. -timj
clean ups.
-timj
1998-02-07 04:59:23 +00:00
Tim Janik
64ca527ecb for the emission of AFTER signals, fetch the objects signals via
Tue Feb  3 15:09:55 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtksignal.c (gtk_signal_real_emit): for the emission
          of AFTER signals, fetch the objects signals via
          gtk_signal_get_handlers again. some handlers might have
          been removed or added. not doing this would mess up the
          memchunk allocation of signal handlers (this had been
          triggered by multiple *_while_alive connections), bad, bad, bad!
          (gtk_handlers_run): do the referencing on signal handlers
          unconditionally, the invokation of AFTER handlers will now take
          care of modified lists.

        * gtk/gtksignal.h: added gtk_signal_connect_while_alive.
1998-02-03 21:36:06 +00:00
Tim Janik
eeaefdf04f fixed a bad, bad referencing bug that could caused unreferencing of
Mon Feb  2 04:15:08 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkmain.c (gtk_propagate_event): fixed a bad, bad referencing
          bug that could caused unreferencing of finalized objects.

        * gtk/testgtk.c: destroy fileselection on "OK" (this triggered the
          above mentioned bug).

        * gtk/gtkwidget.h:
        * gtk/gtkwidget.c:
        * gtk/gtkobject.h:
        * gtk/gtkobject.c:
          implemented and object reference tracer (gtk_trace_referencing) which
          is activated if GTK_TRACE_OBJECTS is defined (currently per default).
          in gdb: set the static variable `gtk_trace_object' to point to the
          object that you want to have reference traced.

        * gtk/gtkfileselection.c: few cleanups.
1998-02-02 18:44:28 +00:00
Tim Janik
c3154703d0 watch the next ChangeLog update...
-timj
1998-02-02 14:11:24 +00:00
Tim Janik
eef38289b2 GTK_RESIZE_NEEDED is a private flag now.
Mon Feb  2 04:15:08 1998  Tim Janik  <timj@gimp.org>

        * gtk/gtkcontainer.h:
        * gtk/gtkcontainer.c: GTK_RESIZE_NEEDED is a private flag now.
          (gtk_container_register_toplevel): new function.
          (gtk_container_unregister_toplevel): new function.

        * gtk/gtkmain.c: GTK_LEAVE_PENDING is a private flag now.

        * gtk/gtkmenu.c: call gtk_container_register_toplevel in
          gtk_menu_class_init instead of this dirty gtk_widget_set_parent(,NULL)
          hack. new default handler gtk_menu_destroy for calling
          gtk_container_unregister_toplevel. removed GTK_ANCHORED, GTK_UNMAPPED.

        * gtk/gtkobject.h: macro cleanups, added GTK_DESTROYED flag.

        * gtk/gtkobject.c: only emit DESTROY signal if !GTK_OBJECT_DESTROYED
          (object).

        * gtk/gtkprivate.h: new file that will not be automatically included.
          it holds the private flags for GtkWidget along with it's SET/UNSET
          and examination macros.

        * gtk/gtkwidget.c: private flags: GTK_RESIZE_NEEDED, GTK_REDRAW_PENDING,
          GTK_RESIZE_PENDING, GTK_IN_REPARENT, GTK_USER_STYLE. GTK_ANCHORED is
          replaced by GTK_TOPLEVEL. added missing UNSET for GTK_IN_REPARENT.
          removed the gtk_widget_set_parent(, NULL) hack for toplevels.
          upon destroy free memory for widgets with GTK_WIDGET_HAS_SHAPE_MASK.

        * gtk/gtkwidget.h: split up the widget flags into a public and a private
          portion. added an extra field private_flags to GtkWidget without making
          it bigger by using an alignment gap of 16 bit. macro cleanups.

        * gtk/gtkwindow.c: removed GTK_ANCHORED. new function gtk_window_destroy
          for calling gtk_container_unregister_toplevel. removed the
          gtk_widget_set_parent(,NULL), call gtk_container_register_toplevel
          instead. remove GTK_UNMAPPED. GTK_RESIZE_NEEDED is private now.

        * gtk/gtksignal.c (gtk_signal_disconnect): removed a bug on
          removal that cut off the handler list -> living_objects == 0
          with testgtk. made some warnings more descriptive.
          new function gtk_signal_connect_object_while_alive, which
          will automatically destroy the connection once one of the objects
          is destroyed. didn't include this before removal of the above
          mentioned bug.

* reflected refcounting revolution in ChangeLog
1998-02-02 04:54:25 +00:00
Manish Singh
01200282da Added and autoconfigured in a new utility function g_strcasecmp
GtkCombo uses g_strcasecmp now
Quelled a warning about atexit undeclared in gtkobject

-Yosh
1998-01-31 08:15:57 +00:00
Tim Janik
4af33fa24d hm, initital refcount revolution commit ;)
still some gnits left, but keep working on it ;)
-timj
1998-01-30 23:47:09 +00:00
Tim Janik
db6a8d4a8a new user signal, and possibility to query signal information.
-timj
1998-01-29 20:44:14 +00:00
Tim Janik
b5b1534b10 removed a FIXME that i had forgotten earlier. 1998-01-29 08:44:55 +00:00
Tim Janik
33f3f4a2ae forgot a printf() line ;)
-timj
1998-01-24 20:03:58 +00:00
Tim Janik
6f7faf9df2 gtk_object_query_args() now returns the args in the corret order.
-timj
1998-01-24 20:02:19 +00:00
Tim Janik
36b2a2ebcd new element n_args in GtkObjectClass.
-timj
1998-01-23 10:38:29 +00:00
Tim Janik
fb48f5a356 some gtk_*_set_arg fixes
-timj
1998-01-21 23:03:11 +00:00
Owen Taylor
4628759d3b renamed g_string_equal => g_str_equal renamed g_string_hash => g_str_hash
Sat Jan 17 23:52:40 1998  Owen Taylor  <owt1@cornell.edu>

	* gstring.{c,h} gscanner.c:
	   renamed g_string_equal => g_str_equal
	   renamed g_string_hash => g_str_hash
	  And const corrected. Old functions left in for now.
1998-01-18 15:12:01 +00:00
Tim Janik
1e764e1b41 gtk_*_get_arg() and gtk_*_set_arg() implementations. new arg
Sun Jan 18 03:57:52 1998  Tim Janik  <timj@psynet.net>

        * gtk/gtkframe.c: gtk_*_get_arg() and gtk_*_set_arg() implementations.
        * gtk/gtkobject.c: new arg `GtkObject::object_signal' similar to
          `GtkObject::signal'. check for class type in gtk_object_{setv|getv}.

        * gtk/gtkobject.c:
        * gtk/gtksignal.c:
        * gtk/gtktypeutils.h:
        * gtk/gtktypeutils.c: added GTK_TYPE_DOUBLE.

        * gtk/gtkwidget.c: new args `has_focus' and `has_default'.
        * gtk/gtkwindow.c: new arg `window_position'.
1998-01-18 11:09:04 +00:00
Tim Janik
8d721e5b75 more *_get_arg/*_set_arg implementations
-timj
1998-01-17 07:52:38 +00:00